> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bachs.io/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Money is always a decimal string at the currency's precision (for example "29.00"), paired with an ISO 4217 currency field. Never use minor units.
> Build against the sandbox first: base URL https://sandbox-api.bachs.io with sk_sandbox_ keys. Production is https://api.bachs.io with sk_live_ keys; going live is a key swap.
> Treat webhooks (for example collection.succeeded) as the source of truth for fulfilment, never client-side events or redirects.
> Subscriptions are created by completing a checkout for a recurring product. There is no direct create-subscription endpoint.
> IDs carry resource prefixes (cust_, prod_, sub_, chk_, inv_, ref_) and timestamps are ISO 8601 UTC.

# Save and manage payout destinations

> Save the bank accounts and wallets you pay out to, get them approved, choose a default, and change or remove them safely.

A payout destination is a bank account, mobile money wallet or crypto wallet you have saved to receive payouts. Save it once and every later payout, manual or automatic, just names it. Each destination belongs to the account holder, accepts one currency, and is reviewed before money can go to it.

## Where you manage them

On the dashboard, open **Settings → Payout Destinations and Currencies**. Each saved destination shows its type, its currency and its review badge, with **Set as default**, **Edit** and **Delete** beside it. **Add destination** opens the form. You can also add one in the middle of a payout, from **Select destination**.

Through the API, destinations have their own endpoints: create, list, retrieve, update and delete. Your key needs `payouts:write` to change them and `payouts:read` to read them.

*Image: The Payout destinations card in settings: two saved NGN bank accounts, both approved, one the default, with Set as default, Edit and Delete.*

## Add a destination

Choose the type, then fill in what that route needs: a bank code and account number for a local bank, a sort code for GBP, an IBAN and BIC for EUR, a scheme and routing number for USD and CAD, a provider and phone number for mobile money, or an address and network for a crypto wallet. [Payout currencies and methods](https://docs.bachs.io/guides/payouts/global-payouts.md#prepare-your-destination-details) lists every route and its details.

Through the API, send `type` explicitly to [Create Destination](https://docs.bachs.io/api-reference/payouts/create-payout-destination.md):

```bash theme={"dark"}
curl -X POST https://sandbox-api.bachs.io/v1/payouts/destinations \
  -H "Authorization: Bearer $BACHS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "bank_account",
    "currency": "NGN",
    "bank_code": "058",
    "account_number": "0123456789"
  }'
```

Store the `id` it returns (`pd_...`); payouts name the destination by it. For a Nigerian bank, the bank resolves the account holder's name into `account_name`: check it matches the account you meant.

## Wait for approval

Every new destination is reviewed. Its `status` tells you where review stands:

| `status` | What it means | What to do |
| - | - | - |
| `pending_review` | Waiting for review. Not usable yet. | Wait, and check again before you pay out. |
| `approved` | Cleared for payouts. | Pay out to it. |
| `rejected` | Permanently unusable. `status_reason` says why. | Save a new destination with corrected details. |

Before each payout, read `is_usable` rather than `status`. It is `true` only while the destination is approved and has not been deactivated. On the dashboard, look for the **Approved** badge.

## Choose a default

Each currency can have one default destination: the one [automatic payouts](https://docs.bachs.io/guides/payouts/payout-schedules.md) send that currency to. Only an approved destination of your own can be the default.

On the dashboard, click **Set as default**, or choose the destination while you set up automatic payouts. Through the API, [update the destination](https://docs.bachs.io/api-reference/payouts/update-payout-destination.md) with `"is_default": true`. Setting a new default demotes the old one, and `false` clears it.

```bash theme={"dark"}
curl -X PATCH https://sandbox-api.bachs.io/v1/payouts/destinations/pd_example_ngn \
  -H "Authorization: Bearer $BACHS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "is_default": true }'
```

## Change a destination

What you change decides whether the destination stays usable:

* **Renaming it or changing the default** is always safe. Neither touches its approval.
* **Changing where the money lands**, such as the account number, bank code, wallet, network or phone number, sends it back to `pending_review`. The approval it held was for the old details. Until it is approved again, you can't pay out to it, and an `is_default` sent in the same request is ignored.

To move to a different bank account, it is usually simpler to save a new destination, wait for its approval, then switch the default.

## Remove a destination

Delete a destination from settings or with the API once nothing should pay out to it. If it is the default for a currency with automatic payouts, save and approve the replacement and make it the default first. A schedule with no usable default can't pay out that currency.

## Connected accounts

To save a destination for an account your platform manages, send its `X-Account-Id`. The destination must belong to that account's holder. Banks that need an international scheme (GBP, EUR, USD and CAD) can't be passed inline during onboarding; register them with Create Destination instead. See [Connected account payouts](https://docs.bachs.io/connect/payouts.md).

## Next steps

* [Create a payout](https://docs.bachs.io/guides/payouts/payout-using-api.md): send money to a saved destination.
* [Set up automatic payouts](https://docs.bachs.io/guides/payouts/payout-schedules.md): pay out to your default destination on a schedule.
* [The payout destination object](https://docs.bachs.io/api-reference/payout-destinations/object.md): every field a destination returns.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.