Mobile money
The dominant way money moves in Ghana, Kenya, Uganda, and Rwanda — our core mobile-money markets — with further corridors (Tanzania, Zambia) listed in capabilities where live. A wallet tied to a phone number, run by a telecom operator (MTN, M-Pesa, Airtel, Telecel…).- Paying out: near-instant. You send to a phone number; the wallet is credited in seconds. This is the rail behind most
gh_*,ke_*,ug_*,tz_*,rw_*,zm_*method codes. - Collecting: the payer must approve. A collection sends a prompt (STK push / USSD) to their phone; they enter their PIN; the money lands. Sessions time out in minutes if they don’t. This is why collections are
pendingfirst and why “the customer never approved” is a normal failure, not an error. - Validation: most operators resolve the account holder’s name from the number — use it before you pay.
- Nigeria is the exception: mobile money exists (OPay, MTN MoMo, SmartCash) but bank transfer dominates.
Bank transfer via virtual accounts
Bank rails are batch-oriented and slow to initiate from your side — so Chipper turns collection around: you don’t pull from the payer’s bank, the payer pushes to you.- A virtual account is a real bank account number (at a partner bank) that belongs to your organization and, optionally, to one customer. Money sent to it credits your balance and fires
account.credited/ collection webhooks. - The hosted checkout provisions one per payment session from a pool, so the exact amount can be matched to the exact payer.
- Detection is automatic via the bank’s notification — typically minutes, sometimes longer. There’s no “I’ve sent it” button because the bank tells us.
- Paying out to a bank account is the reverse: near-instant in Nigeria (NIP), minutes elsewhere. Method codes look like
ng_gtbank,gh_gcb.
Stablecoins
USDC and USDT on Ethereum, Polygon, Solana, Base, Tron, and BNB Chain — the rail for cross-border settlement and for customers who hold crypto.- Collecting: you get a deposit address per asset + chain (plus a memo/tag on Stellar and Ripple). The payer sends from any wallet; we watch the chain, wait for confirmations, then credit your balance. Chipper quotes the crypto amount from a locked FX rate into your fiat balance.
- Paying out: send to any address on a supported chain; the destination amount is in the asset, and cross-currency is priced at the live rate.
- Send the exact amount, on the exact chain. Tokens sent as a different asset or on a different network can be unrecoverable — which is why the hosted checkout says so in red.
- Confirmation times vary by chain — seconds on Solana and Base, a few minutes on Ethereum.
Choosing a rail
The catalog of what’s live per country, with each method’s fields, limits, and expected settlement time, is
GET /v1/capabilities — and it differs between sandbox and production, so read it at runtime rather than hardcoding it.