---
title: "Create External Account"
method: POST
path: "/v1/customers/{customer_id}/external-accounts"
tags: ["External Accounts (Withdraw to Self)"]
---

# Create External Account

`POST /v1/customers/{customer_id}/external-accounts`

Create and register a new external bank account for a specific customer.

**⚠️ Important: Customer's Own Account Only**
- This endpoint is exclusively for adding the **customer's own bank account**
- **Do NOT use this endpoint to add third-party or recipient bank accounts**
- For adding recipient/beneficiary bank accounts, use the Recipients API instead
- **Incorrect account holder information may result in failed or delayed transfers**

**Functionality:**
- Registers a new external bank account that can be used for fiat withdrawals
- Supports multiple bank networks: US Fedwire, US ACH, US RTP, and SWIFT international wires
- Automatically assigns a unique external_account_id upon successful creation

**Idempotency & Duplicate Detection:**
- **Required**: Include an `Idempotency-Key` header with a unique UUID for each new account creation

## Path parameters

- `customer_id` string, required

## Headers

- `Idempotency-Key` string, required

## Request body

- ExternalAccountRequest — Request body for creating a new external bank account
  - `network` string, required — Bank network type for the external account. External account creation supports standard bank networks only. - US_FEDWIRE: For US domestic wire transfers (same-day settlement) - US_ACH: For US domestic ACH transfers (next-day settlement, lower fees) - US_RTP: For US real-time payments (instant settlement) - SWIFT: For international wire transfers via the SWIFT network
  - `nickname` string, nullable — User-defined nickname or label for the account (optional). Helps identify the account in listings. Must be 1-64 characters if provided.
  - `account_holder_name` string, required — Full legal name of the account holder (individual or entity). This is the name registered with the bank for compliance and verification.
  - `currency` string, required — Currency of the bank account (e.g., USD, EUR, GBP). Must be supported by the selected network type.
  - `country_code` 'AND' | 'ARE' | 'AFG' | 'ATG' | 'AIA' | 'ALB' | 'ARM' | 'AGO' | 'ARG' | 'ASM' | 'AUT' | 'AUS' | 'ABW' | 'AZE' | 'BIH' | 'BRB' | 'BGD' | 'BEL' | 'BFA' | 'BGR' | 'BHR' | 'BDI' | 'BEN' | 'BLM' | 'BMU' | 'BRN' | 'BOL' | 'BRA' | 'BHS' | 'BTN' | 'BWA' | 'BLR' | 'BLZ' | 'CAN' | 'CCK' | 'COD' | 'CAF' | 'COG' | 'CHE' | 'CIV' | 'COK' | 'CHL' | 'CMR' | 'CHN' | 'COL' | 'CRI' | 'CUB' | 'CPV' | 'CUW' | 'CXR' | 'CYP' | 'CZE' | 'DEU' | 'DJI' | 'DNK' | 'DMA' | 'DOM' | 'DZA' | 'ECU' | 'EST' | 'EGY' | 'ESH' | 'ERI' | 'ESP' | 'ETH' | 'FIN' | 'FJI' | 'FLK' | 'FSM' | 'FRO' | 'FRA' | 'GAB' | 'GBR' | 'GRD' | 'GEO' | 'GUF' | 'GGY' | 'GHA' | 'GIB' | 'GRL' | 'GMB' | 'GIN' | 'GLP' | 'GNQ' | 'GRC' | 'SGS' | 'GTM' | 'GUM' | 'GNB' | 'GUY' | 'HKG' | 'HND' | 'HRV' | 'HTI' | 'HUN' | 'IDN' | 'IRL' | 'ISR' | 'IMN' | 'IND' | 'IOT' | 'IRQ' | 'IRN' | 'ISL' | 'ITA' | 'JEY' | 'JAM' | 'JOR' | 'JPN' | 'KEN' | 'KGZ' | 'KHM' | 'KIR' | 'COM' | 'KNA' | 'PRK' | 'KOR' | 'KWT' | 'CYM' | 'KAZ' | 'LAO' | 'LBN' | 'LCA' | 'LIE' | 'LKA' | 'LBR' | 'LSO' | 'LTU' | 'LUX' | 'LVA' | 'LBY' | 'MAR' | 'MCO' | 'MDA' | 'MNE' | 'MAF' | 'MDG' | 'MHL' | 'MKD' | 'MLI' | 'MMR' | 'MNG' | 'MAC' | 'MNP' | 'MTQ' | 'MRT' | 'MSR' | 'MLT' | 'MUS' | 'MDV' | 'MWI' | 'MEX' | 'MYS' | 'MOZ' | 'NAM' | 'NCL' | 'NER' | 'NFK' | 'NGA' | 'NIC' | 'NLD' | 'NOR' | 'NPL' | 'NRU' | 'NIU' | 'NZL' | 'OMN' | 'PAN' | 'PER' | 'PYF' | 'PNG' | 'PHL' | 'PAK' | 'POL' | 'SPM' | 'PCN' | 'PRI' | 'PSE' | 'PRT' | 'PLW' | 'PRY' | 'QAT' | 'REU' | 'ROU' | 'SRB' | 'RUS' | 'RWA' | 'SAU' | 'SLB' | 'SYC' | 'SDN' | 'SWE' | 'SGP' | 'SHN' | 'SVN' | 'SJM' | 'SVK' | 'SLE' | 'SMR' | 'SEN' | 'SOM' | 'SUR' | 'SSD' | 'STP' | 'SLV' | 'SXM' | 'SYR' | 'SWZ' | 'TCA' | 'TCD' | 'TGO' | 'THA' | 'TJK' | 'TKL' | 'TLS' | 'TKM' | 'TUN' | 'TON' | 'TUR' | 'TTO' | 'TUV' | 'TWN' | 'TZA' | 'UKR' | 'UGA' | 'USA' | 'URY' | 'UZB' | 'VAT' | 'VCT' | 'VEN' | 'VGB' | 'VIR' | 'VNM' | 'VUT' | 'WLF' | 'WSM' | 'XKX' | 'YEM' | 'MYT' | 'ZAF' | 'ZMB' | 'ZWE', required — ISO 3166-1 alpha-3 country codes.
  - `account_number` string, required — The bank account identifier. - For US domestic networks (FEDWIRE/ACH/RTP): Standard bank account number - For SWIFT international wires with USD: Must be a valid IBAN - For SWIFT with other currencies: Local account number format
  - `institution_id` string, required — The primary institution routing identifier. - For US domestic networks (FEDWIRE/ACH/RTP): 9-digit ABA routing number - For SWIFT international wires: 8 or 11-character SWIFT/BIC code of the destination bank
  - `institution_clearing_code` string, nullable — Additional local or regional routing codes required by specific payment networks or countries. Examples: Sort codes (UK), BSB numbers (Australia), transit numbers (Canada). Optional field used when standard institution_id is insufficient for routing.
  - `intermediary_bank` IntermediaryBank — Intermediary bank information for international wire transfers
    - `institution_id` string, required — The intermediary institution identifier (SWIFT code or ABA routing number). For USD international wires: ABA number of the US correspondent bank that serves as intermediary. For non-USD wires: SWIFT code of the intermediary bank (if required by the payment network). Required when the destination bank does not have a direct relationship with the sending institution.

