---
title: Currencies
description: Price a checkout in a currency other than naira, understand minor units per currency, and know what you get paid in.
---

# 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:

| Currency | Minor unit | `amount: 150000` means |
| --- | --- | --- |
| NGN | kobo (2 dp) | ₦1,500.00 |
| KES | cents (2 dp) | KSh 1,500.00 |
| GHS | pesewas (2 dp) | GH₵ 1,500.00 |
| XOF | none (0 dp) | CFA 150,000 |
| XAF | none (0 dp) | FCFA 150,000 |
| UGX | none (0 dp) | USh 150,000 |
| RWF | none (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

| Currency | How customers pay |
| --- | --- |
| NGN | Bank transfer, ZevPay ID, card, PalmPay |
| KES, GHS, UGX, TZS, RWF, ZMW, MWK, MZN, CDF, SLE, XOF, XAF | [Mobile money](/payment-methods/mobile-money) |
| USD | [Crypto](/payment-methods/crypto), 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](/payment-methods/mobile-money#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.
