Use this endpoint to disburse funds to a beneficiary. The payout consumes an existing quote, validates the beneficiary, and queues the transfer for settlement.The code examples below mirror the corridors covered in our payout guides. Select the appropriate recipient payload to match your payout use case, or browse the dedicated payout examples for a full walkthrough.
Channel to deliver funds (BANK_TRANSFER, MOBILE_MONEY, etc.).
✅ Yes
BANK_TRANSFER
recipient.country
String
Recipient country (ISO 3166-1 alpha-2).
✅ Yes
NG
recipient.stored
Boolean
Whether the recipient is saved in your address book.
✅ Yes
false
recipient.account.bankName
String
Financial institution name.
✅ Yes
Guaranty Trust Bank
recipient.account.sortCode
String
Routing or sort code where applicable.
✅ Yes
058
recipient.account.accountNumber
String
Destination account number.
✅ Yes
0712617XXX
quoteId
String
Quote identifier returned from the Quote API.
✅ Yes
453eeu-567j-6tr3d-xxxxxxxxxxxxx
reason
String
High-level purpose of the transfer.
✅ Yes
Bills
remark
String
Additional comments or reference.
Optional
September utilities
Depending on the corridor and channel, additional fields (such as mobile wallet metadata or address information) may be required. Refer to the route-specific examples in payout docs examples.
Generate idempotency references to safely retry without duplicating transfers.
Validate recipients locally before calling the API to reduce error handling.
Listen to payout webhooks and reconcile with the Get Transaction API for final settlement details.
Testing Failed Payouts: In the sandbox environment, you can simulate a failed payout by setting "remark": "fail" in your request. This will trigger a payout.failed webhook, allowing you to test your error handling logic.