Tag each payout with your own reference
When you create a payout through the API, sendreference: your own ID for it, such as an invoice or settlement number. It holds letters, digits, ., - and _, and must be unique on your account, so the same reference can never pay out twice.
payout.paid and payout.failed events. To find a payout by it, for example when you never stored the payout ID, list payouts with that reference. The result holds at most one payout:
auto_, so you can tell them from the ones you created. The schedule’s last_withdrawal_id names the payout its last run created.
Check what left your balance
Reconcile your books againsttotal_debited, not amount:
On a same-currency payout,
total_debited is amount plus fee. On a converted payout, amount is in the destination’s currency, so the two never add up: a USD balance paying an NGN bank debits dollars and delivers naira. Book the dollars that left as total_debited, and the naira that arrived as amount.
The dashboard shows the same split before you confirm: To receive, the fee and Total debited.
Know when it is final
A payout is final when itsstatus is completed or failed, and completed_at records when it got there. Until then it is pending or processing, and you keep tracking it.
completed: book it as paid. Thepayout.paidevent tells you the moment it happens.failed: readfailure_reason, and expect the funds back in your balance. Reconcile the returned money before you decide whether to pay out again.
What the recipient’s bank shows
narration is the short note sent with the payout, which the receiving bank may show on the statement. Keep it under 15 characters, with the part that matters first, such as an invoice number: you can send up to 100, but many banks show only the first few characters and some show their own label instead. Without one, a payout to a Nigerian bank account shows Bachs Payout.
Trace a payout with the bank
When a payout to a Nigerian bank account completes, itssession_id holds the NIP session ID: the number the receiving bank uses to find the transfer. If the recipient says the money hasn’t arrived, give them that ID to take to their bank. The payout.paid event carries the same value, so you can store it as the payout completes.
Other payout types have no session ID, and session_id stays null. If you can’t establish what happened to one, contact support with the payout ID and your reference.
Next steps
- Understand your balance: when collected money becomes available to pay out.
- How payouts work: what to do when a payout request times out.
- The payout object: every field a payout returns.

