Countries And Currencies

Where you can collect, how you can be settled, and how amounts are interpreted.

Kyshi separates the currency your customer pays in from the currency you are paid in. Collection currencies are local; settlement currencies are what lands in your account.

Which currencies are enabled for your business is part of your configuration. The lists below are what the platform supports, not what your account has turned on.

Collection Currencies

The currency the customer pays in.

CurrencyCode
Nigerian NairaNGN
Kenyan ShillingKES
Ghanaian CediGHS
South African RandZAR
West African CFA FrancXOF
US DollarUSD

Settlement Currencies

The currency Kyshi settles to you in.

CurrencyCode
US DollarUSD
Pound SterlingGBP
EuroEUR
Canadian DollarCAD
Chinese YuanCNY
USD CoinUSDC
TetherUSDT

USDC and USDT settle on-chain rather than through a bank. If you are settling to stablecoin, confirm the network and wallet details with Kyshi during onboarding — those are account configuration, not API parameters.

How Amounts Are Interpreted

Every amount you send is read against a currency basis. Get this wrong and you will charge the wrong amount, so it is worth being deliberate.

amountCurrencyamount meansUse when
settlementAn amount in your settlement currency. Kyshi converts to the customer's local currency at collection time.You price once, globally. A $10 product stays $10 everywhere.
localAn amount in localCurrency, exactly. No conversion.You already know the precise local price the customer must pay.
{
  "email": "[email protected]",
  "amount": 10,
  "amountCurrency": "settlement",
  "localCurrency": "NGN"
}

The customer is charged the NGN equivalent of 10 units of your settlement currency, at the rate applied when the transaction is created.

{
  "email": "[email protected]",
  "amount": 15000,
  "amountCurrency": "local",
  "localCurrency": "NGN"
}

The customer is charged exactly 15000 NGN.

Amounts Are In Major Units

Send 1000 to mean one thousand Naira, not one hundred thousand kobo. Kyshi does not use minor units on the public API.

This differs from several other payment APIs, so it is a common source of amounts that are wrong by a factor of 100. Test one real amount in test mode before going live.

Rounding On Virtual Accounts

When a settlement-priced amount is converted to a local amount for a virtual account, the result rarely lands on a round number. A customer typing an awkward figure into their banking app is a source of underpayment.

Virtual accounts therefore apply a rounding strategy — either rounding up, or to the nearest unit — so the amount you display is one the customer can plausibly transfer. The strategy is part of your virtual account configuration.

Rounding does not eliminate underpayment or overpayment. The customer still controls what they actually send, so handle PARTIAL and OVERPAID regardless. See Statuses And Lifecycles.

Which Currencies Apply To A Given Call

Collection currency is set per transaction, through localCurrency. Settlement currency is set on your business configuration, not per transaction — you do not choose it per call.

A currency that is not enabled for your business returns 422 Unprocessable Entity with a message naming the unsupported currency. That is a configuration issue, not a request issue; retrying will not help.

Next


Did this page help you?