---
updatedAt: 2026-09-04T16:23:12.000Z
agentTools:
  projectIndex: https://docs.cybrid.xyz/llms.txt
---

# Create Foreign Fiat External Bank Accounts

How do I create an external bank account for cross-border payouts?

## Overview

Create external bank accounts for recipients who receive funds in foreign fiat currencies through local payment rails. Associate these accounts with customers or banks.

Cybrid supports foreign fiat currencies with region-specific payment rails. This guide covers the general account model and creation process. For country-specific routing details, recipient requirements, and configuration, see the payout guides:

* [Payouts to Mexico](https://docs.cybrid.xyz/docs/payouts-to-mexico) — MXN via SPEI
* [Payouts to Colombia](https://docs.cybrid.xyz/docs/payouts-to-colombia) — COP via PSE
* [Payouts to India (NRE)](https://docs.cybrid.xyz/docs/payouts-to-india-nre) — INR via IFSC
* [Payouts to India (NRO)](https://docs.cybrid.xyz/docs/payouts-to-india-nro) — INR NRO via UPI or IFSC
* [Payouts to Pakistan](https://docs.cybrid.xyz/docs/payouts-to-pakistan) — PKR via SBP
* [Payouts to Bangladesh](https://docs.cybrid.xyz/docs/payouts-to-bangladesh) — BDT via BEFTN
* [Payouts to Nigeria](https://docs.cybrid.xyz/docs/payouts-to-nigeria) — NGN via NGBANK
* [Payouts to Dominican Republic](https://docs.cybrid.xyz/docs/payouts-to-dominican-republic) — DOP via LBTR
* [Payouts to Kenya](https://docs.cybrid.xyz/docs/payouts-to-kenya) — KES via KEBANK (bank account) or MPESA (mobile wallet)
* [Payouts to EU](https://docs.cybrid.xyz/docs/payouts-to-eu) — EUR via SEPA Credit Transfer (IBAN routing)
* [Payouts to United Kingdom](https://docs.cybrid.xyz/docs/payouts-to-united-kingdom) — GBP via FPS

## Prerequisites

Before creating external bank accounts:

* **Counterparty verification**: The associated counterparty must be verified (KYC or KYB) and in `verified` state
* **Authentication**: API access with `external_bank_accounts:execute` scope
* **Compliance**: Adhere to country-specific data privacy regulations

## Create an external bank account

To create an external bank account:

1. **Create and verify a counterparty** representing the account beneficiary
2. **Gather payment rail details** specific to the destination country
3. **Submit account creation request** with raw routing details
4. **Monitor account state** until creation completes

The platform securely stores routing information (encrypted at rest and in transit) for transfer operations. The payout provider processes account creation asynchronously. Poll `GET /api/external_bank_accounts/{external_bank_account_guid}` using the GUID from the creation response until `state` reaches `completed`. A `failed` state indicates creation failed.

Send a POST request to `/api/external_bank_accounts`:

```http Request
POST /api/external_bank_accounts
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
Accept-Version: 2025-10-01
```

> ℹ️ API versioning
>
> Creating external bank accounts with foreign raw routing details requires `Accept-Version: 2025-10-01` or later.

## Account model

External bank accounts for foreign fiat use the `raw_routing_details` account kind. The following example shows Mexico (MXN) via SPEI:

```json Request
{
  "account_kind": "raw_routing_details",
  "name": "Descriptive account name",
  "asset": "MXN",
  "customer_guid": "customer_guid",
  "counterparty_guid": "counterparty_guid",
  "counterparty_bank_account_details": [
    {
      "bank_code_type": "CLABE",
      "bank_code": "032",
      "account_identifier": "032180000118359719",
      "account_identifier_type": "CLABE",
      "payment_rail": "SPEI"
    }
  ]
}
```

### Key fields

| Field                               | Type   | Required    | Description                                                                                     |
| ----------------------------------- | ------ | ----------- | ----------------------------------------------------------------------------------------------- |
| `account_kind`                      | string | Yes         | Must be `raw_routing_details`                                                                   |
| `name`                              | string | Yes         | Human-readable account name                                                                     |
| `asset`                             | string | Yes         | Currency code (MXN, COP, INR, PKR, BDT, NGN, DOP, GBP, KES, EUR)                                |
| `customer_guid`                     | string | Conditional | Required for customer accounts; omit for bank accounts                                          |
| `counterparty_guid`                 | string | Conditional | Associated counterparty GUID; optional when counterparty name and address are provided directly |
| `counterparty_bank_account_details` | array  | Yes         | Payment rail configuration                                                                      |

### Counterparty bank account details

Each object in the `counterparty_bank_account_details` array specifies routing information:

| Field                     | Type   | Description                                                                                                                                                      |
| ------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bank_code`               | string | Bank identifier (required for most rails)                                                                                                                        |
| `bank_code_type`          | string | Code format (CLABE, PSE, PIX, CBU\_CVU, IFSC, IBAN, SBP, BEFTN, CBN, SORT\_CODE, SWIFT\_BIC)                                                                     |
| `account_identifier`      | string | Account number or payment key                                                                                                                                    |
| `account_identifier_type` | string | Identifier format; see [`counterparty_bank_account_details`](https://docs.cybrid.xyz/reference/createexternalbankaccount) for the complete list (rail dependent) |
| `account_type`            | string | Account type: `checking` or `savings` (PSE and LBTR)                                                                                                             |
| `account_designation`     | string | `NRE` or `NRO` for IFSC accounts; `NRO` for UPI (defaults to `NRE` when omitted on IFSC)                                                                         |
| `payment_rail`            | string | Rail name (SPEI, PSE, IFSC, UPI, SBP, BEFTN, NGBANK, LBTR, FPS, KEBANK, MPESA, SEPA)                                                                             |

> ℹ️ Indian bank accounts
>
> For IFSC accounts, set `account_designation` to `NRE` or `NRO`. If omitted, the platform defaults to `NRE`. For UPI (NRO), set `account_designation` to `NRO` and `account_identifier_type` to `VPA`. When an NRO account includes both UPI and IFSC details, the platform prefers UPI. See [Payouts to India (NRE)](https://docs.cybrid.xyz/docs/payouts-to-india-nre) and [Payouts to India (NRO)](https://docs.cybrid.xyz/docs/payouts-to-india-nro) for corridor requirements.

> ℹ️ FPS bank accounts (United Kingdom)
>
> The FPS rail uses `bank_code_type: "SORT_CODE"` with a 6-digit sort code as `bank_code` and an 8-digit account number as `account_identifier`.

> ℹ️ MPESA mobile wallet accounts (Kenya)
>
> The MPESA rail uses `account_identifier_type: "PHONE_NUMBER"` with an E.164 phone number as the `account_identifier`. Omit `bank_code` and `bank_code_type` — they are not used for this rail.

> ℹ️ SEPA bank accounts (EUR)
>
> The SEPA rail uses `bank_code_type: "IBAN"` with the recipient's IBAN as the `account_identifier`. No `bank_code` is required when IBAN routing is used.

## Related resources

* [Create External Bank Account API Reference](https://docs.cybrid.xyz/reference/createexternalbankaccount)
* [Counterparty Management](https://docs.cybrid.xyz/docs/counterparties)
* [Sending Cross-Border Payments](https://docs.cybrid.xyz/docs/sending-cross-border-payments)
* [Payouts to Mexico](https://docs.cybrid.xyz/docs/payouts-to-mexico)
* [Payouts to Colombia](https://docs.cybrid.xyz/docs/payouts-to-colombia)
* [Payouts to India (NRE)](https://docs.cybrid.xyz/docs/payouts-to-india-nre)
* [Payouts to India (NRO)](https://docs.cybrid.xyz/docs/payouts-to-india-nro)
* [Payouts to Pakistan](https://docs.cybrid.xyz/docs/payouts-to-pakistan)
* [Payouts to Bangladesh](https://docs.cybrid.xyz/docs/payouts-to-bangladesh)
* [Payouts to Nigeria](https://docs.cybrid.xyz/docs/payouts-to-nigeria)
* [Payouts to Dominican Republic](https://docs.cybrid.xyz/docs/payouts-to-dominican-republic)
* [Payouts to Kenya](https://docs.cybrid.xyz/docs/payouts-to-kenya)
* [Payouts to EU](https://docs.cybrid.xyz/docs/payouts-to-eu)
* [Payouts to United Kingdom](https://docs.cybrid.xyz/docs/payouts-to-united-kingdom)
* [Creating a plan](https://docs.cybrid.xyz/reference/createplan)
* [Executing a plan](https://docs.cybrid.xyz/reference/createexecution)