> ## 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.

# payout_destination.approved

> Occurs when a payout destination becomes usable.

Sent when a payout destination is approved and can receive money. That covers one the system approved the moment it was registered, one approved by a reviewer, and one approved again after an edit. A destination that is still waiting for review sends nothing.

Like other events on an account, a platform on `event_source` `connect` receives it for the accounts it owns, and the account itself receives it on `account`. See [Connect events](https://docs.bachs.io/guides/webhooks/overview.md#connect-events).

```json Event theme={"dark"}
{
  "id": "evt_6b1f0c9d2a7e4f58",
  "type": "payout_destination.approved",
  "created_at": "2026-11-10T09:14:03.218000+00:00",
  "organization_id": "acct_3Wq8ZfT1yHnJ5sVe",
  "account": "acct_3Wq8ZfT1yHnJ5sVe",
  "data": {
    "destination_id": "pd_bV1EnClbYCX7AfUC",
    "type": "bank_account",
    "currency": "NGN",
    "status": "approved",
    "status_reason": null,
    "is_usable": true,
    "is_default": true,
    "reviewed_at": null
  }
}
```

## Event fields

**id** `string`

The event's unique identifier, prefixed `evt_`. Use it to deduplicate deliveries.

**type** `string`

Always `payout_destination.approved`.

**created\_at** `string`

When the event occurred, in UTC.

**organization\_id** `string`

The account that owns the destination.

**account** `string`

The owning account's id, repeated at the top level. Present only when the account has a parent. This is how a platform tells which of its accounts the event concerns.

**data.destination\_id** `string`

The destination's id, prefixed `pd_`. The same `id` the payout destinations endpoints return.

**data.type** `string`

`bank_account`, `mobile_money` or `crypto_wallet`.

**data.currency** `string`

The destination's currency, as an ISO 4217 code.

**data.status** `string`

`approved`.

**data.status\_reason** `string | null`

The reviewer's note when there is one. Null when the destination was approved without a note.

**data.is\_usable** `boolean`

True when the destination is approved and active, so a payout to it will be accepted.

**data.is\_default** `boolean`

Whether it is the account's default destination for its currency.

**data.reviewed\_at** `string | null`

When a person reviewed it, in UTC. Null when the system decided on its own.

No account number, bank detail or wallet address is sent. Fetch the destination to read those.

## What to do on receipt

Match `data.destination_id` against the destination you registered and mark it ready. You can now create withdrawals to it.

## Related

* [Payout destinations](https://docs.bachs.io/guides/payouts/destinations.md)


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