# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api POST /v1/external-bank-accounts \
--body '{"customerId":"cust_abc123","beneficiaryName":"João Silva","aliasType":"tax_id","aliasValue":"12345678901","paymentRails":["pix"]}'Create an external account.
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/external-bank-accounts"
payload = {
"customerId": "cust_abc123",
"beneficiaryName": "João Silva",
"aliasType": "tax_id",
"aliasValue": "12345678901",
"paymentRails": ["pix"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'cust_abc123',
beneficiaryName: 'João Silva',
aliasType: 'tax_id',
aliasValue: '12345678901',
paymentRails: ['pix']
})
};
fetch('https://sandbox.api.infinite.dev/v1/external-bank-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.api.infinite.dev/v1/external-bank-accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => 'cust_abc123',
'beneficiaryName' => 'João Silva',
'aliasType' => 'tax_id',
'aliasValue' => '12345678901',
'paymentRails' => [
'pix'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.infinite.dev/v1/external-bank-accounts"
payload := strings.NewReader("{\n \"customerId\": \"cust_abc123\",\n \"beneficiaryName\": \"João Silva\",\n \"aliasType\": \"tax_id\",\n \"aliasValue\": \"12345678901\",\n \"paymentRails\": [\n \"pix\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.api.infinite.dev/v1/external-bank-accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"cust_abc123\",\n \"beneficiaryName\": \"João Silva\",\n \"aliasType\": \"tax_id\",\n \"aliasValue\": \"12345678901\",\n \"paymentRails\": [\n \"pix\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/external-bank-accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"cust_abc123\",\n \"beneficiaryName\": \"João Silva\",\n \"aliasType\": \"tax_id\",\n \"aliasValue\": \"12345678901\",\n \"paymentRails\": [\n \"pix\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "eba_1234567890abcdef",
"customerId": "cust_abc123",
"type": "EXTERNAL_BANK",
"status": "IN_REVIEW",
"beneficiaryType": "INDIVIDUAL",
"beneficiaryName": "John Smith",
"paymentRail": "SWIFT",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z",
"counterpartyId": "cp_abc123",
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"paymentRails": [
"ACH",
"ACH_SAME_DAY",
"WIRE"
],
"beneficiaryAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Suite 100",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"beneficiaryPhone": "+12125551234",
"beneficiaryDateOfBirth": "1990-01-31",
"bankName": "JPMorgan Chase Bank",
"bankAddress": {
"addressLine1": "270 Park Avenue",
"addressLine2": "Floor 10",
"city": "New York",
"state": "NY",
"postalCode": "10017",
"country": "US"
},
"swiftBic": "CHASUS33",
"iban": "GB82WEST12345698765432",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"branchCode": "001",
"beneficiaryDocumentType": "CC",
"beneficiaryDocumentNumber": "12345678901",
"beneficiaryStateProvince": "LIMA",
"correspondentBankName": "Bank of America",
"correspondentBankSwiftCode": "IRVTUS3NXXX",
"correspondentAccountNumber": "9876543210",
"bankAccountType": "checking",
"currencyCodes": [
"USD",
"EUR"
],
"aliasType": "TAX_ID",
"aliasValue": "12345678901",
"created": true
}Create an external account
Create an external account for bank transfers or proxy-based payments.
Deduplication
Create is find-or-create. Matching differs for bank vs proxy accounts:
Bank accounts match by customer plus the exact set of normalized bank identifiers you supply (any of swiftBic, iban, routingNumber, accountNumber that are present) — not by paymentRails. All supplied identifiers must match; adding or omitting one (e.g. SEPA with only iban, then SWIFT with the same iban plus swiftBic) produces a different identity and a new account. Reusing the same identifier set with a different rail (e.g. ACH after WIRE) returns the existing account and does not add that rail.
Proxy accounts match by customer + normalized alias + payment rail. The same alias on another proxy rail creates a separate account.
On a bank-account reuse (created: false):
- Existing
paymentRailsstay unchanged. - Missing create-only fields (branch, beneficiary document, correspondent details) may be backfilled when supplied; conflicting values return 400.
- A closed account (closed via the API) is reopened with the same ID; fixed routes disabled when it was closed stay disabled and must be re-enabled separately.
To add compatible bank rails to an existing account (e.g. ACH onto a WIRE-only US account), use PATCH /v1/external-bank-accounts/{id} with the full resulting paymentRails list. Do not rely on a second create.
On every create response, check created. For bank accounts also check paymentRails; for proxy accounts check paymentRail (proxies do not return paymentRails). HTTP 201 with created: false means identity reuse, not a new rail set.
Field Mapping
We use generic field names that adapt to country-specific identifiers:
| Field | US | UK | EU | India | Mexico | Australia |
|---|---|---|---|---|---|---|
routingNumber | ABA (9 digits) | Sort code (6 digits) | - | IFSC (11 chars) | - | BSB (6 digits) |
accountNumber | Account number | Account (8 digits) | - | Account number | CLABE (18 digits) | Account number |
iban | - | - | IBAN | - | - | - |
Bank Account Requirements by Rail
| Rail | Required Fields |
|---|---|
| ACH/Wire (US) | routingNumber + accountNumber |
| SWIFT (IBAN countries) | swiftBic + iban |
| SWIFT (US) | swiftBic + accountNumber (routingNumber optional) |
| SWIFT (AU) | swiftBic + routingNumber (BSB) + accountNumber |
| SEPA | iban (swiftBic optional) |
| Faster Payments (UK) | routingNumber (sort code) + accountNumber |
| IMPS/NEFT (India) | routingNumber (IFSC) + accountNumber |
| SPEI (Mexico) | accountNumber (18-digit CLABE) |
Proxy Accounts
For instant payment rails (PIX, UPI, PromptPay), provide alias details instead of bank details:
aliasType: phone, email, tax_id, national_id, or randomaliasValue: The identifier value
The payment network resolves the alias to the recipient’s account.
# Requires: npm i -g @infinite_dev/cli && export INFINITE_API_KEY=sk_sandbox_...
# Escape hatch for any endpoint: infinite api <METHOD> <path>
infinite api POST /v1/external-bank-accounts \
--body '{"customerId":"cust_abc123","beneficiaryName":"João Silva","aliasType":"tax_id","aliasValue":"12345678901","paymentRails":["pix"]}'Create an external account.
# Infinite MCP is read-only for this endpoint — use a dedicated MCP tool when one exists, otherwise run the CLI tab.import requests
url = "https://sandbox.api.infinite.dev/v1/external-bank-accounts"
payload = {
"customerId": "cust_abc123",
"beneficiaryName": "João Silva",
"aliasType": "tax_id",
"aliasValue": "12345678901",
"paymentRails": ["pix"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'cust_abc123',
beneficiaryName: 'João Silva',
aliasType: 'tax_id',
aliasValue: '12345678901',
paymentRails: ['pix']
})
};
fetch('https://sandbox.api.infinite.dev/v1/external-bank-accounts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sandbox.api.infinite.dev/v1/external-bank-accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => 'cust_abc123',
'beneficiaryName' => 'João Silva',
'aliasType' => 'tax_id',
'aliasValue' => '12345678901',
'paymentRails' => [
'pix'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.infinite.dev/v1/external-bank-accounts"
payload := strings.NewReader("{\n \"customerId\": \"cust_abc123\",\n \"beneficiaryName\": \"João Silva\",\n \"aliasType\": \"tax_id\",\n \"aliasValue\": \"12345678901\",\n \"paymentRails\": [\n \"pix\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.api.infinite.dev/v1/external-bank-accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"cust_abc123\",\n \"beneficiaryName\": \"João Silva\",\n \"aliasType\": \"tax_id\",\n \"aliasValue\": \"12345678901\",\n \"paymentRails\": [\n \"pix\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.infinite.dev/v1/external-bank-accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"cust_abc123\",\n \"beneficiaryName\": \"João Silva\",\n \"aliasType\": \"tax_id\",\n \"aliasValue\": \"12345678901\",\n \"paymentRails\": [\n \"pix\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "eba_1234567890abcdef",
"customerId": "cust_abc123",
"type": "EXTERNAL_BANK",
"status": "IN_REVIEW",
"beneficiaryType": "INDIVIDUAL",
"beneficiaryName": "John Smith",
"paymentRail": "SWIFT",
"createdAt": "2026-01-15T10:00:00Z",
"updatedAt": "2026-01-15T10:00:00Z",
"counterpartyId": "cp_abc123",
"metadata": {
"nickname": "Main Checking Account",
"purpose": "Business operations",
"tags": [
"primary",
"operations"
]
},
"paymentRails": [
"ACH",
"ACH_SAME_DAY",
"WIRE"
],
"beneficiaryAddress": {
"addressLine1": "123 Main Street",
"addressLine2": "Suite 100",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"beneficiaryPhone": "+12125551234",
"beneficiaryDateOfBirth": "1990-01-31",
"bankName": "JPMorgan Chase Bank",
"bankAddress": {
"addressLine1": "270 Park Avenue",
"addressLine2": "Floor 10",
"city": "New York",
"state": "NY",
"postalCode": "10017",
"country": "US"
},
"swiftBic": "CHASUS33",
"iban": "GB82WEST12345698765432",
"accountNumber": "1234567890",
"routingNumber": "021000021",
"branchCode": "001",
"beneficiaryDocumentType": "CC",
"beneficiaryDocumentNumber": "12345678901",
"beneficiaryStateProvince": "LIMA",
"correspondentBankName": "Bank of America",
"correspondentBankSwiftCode": "IRVTUS3NXXX",
"correspondentAccountNumber": "9876543210",
"bankAccountType": "checking",
"currencyCodes": [
"USD",
"EUR"
],
"aliasType": "TAX_ID",
"aliasValue": "12345678901",
"created": true
}Authorizations
API Key in Bearer format (e.g., Bearer sk_test_...)
Headers
API key
Body
Customer ID
"cust_abc123"
Full legal name of the account holder
"John Smith"
Payment rails this account supports.
Bank rails: ACH, SWIFT, SEPA, WIRE, FASTER_PAYMENTS, IMPS, NEFT, SPEI, etc.
Proxy rails: PIX, UPI, PROMPTPAY, DUITNOW (require aliasType + aliasValue)
Compatible bank rails can be combined on first create (e.g., a US account can support ["ACH", "ACH_SAME_DAY", "WIRE"]).
If a bank account with the same exact identifier set already exists, create returns that account without changing its rails — use PATCH to add compatible rails. Supplying a different identifier subset (e.g. IBAN only vs IBAN + SWIFT BIC) creates a new account. Proxy accounts dedupe by alias and rail, so the same alias on another proxy rail creates a new account.
ACH, ACH_SAME_DAY, WIRE, FED_NOW, RTP, EREBOR, EREBOR_RAIL, BALANCE, SWIFT, SEPA, SEPA_INSTANT, TIPS, FASTER_PAYMENTS, BACS, CHAPS, ELIXIR, NICS, EFT, INTERAC, NPP, BECS, UPI, IMPS, IMPS_WITH_FIRC, NEFT, RTGS, BI_FAST, ARTAJASA, PIX, TED, TEF, SPEI, COELSA, SINPE, CIPS, CFXPS, CHATS, ZENGIN, KFTC, FAST_SG, MEPS, DUITNOW, PROMPTPAY, INSTAPAY, PESONET, NAPAS, BEFTN, SLIPS, ZAHAV, GHIPSS, NIBSS, PESALINK, RTC_ZA, TZS_RTGS, EGP_ACH, JOD_ACH, NPSS, MADA, QPS, DOP_ACH, GTQ_ACH, HNL_ACH, PEN_ACH, JMD_ACH, USD_ACH_SV, USD_ACH_EC, CLP_TEF, PSE, COP_ACH, BOB_RTGS, PYG_ACH, CERTIS, DKK_TIPS, SENT, NKS, BANKGIROT, HKD_FPS, IBFT, TRY_FAST ["ACH", "WIRE"]
Correspondent/intermediary bank name
200"Bank of America"
Correspondent/intermediary bank SWIFT/BIC code (8 or 11 characters)
"IRVTUS3NXXX"
Correspondent/intermediary account number
64"9876543210"
Existing counterparty ID. When provided for a third-party bank account, known counterparty data can be reused.
"cp_abc123"
Beneficiary type (individual or business)
INDIVIDUAL, BUSINESS "INDIVIDUAL"
Whether the account holder differs from the customer (third-party payment). May require additional compliance checks.
false
Custom metadata for your application
Show child attributes
Show child attributes
{ "nickname": "Primary Business Account" }
Required for proxy rails. The type of alias identifier.
Supported alias types vary by rail:
- PIX (Brazil): phone, email, tax_id (CPF/CNPJ), random
- UPI (India): phone, random (VPA)
- PromptPay (Thailand): phone, national_id, tax_id
- DuitNow (Malaysia): phone, national_id (NRIC), corporate_id
- GhIPSS (Ghana): phone
- SINPE (Costa Rica): phone
Note: Both aliasType and aliasValue must be provided together.
PHONE, EMAIL, NATIONAL_ID, TAX_ID, RANDOM, CORPORATE_ID "TAX_ID"
Required for proxy rails. The alias value. Format depends on aliasType:
- phone: E.164 format (+5511912345678)
- email: Standard email format
- tax_id: Country-specific (Brazil CPF: 11 digits, CNPJ: 14 digits)
- national_id: Country-specific (Thailand: 13 digits, Malaysia NRIC: 12 digits)
- random: UUID format or provider-assigned key (e.g., UPI VPA like "user@upi")
Note: Both aliasType and aliasValue must be provided together.
Normalization: The value is normalized to lowercase and trimmed before storage. While some identifiers (e.g., UPI VPAs, emails) may display with mixed case, payment rails typically treat them as case-insensitive for routing.
"12345678901"
Beneficiary address.
Required for SWIFT and most international transfers. Optional for US ACH, same-day ACH, RTP, FedNow, and domestic wire at account create.
Street lines are limited to 35 characters for international wire compatibility. Put city, region, and postal code in their own fields — not in the street lines.
Show child attributes
Show child attributes
Beneficiary phone number in E.164 format
"+14155551234"
Account holder's date of birth. Required at payout time for individual beneficiaries on supported corridors.
"1990-01-31"
Bank name. Auto-enriched from routing codes (SWIFT/BIC, IFSC, sort code, etc.) if not provided. Required if enrichment is unavailable.
"JPMorgan Chase Bank"
Bank address. Auto-enriched from routing codes (SWIFT/BIC, IFSC, sort code, etc.) if not provided. Required if enrichment is unavailable.
Show child attributes
Show child attributes
SWIFT/BIC code (8 or 11 characters).
- SWIFT transfers: Always required
- SEPA: Optional (IBAN-only supported)
"CHASUS33"
IBAN (International Bank Account Number).
- SWIFT to EU/UK: Required (with swiftBic)
- SEPA/SEPA Instant: Required (swiftBic optional)
"DE89370400440532013000"
Bank account number or equivalent. Usage varies by country:
- US (ACH/Wire): Account number (with 9-digit routingNumber)
- UK (Faster Payments): 8-digit account (with 6-digit sort code in routingNumber)
- India (IMPS/NEFT): Account number (with 11 char IFSC in routingNumber)
- Mexico (SPEI): 18-digit CLABE (routingNumber not needed)
- Argentina (COELSA): 22-digit CBU (routingNumber not needed)
- Brazil (TED): Account number (with bank code in routingNumber)
"1234567890"
Bank routing code. This field adapts to country-specific identifiers:
- US: 9-digit ABA routing number
- CA: 8-9 digits (transit + institution)
- AU: 6-digit BSB
- UK: 6-digit sort code
- India: 11 character IFSC code
"021000021"
Bank branch code. Required for countries that use separate bank and branch identifiers:
- Japan: 3-digit branch code (used with 4-digit bank code)
- Brazil: 4-5 digit agency/branch number
- South Africa: 6-digit branch code
- New Zealand: 4-digit branch code
- Bolivia: 3-letter branch city code (e.g. LPZ, SCZ)
"001"
Type of the beneficiary's national/tax identification document. Required for payouts on rails whose clearing system carries the beneficiary document — the valid codes are rail-specific:
- Colombia (ACH): CC, NIT, CE, PA, PPT, TI, RC, TE, DIE, ND
- Chile (TEF): RUT, RUN, PAS, CE
- Paraguay (SIPAP): CI, PAS, CRP, CRC, RUC, DNI
- Peru (ACH): RUC, DNI, PAS, CE
Brazil (TED) and Bolivia take only beneficiaryDocumentNumber (Brazil infers CPF vs CNPJ from the digit count). Optional at creation; payouts on these rails fail without it.
"CC"
The beneficiary's national/tax identification document number (e.g. CPF/CNPJ digits for Brazil, cédula number for Colombia/Paraguay, RUT for Chile). Format is validated per rail at payout time. Optional at creation; payouts on rails that require it fail without it.
"12345678901"
The beneficiary's state/department/province, for rails whose clearing system requires it on payouts (Peru ACH, e.g. LIMA). Optional at creation; payouts on those rails fail without it.
"LIMA"
Bank account type (checking vs savings). Required for US ACH, and for payouts on rails whose clearing system carries it (e.g. Brazil TED, Colombia ACH, Chile TEF, Peru ACH) — accounts on those rails cannot receive payouts without it.
checking, savings "checking"
ISO 4217 currency codes this account can receive. If omitted, inferred from the payment rails. Can only be specified for Hong Kong (CHATS) or SWIFT payment rails.
["USD"]
Response
External account created, reused, or reopened successfully. Bank reuse preserves existing paymentRails (other create-only fields may backfill). Proxy reuse matches alias+rail. Check created on the body; bank responses also include paymentRails, proxy responses include paymentRail.
Account ID
"eba_1234567890abcdef"
Customer ID
"cust_abc123"
Account type
EXTERNAL_BANK, EXTERNAL_PROXY "EXTERNAL_BANK"
Account status
IN_REVIEW, ACTIVE, CLOSED "IN_REVIEW"
Beneficiary type
INDIVIDUAL, BUSINESS "INDIVIDUAL"
Beneficiary name
"John Smith"
Primary payment rail for this account
ACH, ACH_SAME_DAY, WIRE, FEDWIRE, FED_NOW, RTP, EREBOR, EREBOR_RAIL, BALANCE, SWIFT, SEPA, SEPA_INSTANT, TIPS, FASTER_PAYMENTS, BACS, CHAPS, ELIXIR, NICS, EFT, INTERAC, NPP, BECS, UPI, IMPS, IMPS_WITH_FIRC, NEFT, RTGS, BI_FAST, ARTAJASA, PIX, TED, TEF, SPEI, COELSA, SINPE, CIPS, CFXPS, CHATS, ZENGIN, KFTC, FAST_SG, MEPS, DUITNOW, PROMPTPAY, INSTAPAY, PESONET, NAPAS, BEFTN, SLIPS, ZAHAV, GHIPSS, NIBSS, PESALINK, RTC_ZA, TZS_RTGS, EGP_ACH, JOD_ACH, NPSS, MADA, QPS, DOP_ACH, GTQ_ACH, HNL_ACH, PEN_ACH, JMD_ACH, USD_ACH_SV, USD_ACH_EC, CLP_TEF, PSE, COP_ACH, BOB_RTGS, PYG_ACH, CERTIS, DKK_TIPS, SENT, NKS, BANKGIROT, HKD_FPS, IBFT, TRY_FAST "SWIFT"
Account creation date
"2026-01-15T10:00:00Z"
Account last update date
"2026-01-15T10:00:00Z"
Counterparty ID when this is a third-party recipient account
"cp_abc123"
Custom metadata for your application, including account nickname
Show child attributes
Show child attributes
All payment rails this account supports (bank accounts only)
ACH, ACH_SAME_DAY, WIRE, FEDWIRE, FED_NOW, RTP, EREBOR, EREBOR_RAIL, BALANCE, SWIFT, SEPA, SEPA_INSTANT, TIPS, FASTER_PAYMENTS, BACS, CHAPS, ELIXIR, NICS, EFT, INTERAC, NPP, BECS, UPI, IMPS, IMPS_WITH_FIRC, NEFT, RTGS, BI_FAST, ARTAJASA, PIX, TED, TEF, SPEI, COELSA, SINPE, CIPS, CFXPS, CHATS, ZENGIN, KFTC, FAST_SG, MEPS, DUITNOW, PROMPTPAY, INSTAPAY, PESONET, NAPAS, BEFTN, SLIPS, ZAHAV, GHIPSS, NIBSS, PESALINK, RTC_ZA, TZS_RTGS, EGP_ACH, JOD_ACH, NPSS, MADA, QPS, DOP_ACH, GTQ_ACH, HNL_ACH, PEN_ACH, JMD_ACH, USD_ACH_SV, USD_ACH_EC, CLP_TEF, PSE, COP_ACH, BOB_RTGS, PYG_ACH, CERTIS, DKK_TIPS, SENT, NKS, BANKGIROT, HKD_FPS, IBFT, TRY_FAST ["ACH", "ACH_SAME_DAY", "WIRE"]
Beneficiary address (bank accounts only)
Show child attributes
Show child attributes
Beneficiary phone number
"+12125551234"
Account holder's date of birth
"1990-01-31"
Bank name (bank accounts only)
"JPMorgan Chase Bank"
Bank address (bank accounts only)
Show child attributes
Show child attributes
SWIFT/BIC code (bank accounts only)
"CHASUS33"
IBAN (bank accounts only)
"GB82WEST12345698765432"
Bank account number (bank accounts only)
"1234567890"
Bank routing code (ABA routing number, sort code, BSB, IFSC, etc.)
"021000021"
Bank branch code (for countries like Japan, Brazil, South Africa that use separate branch identifiers)
"001"
Type of the beneficiary's national/tax identification document (rail-specific codes, e.g. CC/NIT for Colombia, RUT for Chile)
"CC"
The beneficiary's national/tax identification document number
"12345678901"
The beneficiary's state/department/province (rails that require it on payouts, e.g. Peru ACH)
"LIMA"
Correspondent/intermediary bank name (SWIFT)
"Bank of America"
Correspondent/intermediary bank SWIFT/BIC code (SWIFT)
"IRVTUS3NXXX"
Correspondent/intermediary account number (SWIFT)
"9876543210"
Bank account type (bank accounts only)
checking, savings "checking"
Supported currency codes
["USD", "EUR"]
Type of proxy alias (proxy accounts only)
PHONE, EMAIL, NATIONAL_ID, TAX_ID, RANDOM, CORPORATE_ID "TAX_ID"
The proxy alias value (proxy accounts only)
"12345678901"
Present on create responses. true = a new account was inserted. false = an existing account matched (bank: customer + the exact normalized identifier set supplied; proxy: customer + alias + rail) and was reused. For bank accounts, existing paymentRails are not updated by create — use PATCH to add rails; missing create-only fields may still be backfilled and conflicting values return 400. For proxy accounts, inspect paymentRail (proxies do not return paymentRails).
true
Was this page helpful?