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

# Off-ramp payout countries and required fields

> Per-country payout rails, bank details, bank lookups, recipient fields, and business-recipient support for Bastion off-ramps across 60+ jurisdictions.

Off-ramp payouts are supported to bank accounts in the United States and 60+ other countries. Requirements vary by country: the payment rail, the bank details you collect, whether the customer must select a receiving institution, and in some cases additional recipient fields.

For the end-to-end flows, see [Withdraw stablecoin to a US bank account](/guides/quickstarts/off-ramp/withdraw-to-a-bank-account) and [Withdraw stablecoin to an international bank account](/guides/quickstarts/off-ramp/international-bank-account). For who is eligible to off-ramp, see [Jurisdiction overview](/guides/getting-started/jurisdiction-overview).

## Country requirements

**Bank lookup** means you must fetch the receiving institution from `GET /v2/institutions` and pass the selected `bank_id`. See [Bank lookups](#bank-lookups) below.

**Recipient extras** are in addition to the fields every registration requires: name (or `business_name`), `email`, and `address`.

| Country                           | Currency | Rail            | Bank lookup | Bank details                                                                                                           | Recipient extras  | Business recipients |
| --------------------------------- | -------- | --------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------- | ------------------- |
| Argentina                         | ARS      | `COELSA`        | No          | `coelsa_details`: `account_number`, `account_number_type`                                                              | `tax_id`, `phone` | Yes                 |
| Australia                         | AUD      | `BECS`          | No          | `bank_transfer_details`: `account_number`, `bank_code`                                                                 | None              | Yes                 |
| Bolivia                           | BOB      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`, `type`                                                           | `tax_id`          | Yes                 |
| Brazil                            | BRL      | `PIX`           | No          | `pix_details`: `identifier_type`, `identifier_value`                                                                   | `tax_id`          | Yes                 |
| Canada                            | CAD      | `EFT`           | Yes         | `ca_eft_details`: `account_number`, `bank_id`, `institution_number`, `transit_number`                                  | None              | Yes                 |
| Chile                             | CLP      | `SPAV`          | Yes         | `bank_transfer_details`: `account_number`, `bank_id`, `type`                                                           | `tax_id`          | Yes                 |
| Colombia                          | COP      | `ACH`           | Yes         | `bank_transfer_details`: `account_number`, `bank_id`, `type`                                                           | `tax_id`, `phone` | Yes                 |
| Costa Rica                        | CRC      | `SINPE`         | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | `tax_id`, `phone` | Yes                 |
| Dominican Republic                | DOP      | `LBTR`          | Yes         | `bank_transfer_details`: `account_number`, `bank_id`, `type`                                                           | `tax_id`, `phone` | Yes                 |
| Ecuador                           | USD      | `ACH`           | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | `tax_id`, `phone` | Yes                 |
| Egypt                             | EGP      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number` (IBAN), `bank_id`                                                            | None              | Yes                 |
| El Salvador                       | USD      | `ACH`           | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | `phone`           | No                  |
| Ghana                             | GHS      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| Guatemala                         | GTQ      | `ACH`           | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | `phone`           | No                  |
| Honduras                          | HNL      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | `phone`           | No                  |
| India                             | INR      | `IMPS_FIRC`     | No          | `imps_firc_details`: `account_number`, `ifsc_code`                                                                     | None              | Yes                 |
| Indonesia                         | IDR      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| Israel                            | ILS      | `ZAHAV`         | Yes         | `bank_transfer_details`: `account_number` (IBAN), `bank_id`                                                            | None              | Yes                 |
| Jamaica                           | JMD      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`, `bank_code`                                                      | `phone`           | Yes                 |
| Japan                             | JPY      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`, `bank_code`                                                      | `phone`           | Yes                 |
| Jordan                            | JOD      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number` (IBAN), `bank_id`                                                            | None              | No                  |
| Kenya                             | KES      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| Malaysia                          | MYR      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| Mexico                            | MXN      | `SPEI`          | No          | `spei_details`: `clabe`                                                                                                | `tax_id`          | Yes                 |
| Pakistan                          | PKR      | `IBFT`          | Yes         | `bank_transfer_details`: `account_number` (IBAN), `bank_id`                                                            | None              | No                  |
| Peru                              | PEN      | `CCE`           | Yes         | `cce_details`: `account_number`, `bank_id`, `type`, `address`                                                          | `tax_id`          | Yes                 |
| Philippines                       | PHP      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| Qatar                             | QAR      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number` (IBAN), `bank_id`                                                            | `tax_id`          | Yes                 |
| Saudi Arabia                      | SAR      | `MADA`          | Yes         | `bank_transfer_details`: `account_number` (IBAN), `bank_id`                                                            | None              | Yes                 |
| Singapore                         | SGD      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | `phone`           | Yes                 |
| South Africa                      | ZAR      | `EFT`           | Yes         | `za_eft_details`: `account_number`, `bank_id`, `transit_number`                                                        | `phone`           | No                  |
| South Korea                       | KRW      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| Thailand                          | THB      | `BANK_TRANSFER` | Yes         | `bank_transfer_details`: `account_number`, `bank_id`                                                                   | None              | Yes                 |
| United Arab Emirates              | AED      | `NPSS`          | No          | `bank_transfer_details`: `account_number` (IBAN)                                                                       | None              | Yes                 |
| United Kingdom                    | GBP      | `BANK_TRANSFER` | No          | `bank_transfer_details`: `account_number` (IBAN), `bank_code`, plus at least one of `swift_or_bic_number` or `bank_id` | None              | Yes                 |
| United States                     | USD      | `WIRE`          | No          | `wire_details`: `account_number`, `routing_number`, `type`, `address`                                                  | None              | Yes                 |
| SEPA countries (29, listed below) | EUR      | `SEPA`          | No          | `sepa_details`: `bank_account_number`, `swift_or_bic_number`                                                           | None              | Yes                 |

Where **Business recipients** is No, the country accepts individual recipients only, and submitting `recipient.business` fails.

US payouts are first-party only: `beneficiary_type` must be `FIRST_PARTY`, and the destination must be a bank account the customer owns. Every other country accepts both `FIRST_PARTY` and `THIRD_PARTY`.

### SEPA countries

All SEPA corridors pay out in EUR and share the same requirements:

Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland.

### Why rails and details objects differ

Some countries have a standardized local scheme with its own `payment_method` value, such as `SPEI` for Mexico or `PIX` for Brazil. Countries without a dedicated local rail use `BANK_TRANSFER` as the catch-all, and the `country` on the request determines which corridor applies.

Rails with identical field sets share a details object. `SPAV`, `SINPE`, `LBTR`, `IBFT`, `MADA`, `ZAHAV`, `NPSS`, `BECS`, and `ACH` all use `bank_transfer_details` despite having distinct `payment_method` values.

Beyond the fields you collect, the rail changes nothing. Conversion submission, webhook handling, and status progression are identical everywhere.

## Bank lookups

Countries marked **Yes** above require the customer to choose their receiving institution, and registration fails without a `bank_id`. Fetch the list before you render the bank field:

```Bash theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
GET /v2/institutions?country=KR&currency=KRW&payment_method=BANK_TRANSFER
Authorization: Bearer YOUR_API_KEY
```

For the response shape, when the list comes back empty, and where this fits in the flow, see [Step 3 of the international quickstart](/guides/quickstarts/off-ramp/international-bank-account#step-3-–-look-up-institutions).

Two country-specific exceptions:

* **Japan** requires a lookup for `bank_id` and separately requires a `bank_code`, the Zengin code, which the institutions endpoint does not return. Collect it from the customer.
* **United Kingdom** needs no lookup, but does require at least one of `swift_or_bic_number` or `bank_id`. If you send `bank_id`, get it from the institutions endpoint rather than constructing it.

## Building the request

Payout destinations are registered through `POST /v2/identities/{identity_id}/payment-instructions`. The country determines three things: the `payment_method`, the details object nested inside `bank_account_details`, and which recipient fields you need.

Canada, which uses one of the more detailed objects:

```JSON theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
{
  "payment_method": "EFT",
  "country": "CA",
  "fiat_currency_symbol": "CAD",
  "beneficiary_type": "THIRD_PARTY",
  "bank_account_details": {
    "name": "Royal Bank of Canada",
    "ca_eft_details": {
      "account_number": "1320993",
      "bank_id": "3FkR2mQpLxNvWsT4",
      "institution_number": "003",
      "transit_number": "00010"
    }
  },
  "recipient": {
    "individual": {
      "first_name": "Avery",
      "last_name": "Tremblay",
      "email": "avery.tremblay@example.com",
      "address": {
        "street_line_1": "88 Queen St W",
        "city": "Toronto",
        "postal_code": "M5V 2T6",
        "country": "CA",
        "region_code": "ON"
      }
    }
  }
}
```

Set exactly one of `recipient.individual` or `recipient.business`. Nest `tax_id` and `phone` inside whichever one you set. Both are also accepted at the top level of `recipient`, but that form is deprecated, and the nested value wins if you send both.

Bastion derives the account holder's name and address from the `recipient` object before forwarding to the payment provider. Do not put them inside `bank_account_details`.

## Format requirements

**Tax IDs**

| Country   | Format                                                           |
| --------- | ---------------------------------------------------------------- |
| Mexico    | RFC, 13 alphanumeric characters                                  |
| Brazil    | CPF (11 digits) for individuals, CNPJ (14 digits) for businesses |
| Argentina | CUIT with check digit, e.g. `30-51731290-4`                      |
| Ecuador   | Exactly 10 digits for individual recipients                      |

**Bank codes**

| Country        | Format                                                                                  |
| -------------- | --------------------------------------------------------------------------------------- |
| Australia      | BSB, 6 digits, no hyphen, e.g. `012950`                                                 |
| Japan          | Zengin, `XXXX-XXX`, e.g. `0397-480`                                                     |
| Jamaica        | Transit code, `00000 999`                                                               |
| United Kingdom | Sort code, 6 digits, no dashes, e.g. `200353`                                           |
| Canada         | `institution_number` is 3 digits, e.g. `003`. `transit_number` is a 5-digit branch code |
| South Africa   | `transit_number` is the branch code                                                     |

**Postal codes**

| Country     | Format                        |
| ----------- | ----------------------------- |
| Argentina   | Alphanumeric, e.g. `C1043AAZ` |
| Canada      | `A1A 1A1`, e.g. `M5V 2T6`     |
| El Salvador | `CP NNNN`, e.g. `CP 1101`     |
| Netherlands | `NNNN AA`, e.g. `1012 AB`     |

**Street addresses**

Saudi Arabia, the United Arab Emirates, Israel, and Kenya require a physical street address. `P.O. Box` and `PO Box` are rejected in `street_line_1`.

**Phone numbers**

E.164 with country code, e.g. `+541143000000`.

**Account identifiers**

| Field                             | Format                                                                                              |
| --------------------------------- | --------------------------------------------------------------------------------------------------- |
| `clabe` (Mexico)                  | 18 digits                                                                                           |
| `identifier_type` (Brazil)        | One of `CPF`, `CNPJ`, `EMAIL`, `PHONE_NUMBER`, `RANDOM_KEY`                                         |
| `identifier_value` (Brazil)       | The PIX key itself. CPF is 11 digits, CNPJ is 14, `RANDOM_KEY` is a UUID                            |
| `account_number_type` (Argentina) | One of `CBU`, `CVU`, `ALIAS`. CBU is 22 digits                                                      |
| `type` (Peru)                     | `CHECKING` or `SAVINGS`                                                                             |
| `address` (Peru)                  | Same shape as `recipient.address`: `street_line_1`, `city`, `postal_code`, `country`, `region_code` |

<br />


## Related topics

- [Supported off-ramp payout countries](/guides/getting-started/supported-off-ramp-payout-countries.md)
- [Off-ramp: Withdraw stablecoin to a bank account](/guides/quickstarts/off-ramp.md)
- [Off-ramp: Withdraw stablecoin internationally](/guides/quickstarts/off-ramp/international-bank-account.md)
- [Conversion notifications](/v2/api-reference/webhooks/notifications/conversions-notifications.md)
- [Supported chains and assets](/guides/concepts/chains-and-assets.md)
