The problem it solves
Money needs somewhere to be, and — more importantly — needs to be attributable. An account answers three questions at once: whose is this, what asset is it, and can it move right now. The second question matters more than it looks. An account holds exactly one asset, so there is no such thing as a multi-currency balance to reconcile. Ten currencies is ten accounts, each with its own balance, its own limits, and its own funding destination.Your money versus your customers’
This is the distinction the whole service is built around, and it is decided by a single field at creation.
The asymmetry is deliberate. Your own approval for a currency does not extend to your customers: a customer wallet in USD is refused with
403 international_customer_wallet_not_supported even when your USD accounts work fine. And because customers are always tier 1, a customer wallet is capped at ₦50,000 and can never hold crypto.
If your product needs more headroom per end user than that, the shape that works today is to hold the balance on your own account and track your users’ shares in your own ledger.
How many accounts
One per asset, per purpose. Beyond that, the number is a bookkeeping decision rather than a technical one — there is no per-account fee mechanic in this API and no limit on how many you may open. Two patterns are common:- One operational account per currency, with customer balances tracked in your own system. Simple, and it keeps you inside your own tier limits.
- One wallet per customer, when your users need their own payable account number. This is what customer wallets are for, and it is NGN-only.
savings type exists for the first pattern: it behaves exactly like operational, so it is a label that separates set-aside money from working money without changing how either behaves.
What it leaves to you
Closing accounts. There is no close endpoint on this API. It is a dashboard action. Naming destinations. You cannot choose your own account number; the provider allocates it. Interest, sweeps, and holds. None of these exist. An account is a balance and nothing else;savings earns nothing.
Knowing when funds arrive. Nothing pushes you a balance. Subscribe to fiat.deposit.* events and reconcile against transactions.
The shape of the API
Six operations, and no way to change an account after you open it.
There is no
PATCH. name and metadata are fixed at creation, so choose them deliberately.