Before you start
- Confirm that the account has an active
payoutscapability and has completed its required identity checks. International payouts require account identity information, including the name, contact email and address. - Check your available balance, including enough funds for the payout fee, in Balances on the dashboard or with Get Balances.
- Use a destination belonging to the account holder. Check its approval and usability in the dashboard, or read its
is_usablefield through the API.
The API examples in this section use
https://sandbox-api.bachs.io and illustrative values. Sandbox payouts are simulated and do not move real money. A successful sandbox test does not establish live destination approval or bank delivery times.Choose how to create payouts
You do not need an API key for the dashboard flow. API integrations use server-side secret keys with the endpoint’s required scopes. Keep secret keys out of browser code.
The dashboard currently uses labels such as Withdraw and Withdrawals for payout actions and history. The guides quote those labels so you can find the controls.
How a payout works
1
Save your destination
Add your bank account or wallet in the dashboard, or register it with Create Destination. Reuse the saved destination for future payouts. It must be approved and usable before funds can be sent.
2
Get a quote if currencies differ
The dashboard prepares the estimate and any conversion quote for you. Through the API, use Create Payout Quote immediately before a cross-currency payout. A same-currency API payout does not need a quote.
3
Create the payout
Confirm the destination, amount, conversion rate if applicable and total debit in the dashboard. Through the API, call Create Payout with
amount for a same-currency payout or quote_id without amount for a converted payout. Send an Idempotency-Key and store the returned payout ID.4
Track the result
Check the record in Balances → Withdrawals on the dashboard. API integrations listen for
payout.paid and payout.failed, or retrieve the payout with Get Payout. An accepted or initiated payout is not proof of completion.Amounts, conversion and fees
On the dashboard, review To receive, the fee and Total debited before confirming. Through the API, these two request amount fields have different meanings:
With a quote, send
quote_id without amount when creating the payout. The quote fixes the source and destination amounts.
For illustration, a 5000.00 NGN payout with a 100.00 NGN fee debits 5100.00 NGN. This is an example, not a published fee rate. Review Fees and reconcile the payout against total_debited in source_currency.
Accepted is not completed
A successful API create response or the dashboard’s Withdrawal started screen means the payout was initiated. It does not mean your bank account or wallet has received the funds. The API exposes these status values:
Use dashboard payout history or List Payouts to reconcile payouts across a period. API integrations can use retrieval and listing to recover after missed webhook deliveries.
Recover from an uncertain request
A failed confirmation or interrupted request can leave the outcome uncertain. The payout may have been created even though you did not see a successful response. On the dashboard, check Balances → Withdrawals before starting another payout. If you cannot establish what happened, contact support. For an API timeout or5xx response:
- Retrieve the payout if you have its ID. Otherwise, inspect recent payouts and reconcile against your stored request details and reference.
- If a payout exists, track that payout instead of creating another one.
- If the outcome remains uncertain, investigate before submitting another payout. Contact support if you cannot establish what happened.
Idempotency-Key per intended payout and keep it for retries of that same request. A new payout needs a new key. Idempotency stores successful responses; it is not an unconditional guarantee that repeating a request after every error cannot create a duplicate.
Connected accounts
When acting for a connected account, useX-Account-Id consistently for that account’s balance, destination and payout. Its payouts capability must be active, and the destination must belong to its account holder.
Funding a connected account with a transfer and paying out from that account are separate operations. See Connected account payouts and Onboarding requirements.
Choose your next guide
- Supported currencies: check coverage, funding rules and destination details.
- Create a payout: use the dashboard or API to save a destination, create a payout and track its result.
- Automatic payouts: configure automatic payouts of eligible settled collections through the dashboard or API.

