TchokoPay
Guides

Multi-currency

Price in one currency, settle in whatever the payer used.

You can price a payment in any active currencyXAF, USD, NGN, BTC, and more — completely independent of your own account's settlement currency.

curl -X POST https://connect.tchokopay.com/v1/payments \
  -H "Authorization: Bearer tchoko_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 50,
    "currency": "USD",
    "description": "Premium plan — 1 month"
  }'

If your account settles in XAF, the response looks like this before anyone has paid:

{
  "reference": "REQ-1785296850838-A5303B",
  "status": "PENDING",
  "amount": 28818,
  "currency": "XAF",
  "requestedAmount": 50,
  "requestedCurrency": "USD",
  "checkoutUrl": "https://tchokopay.com/pay/REQ-1785296850838-A5303B"
}

requestedAmount/requestedCurrency stay 50/USD forever — that's the price you asked for. amount/currency show the clean XAF equivalent as an estimate.

After payment, the settlement currency can change

Say your customer pays with Bitcoin instead of XAF. Once payment completes, GET /v1/payments/:reference returns:

{
  "reference": "REQ-1785296850838-A5303B",
  "status": "SUCCESS",
  "amount": 0.00078347,
  "currency": "BTC",
  "requestedAmount": 50,
  "requestedCurrency": "USD"
}

You settle net of fees in whatever currency your customer actually paid with — your wallet becomes genuinely multi-currency, with one real balance per currency that's ever come in.

requestedAmount/requestedCurrency never change once a payment is created. amount/currency always reflect the live/settled truth — the estimate before payment, the real settled amount after.

Keeping it simple

If you'd rather always settle in one predictable currency, just price every payment in your own settlement currency. Then amount === requestedAmount and currency === requestedCurrency, always — multi-currency pricing is opt-in, not something you have to think about if you don't need it.

On this page