What you can withdraw to
International SWIFT transfers are not offered. This guide covers bank accounts outside Nigeria; see Withdraw using the API for your Nigerian bank account. Other currencies are not supported for bank withdrawals.
Prerequisites
- An API key with
payouts:writeto create destinations and withdrawals, andpayouts:readto retrieve their status. See Authentication Overview. - Your organization enabled for payouts. Without it, payout requests return
PAYOUTS_NOT_ENABLED. - Available USD funds sufficient for the withdrawal and fee. These bank routes use your USD balance; an NGN balance cannot fund them. Check Get Balances. USD-to-USD needs no conversion quote; another destination currency needs a quote (step 3).
- Complete account identity information, including the account name, contact email and address. This is separate from the bank branch address below.
Sandbox payouts are simulated. They move through the same statuses as live payouts without moving real money, so you can build the whole flow against
https://sandbox-api.bachs.io first. Sandbox destinations are automatically approved; this does not establish live approval or access. The requests and responses below are illustrative examples, not recorded API results. Replace the sample bank details, identifiers and amounts with your own.Steps
1
Save your bank account as a destination
Call Create Destination with the currency and your bank details. The fields depend on the currency. Pick your currency below.The response is the destination. Keep its
account_name is the name on the bank account. We send it to your bank exactly as you type it, and we cannot look it up for these banks. If it does not match the name your bank holds, the bank can refuse the payment and return it.id:Response (USD)
Fields required for each currency
bank_address is the address of your bank’s branch, not your own address. You can paste sort codes, IBANs and account numbers with spaces or dashes, as your bank statement prints them. We remove them before we check the format.scheme is required only where a currency can be paid more than one way: USD and CAD. GBP and EUR have one way each, so you leave scheme out and it comes back null.2
Wait for review, if your currency needs it
In live mode, a
USD bank destination is automatically approved when you save it: status is approved and is_usable is true.Other bank destinations in the table above initially come back in live mode with status set to pending_review and is_usable set to false. Our team checks the details before any money can go to the account. Check the destination with Get Destination and continue when is_usable is true. If we cannot approve it, status becomes rejected and status_reason says why.Check the destination
3
Get a quote for a destination currency other than USD
For a withdrawal from your USD balance to your USD bank account, skip this step.To withdraw USD as another currency, for example to your GBP bank account, call Create Payout Quote first.
amount is how much leaves your balance, before the fee. Send payout_method as BANK_TRANSFER.to_amount is what reaches your bank. A quote lasts 30 seconds, so create it right before the payout and send the payout as soon as it returns.4
Send the withdrawal
Call Create Payout with the destination. For a same-currency withdrawal, send
amount. With a quote, send quote_id and leave amount out, because the quote already fixes both amounts. Always send an Idempotency-Key.amount is in the bank’s currency. fee and total_debited are in source_currency, the balance the money left. The fee is charged on top, so a 500.00 USD withdrawal debits more than 500.00 USD. Reconcile against total_debited.5
Confirm the money arrived
A successful response means we accepted the withdrawal and took the money from your balance. It does not mean your bank has it. The On
status moves from pending to processing, then to completed or failed.Listen for payout.paid and payout.failed, or poll Get Payout:Check the withdrawal
failed, failure_reason says why. The amount and the fee both go back to your available balance.Errors
See Errors for the shape of every error response.
Next steps
- Withdrawals overview: supported routes and the shared withdrawal flow.
- Multi-currency withdrawals: supported methods and funding requirements.
- Payout schedules: withdraw to your default destination on a daily, weekly or monthly schedule.
- Update Destination: rename a destination or make it the default for its currency.
- The payout destination object: every field on a destination.

