---
title: "Add Bank Account"
method: POST
path: "/off-ramp/bank-accounts"
tags: ["off-ramp"]
---

# Add Bank Account

`POST /off-ramp/bank-accounts`

## Request

- Base URL: `https://api.coinvoyage.io/v3`
- URL: `https://api.coinvoyage.io/v3/off-ramp/bank-accounts`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/docs/off-ramp/bank-accounts/post.ts> (a function with typed inputs; its response is checked against the schema)

## Headers

- `Authorization-Signature` string, required

## Request body

- AddBankAccountRequest
  - `account_name` string
  - `account_owner_name` string, required
  - `address` BankAccountAddress, required
    - `street_line_1` string, required
    - `street_line_2` string, nullable
    - `city` string, required
    - `state` string, nullable
    - `postal_code` string, nullable
    - `country` string, required
  - `bank_name` string
  - `account_owner_type` 'individual' | 'business': Whether the bank account owner is an individual or business
  - `first_name` string
  - `last_name` string
  - `business_name` string
  - `currency` 'usd' | 'eur' | 'mxn' | 'brl' | 'gbp' | 'cop', required: Fiat currency used by Bridge bank accounts and durable bank-onramp sessions
  - `account_type` 'us' | 'iban' | 'swift' | 'clabe' | 'pix' | 'gb' | 'bre_b' | 'co_bank_transfer', required: Bank account type: us (ACH), iban, swift, clabe, pix, gb (Faster Payments), bre_b, or co_bank_transfer
  - `account` BankAccount
    - `account_number` string
    - `routing_number` string, nullable
    - `sort_code` string, nullable
    - `bre_b_key` string, nullable
    - `document_type` string, nullable
    - `document_number` string, nullable
    - `bank_code` string, nullable
    - `account_type_detail` string, nullable
    - `phone_number` string, nullable
    - `checking_or_savings` 'checking' | 'savings': US account subtype for ACH accounts
  - `iban` IBANBankAccount
    - `account_number` string, required
    - `country` string, required
    - `bic` string, nullable
  - `swift` SWIFTBankAccount
    - `account` SWIFTAccountInfo, required
      - `account_number` string, nullable
      - `country` string, nullable
      - `bic` string, nullable
    - `address` BankAccountAddress, required
      - `street_line_1` string, required
      - `street_line_2` string, nullable
      - `city` string, required
      - `state` string, nullable
      - `postal_code` string, nullable
      - `country` string, required
    - `category` 'client' | 'parent_company' | 'subsidiary' | 'supplier', required: Relationship category for SWIFT external accounts
    - `purpose_of_funds` string[], required
    - `short_business_description` string, required
  - `clabe` CLABEBankAccount
    - `account_number` string, required
  - `pix` PIXBankAccount
    - `document_number` string, nullable
    - `pix_key` string, nullable
    - `br_code` string, nullable

## Response `201`

Bank account created

- BankAccountDetails
  - `id` string, required
  - `account_name` string, nullable
  - `bank_name` string, nullable
  - `account_type` 'us' | 'iban' | 'swift' | 'clabe' | 'pix' | 'gb' | 'bre_b' | 'co_bank_transfer', required: Bank account type: us (ACH), iban, swift, clabe, pix, gb (Faster Payments), bre_b, or co_bank_transfer
  - `account_owner_type` 'individual' | 'business': Whether the bank account owner is an individual or business
  - `account_details` AccountDetails, required
    - `bank_name` string, nullable
    - `routing_number` string, nullable
    - `sort_code` string, nullable
    - `account_number` string, required
    - `checking_or_savings` string, nullable
    - `bic` string, nullable
    - `pix_key` string, nullable
    - `bank_code` string, nullable
    - `account_type_detail` string, nullable
  - `currency` 'usd' | 'eur' | 'mxn' | 'brl' | 'gbp' | 'cop', required: Fiat currency used by Bridge bank accounts and durable bank-onramp sessions
  - `active` boolean, required
  - `beneficiary_address_valid` boolean, nullable
  - `deactivation_reason` string, nullable
  - `deactivation_details` string, nullable

## Other responses

- `401`: Unauthorized
- `404`: Organization verification not found
- `422`: Invalid request body or validation failed

## Changes

- **2026-08-26** `48d7266715ff`: 3 warning, 13 info
  - added the new `bre_b` enum value to the `account_type` response property for the response status `201`
  - added the new `co_bank_transfer` enum value to the `account_type` response property for the response status `201`
  - added the new `cop` enum value to the `currency` response property for the response status `201`
  - added the new optional request property `account/anyOf[#/components/schemas/BankAccount]/account_type_detail`
  - …12 more

[Operation history](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/changes/off-ramp/bank-accounts/post.md)

---

[API](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3.md) - [All operations](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/coinvoyage/apis/coinvoyage-api-v3/revisions/3535f46f4c27?raw)
