Multi-currency
Price in one currency, settle in whatever the payer used.
You can price a payment in any active currency — XAF, 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.
