Skip to main content
RemitFlex cNGN APIs move Naira and cNGN for a customer: permanent bank deposit account, one-time payins, convert between CNGN / USDC / USDT, withdraw crypto, or pay out to a Nigerian bank. These are not the same as:
Use local fiat for one-off bank payouts/deposits from your treasury. Use cNGN when the customer needs a linked wallet, permanent VA, or on-wallet CNGN/USDC/USDT converts.
Prerequisite: Enable cNGN for the customer with BVN onboard (dashboard Customers → cNGN, or API below). That creates the Smart Wallet and deposit account.

Enable cNGN (onboard)

Poll until linked:
When onboarding completes, the customer is linked automatically and strails.userId / virtual account appear. You can still attach an existing wallet user with POST /v1/customers/{id}/strails/link. Required scopes: transfers:read, transfers:write

Permanent vs temporary virtual accounts

Permanent credits create local cngn_deposit rows (email + cngn.deposit.* webhooks). List with GET /v1/cngn/deposits.

Temporary payin (NGN → Smart Wallet)

If auto-sweep stalls, funds can remain on the temporary wallet. Check GET /v1/cngn/payins/{id}sweep, then:
Until a bank accountNumber exists, status stays requested. RemitFlex sets va_created only when an account number is present. Payins appear in Transactions as cngn_payin.

Convert (cNGN ↔ USDC/USDT)

List: GET /v1/cngn/converts. Get: GET /v1/cngn/converts/{id}.

Withdrawal

Send tokens from the customer’s Smart Wallet to an external address:

Banks & account resolution

List banks and verify account names before payout:
Returns 422 when the account cannot be verified or the bank is not supported. bankCode on payouts must come from GET /v1/cngn/banks.

Payout (cNGN → NGN bank)

amount is in Naira. Minimum payout is ₦151.

Status, email, and webhooks

Money events are stored locally. On create/update RemitFlex:
  • Emails the linked customer (and org owner when applicable)
  • Emits merchant webhooks: cngn.deposit.*, cngn.payin.*, cngn.convert.*, cngn.withdrawal.*, cngn.payout.*
Open payins / converts / payouts / withdrawals also refresh on read (GET .../:id) and via background sync. All of the above appear in Transactions (cngn_deposit, cngn_payin, cngn_convert, cngn_withdrawal, cngn_payout).

Balances vs transactions

Do not treat provider ledger passthrough as the merchant ledger — RemitFlex transactions are local.