Bank Transfers
Use the Payouts API to send funds to recipient bank accounts. Set paymentMethodId to "banktransfer" and provide a recipient object with type: "bank_account".
Request Shape
Set paymentMethodId to "banktransfer" and provide recipient with the following structure:
Top-level required fields for every payout:
- Required:
merchantId,merchantReference,destinationValue(withminorAmountandcurrency),paymentMethodId("banktransfer"),paymentLocation,recipient,sender(withfullName,identity,identityNumber) - Optional:
attributes
Example Request
Note: minorAmount: 1000000 = 10,000.00 NGN (NGN has 2 decimal places).
Required vs Optional Summary
- Required for
recipient(bank_account):type("bank_account"),accountNumber,bankCode,accountHolderName,country - Optional for
recipient:phoneNumber - Required at request level:
merchantId,merchantReference,destinationValue,paymentMethodId,paymentLocation,recipient,sender(withfullName,identity,identityNumber) - Optional at request level:
attributes
The API reference is the source of truth for the schema.
Format and Validation Notes
The authoritative list of banks and their codes for a country comes from GET /v1/payout/banks?country={ISO3} — it returns {banks: [{code, name}]} straight from the processors, so it never drifts. Use it to populate bank pickers.
- Nigeria (NGN): Account numbers are typically 10 digits.
bankCodeis the bank identifier code — fetch the live list viaGET /v1/payout/banks?country=NGA, or see Nigeria Bank Codes for a reference list. - South Africa (ZAR): Use the bank’s 6-digit universal (any-branch) code (e.g.
632005for Absa). See South Africa for the full list of validbankCodevalues. Account numbers are 9–13 digits. - Egypt (EGP): Account number format as required by the local rail; IBAN is supported and required for some banks (e.g. USD transfers).
bankCodeis required. Valid bank codes includeBDC,CIB,POST; see Egypt for details. Egypt typically needs additional sender fields—see Egypt and the API reference. - Other currencies: Use the account number and bank code formats accepted by the local clearing system. The
bankCodefield is required for all bank transfers.
Amount Format: Amounts are specified in minor units (integer), per the currency’s ISO 4217 exponent — for example, minorAmount: 1000000 = 10,000.00 NGN, while zero-decimal currencies like XOF and XAF need no conversion. See Single Payouts for details.
Where Bank Transfers Are Supported
Not every currency supports bank payouts. See Supported Destinations for a table of currencies, countries, and supported rails (bank vs mobile wallet).
Next Steps
- Single Payouts — Create one-off bank payouts
- Bulk Payouts — Send multiple payouts in one request
- Supported Destinations — Currencies and rails by destination
- Sandbox Testing — Test scenarios using account-number endings