Skip to main content
Reconciling a payout means answering three questions: which payout is this in my records, how much left my balance, and did it arrive. Bachs gives you a field for each, so you never have to match payouts by amount and date.

Tag each payout with your own reference

When you create a payout through the API, send reference: 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.
The reference comes back on the payout and on its 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:
Payouts sent by an automatic schedule get a generated reference that begins with 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 against total_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 its status 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. The payout.paid event tells you the moment it happens.
  • failed: read failure_reason, and expect the funds back in your balance. Reconcile the returned money before you decide whether to pay out again.
To reconcile a whole period, use List Payouts, which you can filter by status, or the history in Balances → Withdrawals on the dashboard. Listing also catches any payout whose webhook you missed.

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, its session_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