Skip to main content
A bank transfer is a three-step flow. Run all three against the sandbox base URL:
  1. Fetch the bank list β€” GET https://sandbox.nomba.com/v1/transfers/banks to get the bankCode for the recipient’s bank
  2. Look up the account name β€” POST https://sandbox.nomba.com/v1/transfers/bank/lookup with the account number and bankCode
  3. Send the transfer β€” POST https://sandbox.nomba.com/v2/transfers/bank (or /v2/transfers/bank/{subAccountId} to debit a sub-account)

Step 1 β€” Fetch the bank list

The list is long and stable, so cache it instead of calling this endpoint before every transfer. See Fetch bank codes for the production endpoint.

Step 2 β€” Look up the account name

Step 3 β€” Send the transfer

Pass the bankCode from step 1 and the accountName from step 2. Transfers succeed by default β€” use the account numbers in the next section to trigger other outcomes.

Transfer Test Scenarios

Sandbox transfers succeed by default. To test how your integration handles other outcomes, send one of the account numbers below. The response and webhook behaviour match what you would get in production.
Before testing the pending scenarios, set a test webhook URL on the dashboard (Developer β†’ Webhook Setup) and subscribe to the payout events. See Webhooks.

Successful transfer

Any account number that is not in the table above. The full response is the one shown in Step 3 β€” code: 00, data.status: SUCCESS β€” and a payout_success webhook is sent immediately.
Request

Pending transfer

About 5 seconds later, a payout_success webhook is sent. With 0000000202, a payout_refund webhook is sent instead.

Insufficient balance

No transaction is created and no webhook is sent.
Response (400)

Duplicate reference

This is the response you get when a merchantTxRef has already been used. No transaction is created and no webhook is sent.
Response (400)
In sandbox, only the value 0000000409 triggers this response. Sending the same merchantTxRef twice does not. In production it does.