## Response `201`

External account created successfully - Returns the newly created account with assigned external_account_id

- ExternalAccountResponse — Response object containing complete external bank account information
  - `external_account_id` string, required — Unique identifier for the external account (UUID format). Use this ID for all subsequent operations (retrieve, delete, withdrawals).
  - `idempotency_key` string, required — HTTP `Idempotency-Key` header value. Stricter than other IDs: ≤64 ASCII chars per the common REST API convention.
  - `customer_id` string, required — Portfolio ID — also exposed as `customer_id` in OpenAPI. Identifies one individual application / portfolio row within an entity.
  - `status` 'PENDING' | 'APPROVED' | 'FAILED', required
  - `network` string, required
  - `nickname` string, required — User-defined nickname or label for the account (optional). Helps identify the account in listings.
  - `account_holder_name` string, required — Full legal name of the account holder (individual or entity). This is the name registered with the bank for compliance and verification.
  - `currency` string, required — - Stablecoin assets: USDC, USDT, PYUSD, RLUSD, USDG, USDP, EURC, MXNB, 1USD(1USD/USDC conversion only, deposit/withdrawal not supported) - Digital assets: BTC - Fiat currencies: USD
  - `country_code` 'AND' | 'ARE' | 'AFG' | 'ATG' | 'AIA' | 'ALB' | 'ARM' | 'AGO' | 'ARG' | 'ASM' | 'AUT' | 'AUS' | 'ABW' | 'AZE' | 'BIH' | 'BRB' | 'BGD' | 'BEL' | 'BFA' | 'BGR' | 'BHR' | 'BDI' | 'BEN' | 'BLM' | 'BMU' | 'BRN' | 'BOL' | 'BRA' | 'BHS' | 'BTN' | 'BWA' | 'BLR' | 'BLZ' | 'CAN' | 'CCK' | 'COD' | 'CAF' | 'COG' | 'CHE' | 'CIV' | 'COK' | 'CHL' | 'CMR' | 'CHN' | 'COL' | 'CRI' | 'CUB' | 'CPV' | 'CUW' | 'CXR' | 'CYP' | 'CZE' | 'DEU' | 'DJI' | 'DNK' | 'DMA' | 'DOM' | 'DZA' | 'ECU' | 'EST' | 'EGY' | 'ESH' | 'ERI' | 'ESP' | 'ETH' | 'FIN' | 'FJI' | 'FLK' | 'FSM' | 'FRO' | 'FRA' | 'GAB' | 'GBR' | 'GRD' | 'GEO' | 'GUF' | 'GGY' | 'GHA' | 'GIB' | 'GRL' | 'GMB' | 'GIN' | 'GLP' | 'GNQ' | 'GRC' | 'SGS' | 'GTM' | 'GUM' | 'GNB' | 'GUY' | 'HKG' | 'HND' | 'HRV' | 'HTI' | 'HUN' | 'IDN' | 'IRL' | 'ISR' | 'IMN' | 'IND' | 'IOT' | 'IRQ' | 'IRN' | 'ISL' | 'ITA' | 'JEY' | 'JAM' | 'JOR' | 'JPN' | 'KEN' | 'KGZ' | 'KHM' | 'KIR' | 'COM' | 'KNA' | 'PRK' | 'KOR' | 'KWT' | 'CYM' | 'KAZ' | 'LAO' | 'LBN' | 'LCA' | 'LIE' | 'LKA' | 'LBR' | 'LSO' | 'LTU' | 'LUX' | 'LVA' | 'LBY' | 'MAR' | 'MCO' | 'MDA' | 'MNE' | 'MAF' | 'MDG' | 'MHL' | 'MKD' | 'MLI' | 'MMR' | 'MNG' | 'MAC' | 'MNP' | 'MTQ' | 'MRT' | 'MSR' | 'MLT' | 'MUS' | 'MDV' | 'MWI' | 'MEX' | 'MYS' | 'MOZ' | 'NAM' | 'NCL' | 'NER' | 'NFK' | 'NGA' | 'NIC' | 'NLD' | 'NOR' | 'NPL' | 'NRU' | 'NIU' | 'NZL' | 'OMN' | 'PAN' | 'PER' | 'PYF' | 'PNG' | 'PHL' | 'PAK' | 'POL' | 'SPM' | 'PCN' | 'PRI' | 'PSE' | 'PRT' | 'PLW' | 'PRY' | 'QAT' | 'REU' | 'ROU' | 'SRB' | 'RUS' | 'RWA' | 'SAU' | 'SLB' | 'SYC' | 'SDN' | 'SWE' | 'SGP' | 'SHN' | 'SVN' | 'SJM' | 'SVK' | 'SLE' | 'SMR' | 'SEN' | 'SOM' | 'SUR' | 'SSD' | 'STP' | 'SLV' | 'SXM' | 'SYR' | 'SWZ' | 'TCA' | 'TCD' | 'TGO' | 'THA' | 'TJK' | 'TKL' | 'TLS' | 'TKM' | 'TUN' | 'TON' | 'TUR' | 'TTO' | 'TUV' | 'TWN' | 'TZA' | 'UKR' | 'UGA' | 'USA' | 'URY' | 'UZB' | 'VAT' | 'VCT' | 'VEN' | 'VGB' | 'VIR' | 'VNM' | 'VUT' | 'WLF' | 'WSM' | 'XKX' | 'YEM' | 'MYT' | 'ZAF' | 'ZMB' | 'ZWE', required — ISO 3166-1 alpha-3 country codes.
  - `account_number` string, required
  - `institution_id` string, required
  - `institution_name` string, required — Full legal name of the bank institution.
  - `institution_clearing_code` string, required — Additional local or regional routing codes required by specific payment networks or countries. Examples: Sort codes (UK), BSB numbers (Australia), transit numbers (Canada).
  - `intermediary_bank` IntermediaryBank — Intermediary bank information for international wire transfers
    - `institution_id` string, required — The intermediary institution identifier (SWIFT code or ABA routing number). For USD international wires: ABA number of the US correspondent bank that serves as intermediary. For non-USD wires: SWIFT code of the intermediary bank (if required by the payment network). Required when the destination bank does not have a direct relationship with the sending institution.
  - `reference_code` string, required — Reference code for wire transfers (optional). A unique identifier that should be included in wire transfer memos to help identify and reconcile incoming payments.
  - `created_at` string, required
  - `modified_at` string, required
  - `recipient` RecipientResponse — Recipient response object
    - `recipient_id` string, required — Counterparty ID. Empty values are still allowed for legacy DB columns where an empty cpid means the record is not tied to a recipient.
    - `customer_id` string, required — Portfolio ID — also exposed as `customer_id` in OpenAPI. Identifies one individual application / portfolio row within an entity.
    - `business_type` string, required — Recipient type: INDIVIDUAL or COMPANY
    - `full_name` string, required — Full name computed from name fields
    - `nickname` string, nullable — User-defined nickname (optional)
    - `email` string, nullable — Email address (optional)
    - `relationship` string, nullable — Relationship to the customer (optional)
    - `status` string, required — Recipient status. Possible values: active, in_review, failed
    - `address` AddressDetails
      - `full_address` string, required
      - `country_code` string, required — ISO 3166-1 alpha-3 three-letter country codes in upper case.
      - `address_line1` string, required — The street number for this address (the whitespaces are trimmed from field).
      - `address_line2` string, nullable — An additional address line for this address (the whitespaces are trimmed from field).
      - `city` string, required — A city for this address (the whitespaces are trimmed from field).
      - `region` string, nullable — The address's region. This is state for U.S., province for Canada (the whitespaces are trimmed from field).
      - `postal_code` string, required — A postal code for this address (the whitespaces are trimmed from field).
    - `created_at` string, date-time, required — Created timestamp
    - `modified_at` string, date-time, required — Last modified timestamp

## Other responses

- `400` — Validation failed - Invalid request body (missing required fields, invalid country code format, nickname too long, invalid routing number format, unsupported currency for network type, or other validation errors)
- `401` — Authentication failed - Invalid or missing API key in request header
- `405` — Method not allowed - The HTTP method used is not supported for this endpoint
- `409` — Conflict - An account with the same idempotency key already exists, or duplicate account with identical banking details detected
- `422` — Unprocessable Entity - Invalid enum value (e.g., unsupported network or asset name)
- `500` — Internal server error - Unexpected system error occurred during account creation or bank validation

---

[API](https://skmtc.net/1money/apis/1money-openapi.md) · [All operations](https://skmtc.net/1money/apis/1money-openapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/1money/1money-openapi/revisions/aa2718d28cb5/schema)
