Skip to content

Currencies ​

ZevPay checkouts are priced in naira by default. You can price in other currencies where we have a way to collect them.

Pricing in another currency ​

Pass currency when you create the session or invoice:

json
{
  "amount": 150000,
  "currency": "KES",
  "customer": { "email": "customer@example.com" }
}

The response tells you what can actually be used to pay it, in enabled_payment_methods. A currency with no live rail returns a clear error rather than minting a checkout nobody can pay.

Amounts are always in minor units ​

amount is an integer in the currency's smallest unit. This is the part that most often goes wrong, because the number of decimal places is not the same everywhere:

CurrencyMinor unitamount: 150000 means
NGNkobo (2 dp)₦1,500.00
KEScents (2 dp)KSh 1,500.00
GHSpesewas (2 dp)GH₵ 1,500.00
XOFnone (0 dp)CFA 150,000
XAFnone (0 dp)FCFA 150,000
UGXnone (0 dp)USh 150,000
RWFnone (0 dp)FRw 150,000

The West and Central African CFA francs, the Ugandan shilling and the Rwandan franc have no minor unit at all. For those, amount is the whole number of francs or shillings. Sending 150000 for XOF means 150,000 francs, not 1,500.

Every amount we send you follows the same rule, including webhook payloads and fees, so a single conversion in your code works in both directions.

What you can collect, by currency ​

CurrencyHow customers pay
NGNBank transfer, ZevPay ID, card, PalmPay
KES, GHS, UGX, TZS, RWF, ZMW, MWK, MZN, CDF, SLE, XOF, XAFMobile money
USDCrypto, and mobile money in some markets

Markets open one at a time. A currency in this table is not necessarily live for your account yet; the initialize response is the authority, and support can tell you what is open.

What you get paid in ​

You are paid in the currency you collected.

  • Naira goes to your bank account or ZevPay balance, as it always has.
  • Mobile money currencies go to a mobile money number you nominate per currency, under Settlement → Mobile money in your dashboard. See getting paid.

We do not convert your money between currencies without being asked. A shilling collection stays shillings all the way to your payout, so no exchange rate is applied behind your back.

Fees ​

Fees are configured per currency, not converted from a naira rate. Your statement and your charge.success webhook both report the fee in the currency of the payment.

Checking what is live ​

The initialize response is always the source of truth:

json
{
  "currency": "KES",
  "enabled_payment_methods": ["mobile_money"]
}

If a currency is not open for your account, the call fails with a clear message rather than returning a checkout that cannot be paid.

ZevPay Checkout Developer Documentation