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

# External bank addresses

> Two paths for creating external off-chain bank addresses: Plaid-linked bank account and Direct bank entry.

Brale supports two paths for creating an external off-chain bank address, each unlocking different transfer types.

When you create an external bank address, the path you choose determines which `transfer_types` are available for that address. Choose the right path based on the transfer rails you need.

## Comparison

| Capability   | Plaid-linked bank account | Direct bank entry |
| ------------ | ------------------------- | ----------------- |
| `ach_debit`  | Supported                 | Not supported     |
| `ach_credit` | Supported                 | Supported         |
| `rtp_credit` | Supported                 | Supported         |
| `wire`       | Not supported             | Supported         |

<Warning>
  **ACH debit** is only available through the **Plaid-linked bank account**
  flow. You cannot enable `ach_debit` via Direct bank entry.
</Warning>

<Warning>
  **Wire** is only available through the **Direct bank entry** flow. You cannot
  enable `wire` via the Plaid-linked bank account flow.
</Warning>

## Which path should you use?

* **Plaid-linked bank account** — Use this when you need `ach_debit` or want to provide a Plaid bank-linking experience for your users. This flow uses Plaid Link to securely connect a bank account and supports `ach_debit`, `ach_credit`, and `rtp_credit`.
* **Direct bank entry** — Use this when you already have bank account details (account number, routing number) or need `wire` transfers. This flow supports `wire`, `ach_credit`, `same_day_ach_credit`, and `rtp_credit`.

## Direct bank entry field requirements

For Direct bank entry, required fields depend on the transfer types you request.

| Transfer type         | Required bank details                                                         |
| --------------------- | ----------------------------------------------------------------------------- |
| `ach_credit`          | `owner`, `account_number`, `routing_number`, `account_type`, `transfer_types` |
| `same_day_ach_credit` | `owner`, `account_number`, `routing_number`, `account_type`, `transfer_types` |
| `rtp_credit`          | `owner`, `account_number`, `routing_number`, `account_type`, `transfer_types` |
| `wire`                | All of the above, plus `bank_address` and `beneficiary_address`               |

If `transfer_types` includes `wire`, wire requirements apply, even if the same address also includes ACH or RTP rails. For ACH/RTP-only addresses, omit `bank_address` and `beneficiary_address` unless you have accurate values—do not enter placeholder or generic bank addresses.

## Plaid-linked bank account flow

This flow uses the Plaid Link SDK to securely connect a bank account in two steps:

1. [Create a Plaid link token](/api-reference/brale/create-plaid-link-token) — Generate a `link_token` to launch Plaid Link in your front-end.
2. [Register the account via Plaid](/api-reference/brale/register-financial-institution-account-via-plaid-and-return-address-id) — Exchange the `public_token` from Plaid to create an `address_id`.

For a full walkthrough, see [Key Concepts → Addresses → Create addresses through Plaid](/key-concepts/addresses#create-addresses-through-plaid).

## Direct bank entry flow

Submit bank account details directly using the Addresses API:

* [Create a new external address](/api-reference/brale/create-address) — ACH/RTP-only addresses require `owner`, `account_number`, `routing_number`, `account_type`, and `transfer_types`. Wire-capable addresses also require `bank_address` and `beneficiary_address`. This path supports `wire`, `ach_credit`, `same_day_ach_credit`, and `rtp_credit`.

For examples, see [Key Concepts → Addresses → Create via Direct bank entry](/key-concepts/addresses#create-via-direct-bank-entry).

## Archive and unarchive

If you need to stop using a previously linked external bank address without deleting the record, use the [PATCH address endpoint](/api-reference/brale/update-address) to archive it. If the customer later wants to restore the same external address, unarchive it.

* Archive: `PATCH /accounts/{account_id}/addresses/{address_id}` with `{ "status": "archived" }`
* Unarchive: `PATCH /accounts/{account_id}/addresses/{address_id}` with `{ "status": "active" }`

Archive and unarchive apply only to external addresses. See [Address lifecycle](/key-concepts/addresses#address-lifecycle) for details.
