Wallets · for businesses

Hold five currencies.
One ledger.

A wallet for each currency you trade in. Available and on-hold balances shown apart. Every figure is the sum of ledger entries you can download.

WalletsBusiness dashboard
CurrencyAvailableOn holdIn flightTotal
NGN₦1,892,550.00₦0.00₦50,050.00₦1,892,550.00
GHS₵12,340.00₵1,034.40₵0.00₵13,374.40
KESKSh 96,200.00KSh 0.00KSh 4,180.00KSh 96,200.00

Illustrative balances. Total = available + on hold; in flight is already out of available.

Response
1GET /v1/wallets
2200 OK
3
4{
5 "data": [{
6 "currency": "NGN",
7 "balance": "189255000",
8 "lienBalance": "0",
9 "availableBalance": "189255000",
10 "inflightBalance": "5005000",
11 "status": "active",
12 "hasVirtualAccount": true,
13 "virtualAccountNumber": "9012…",
14 "virtualAccountBank": "Wema Bank"
15 }, …]
16}

Amounts in minor units, as strings. Illustrative values.

What a wallet promises

Three mechanics make a balance you can trust. All three are in the ledger.

Available

Two numbers, not one.

Available is what you can spend now. Money a hold or an in-flight payout has claimed is shown apart — lienBalance and inflightBalance in the same response. A balance never hides money in motion.

Books

Every balance is the sum of its entries.

A wallet is a ledger account. Each movement posts as a debit and a matching credit, or the ledger refuses the whole entry. Nobody edits a balance field.

Export

Download the entries, not a screenshot.

Request a CSV statement for any date range — all activity, or just payouts, payins or conversions. Reconcile against rows, in minor units, with the reference on each line.

How money enters and leaves a wallet

Four doors. Each one posts a balanced entry on the way through.

  • Collections inA customer pays by bank transfer, card or mobile money (POST /v1/payins). When the channel confirms, the net amount credits the wallet in that currency. NGN wallets also get a permanent account number; transfers to it credit the wallet directly.Live
  • Payouts outPOST /v1/payouts moves amount plus fee out of available balance the moment you send. It settles when the rail confirms, and the hold clears with its own entry.Live
  • Conversions betweenPOST /v1/conversions debits one wallet and credits another at the rate you quoted. Two balanced legs, one in each currency, and the FX margin booked on its own line.Live
  • Refunds backRefund a payin from the dashboard or POST /v1/refunds. The money leaves your wallet as a payout to the person who paid you, tracked to its own terminal status.Live

As your finance team sees it

Every entry, its reference, and the running balance after it — the same rows your CSV holds.

Statement · NGNBusiness dashboard
DateEntryDebitCreditBalance
18 Sep 2026Payin · INV-2291 · bank transfer₦250,000.00₦1,892,550.00
18 Sep 2026Payout · PAYROLL-SEP-0142 · sent₦50,050.00₦1,642,550.00
17 Sep 2026Conversion · cnv_8xk2 · NGN→GHS₦120,000.00₦1,692,600.00
17 Sep 2026Refund · REFUND-3391 · to payer₦18,510.00₦1,812,600.00

Illustrative rows.

The entries behind it

What the ledger records when you send ₦50,000 with a ₦50 fee on top, and again when the rail confirms.

PAYROLL-SEP-0142 · on sendLedger entry
AccountDebitCredit
merchant_wallet₦50,050.00
channel_pending_asset₦50,000.00
merchant_wallet_lien₦50.00

Debits equal credits — or the ledger refuses the entry.

Available drops here. The recipient's ₦50,000 is on its way; the ₦50 fee is held, not yet earned.

PAYROLL-SEP-0142 · on settlementLedger entry
AccountDebitCredit
channel_pending_asset₦50,000.00
channel_settled_asset₦50,000.00
merchant_wallet_lien₦50.00
revenue_fees₦50.00

Debits equal credits — or the ledger refuses the entry.

The fee becomes ours only once the money lands. Account names are the real ledger families.

Also on the road

The rest of what ships with wallets today.

  • StatementsPOST /v1/statements with a type and a fromDate–toDate range. We build the CSV in the background; GET /v1/statements/{id}/download fetches it. Exports of payins, payouts and conversions filter by status and search text too.Live
  • AlertsAn in-app and push notification the moment a payout reaches its final status. A low-balance threshold you set per wallet is on our side of the desk today, not yet yours — tell us if you need it first.Partly live
  • Multi-currencyOne wallet per currency. POST /v1/wallets with { "currency": "GHS" } creates it, or returns the one you already have. Pay out from any wallet; convert between them when you choose.Live
  • APIGET /v1/wallets lists every wallet with balance, lienBalance, availableBalance and inflightBalance as minor-unit strings. GET /v1/wallets/{currency} returns one. Same key as the rest of the API.Live

Live wallet currencies: NGN, GHS, KES · ZAR and USD coming soon · as of 25 Sep 2026. Full coverage →

Sending as one person? The Payve app gives you the same wallets. Payve for you →

Your first wallet is one call away.

No setup fee. Sandbox keys on signup. A balanced entry for every kobo.