Blog
Guides 9 min read

Multi-Currency Payments: A Complete Guide

Supporting multiple currencies is essential for businesses operating across Africa and beyond. This guide covers everything from accepting payments in NGN, USD, GBP, and more to handling FX rates and multi-currency settlement.

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:

  1. Keep funds in the original currency and settle to a bank account denominated in that currency
  2. Convert to your primary currency using Crezaro's FX service, then settle
  3. 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 * 100 might give you 4998.999999 in 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, use dinero.js. In Python, use the decimal module. 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.

S

Written by

Samuel Olaoye

Founder & CEO at Crezaro

Share X LinkedIn

Building the payment infrastructure Africa deserves. Passionate about fintech, developer experience, and financial inclusion across the continent.

Topics API Payments Developers
Newsletter

The Crezaro
Newsletter

Enjoyed this post? Get more like it every Tuesday — payments, engineering, and infrastructure for builders.

A
B
C
+2,000 readers
Builders, operators & engineers
  • Signal, not noise
    Curated insights worth your time
  • Engineering depth
    Decisions explained, not just announced
  • Every Tuesday
    Consistent — unsubscribe in one click

Every Tuesday · No spam · Unsubscribe anytime