Why multi-currency matters
If your business operates in more than one country, or serves customers who hold different currencies, multi-currency support is not a nice-to-have. It is a requirement. A Nigerian SaaS company selling to clients in Kenya and South Africa needs to price in KES and ZAR. An e-commerce marketplace shipping across West Africa needs to accept NGN, GHS, and XOF.
Crezaro supports eight currencies at launch: NGN, USD, GBP, CAD, EUR, KES, GHS, and ZAR. Each currency has its own wallet in your account, and you can accept payments and settle in any of them.
How currency handling works
When a customer pays in a specific currency, the funds are credited to your wallet in that currency. You can then choose to:
- Keep funds in the original currency and settle to a bank account denominated in that currency
- Convert to your primary currency using Crezaro's FX service, then settle
- Hold balances in multiple currencies and convert on demand when rates are favorable
The choice depends on your business model. If you have expenses in the collection currency (such as paying suppliers in GHS), keeping the funds in GHS avoids unnecessary conversion fees. If you need to consolidate revenue into NGN for reporting and operations, converting on collection makes more sense.
Accepting payments in different currencies
The API works the same regardless of currency. Specify the currency in your payment initialization request:
curl -X POST https://api.crezaro.com/v1/payments/initialize \
-H "Authorization: Bearer sk_live_your_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000,
"currency": "USD",
"email": "customer@example.com",
"reference": "inv_20260128_001"
}'
For USD, the amount is in cents, so 5000 equals $50.00. For NGN, 500000 equals 5,000.00 NGN. For currencies without subunits (like JPY, if we add it), the amount is in the major unit.
The checkout page automatically adjusts to show the correct currency symbol, formatting, and available payment methods for that currency.
FX rates and conversion
Crezaro provides competitive FX rates sourced from multiple liquidity providers. You can query the current rate before initiating a conversion:
curl -X GET "https://api.crezaro.com/v1/fx/rate?from=USD&to=NGN&amount=5000" \
-H "Authorization: Bearer sk_live_your_key"
// Response:
{
"from": "USD",
"to": "NGN",
"rate": 1542.50,
"amount_from": 5000,
"amount_to": 7712500,
"valid_until": "2026-01-28T09:15:00Z"
}
Rates are guaranteed for 60 seconds from the valid_until timestamp. If you initiate a conversion within that window, you get the quoted rate. After the window expires, a new rate is generated.
Settlement in multiple currencies
You can configure settlement bank accounts for each currency you operate in. In your Crezaro dashboard, navigate to Finance > Bank Accounts and add accounts for each currency. Settlement happens automatically based on your configured schedule:
- NGN: T+1 settlement (next business day)
- USD: T+2 settlement
- GBP: T+2 settlement
- KES: T+1 settlement via M-Pesa or bank transfer
- GHS: T+1 settlement
- ZAR: T+2 settlement
Handling currency in your application
A few best practices for handling multiple currencies in your code:
- Store amounts as integers. Always store monetary amounts in the smallest unit (cents, kobo, etc.) as integers. Never use floating-point numbers for money.
49.99 * 100might give you4998.999999in many languages. - Store the currency alongside the amount. An amount without a currency is meaningless. Always store and transmit them together.
- Use established libraries. In PHP, use
brick/money. In JavaScript, usedinero.js. In Python, use thedecimalmodule. Do not roll your own currency arithmetic. - Format for display only. Currency formatting (symbols, thousands separators, decimal places) should happen only at the presentation layer, never in business logic.
Common multi-currency scenarios
Scenario 1: SaaS with global pricing. You price in USD but have customers in Nigeria. Accept NGN payments, convert to USD at collection time, and reconcile against your USD revenue targets.
Scenario 2: Marketplace with regional sellers. Buyers pay in their local currency. Funds are split between sellers (who receive their local currency) and your platform (which receives a commission in your preferred currency).
Scenario 3: Cross-border B2B invoicing. You invoice a client in GBP. They pay in GBP. You settle in GBP to your UK bank account. No conversion needed, no FX risk.
For detailed API documentation on multi-currency operations, visit our developer docs.