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:

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:

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:

{
  "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

FieldTypeRequiredDescription
account_kindstringYesMust be raw_routing_details
namestringYesHuman-readable account name
assetstringYesCurrency code (MXN, COP, INR, PKR, BDT, NGN, DOP, GBP, KES, EUR)
customer_guidstringConditionalRequired for customer accounts; omit for bank accounts
counterparty_guidstringConditionalAssociated counterparty GUID; optional when counterparty name and address are provided directly
counterparty_bank_account_detailsarrayYesPayment rail configuration

Counterparty bank account details

Each object in the counterparty_bank_account_details array specifies routing information:

FieldTypeDescription
bank_codestringBank identifier (required for most rails)
bank_code_typestringCode format (CLABE, PSE, PIX, CBU_CVU, IFSC, IBAN, SBP, BEFTN, CBN, SORT_CODE, SWIFT_BIC)
account_identifierstringAccount number or payment key
account_identifier_typestringIdentifier format; see counterparty_bank_account_details for the complete list (rail dependent)
account_typestringAccount type: checking or savings (PSE and LBTR)
account_designationstringNRE or NRO for IFSC accounts; NRO for UPI (defaults to NRE when omitted on IFSC)
payment_railstringRail 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) and 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


Did this page help you?