This topic describes the v3 identity model. Identity Management v3 is recommended for new integrations.
A financial instrument represents the account or wallet details used to send or receive funds in a payment. While a payment identity describes who the party is, a financial instrument describes where the money goes — for example, a US ACH bank account, a SEPA IBAN, a PIX key, or a local bank payout rail.
Financial instruments are managed by the Identity Management v3 and are always associated with a specific identity. Each instrument specifies a payment rail (such as US_ACH, EU_SEPA, MX_SPEI, BR_PIX), a currency, and a rail-specific payload (routing codes, account numbers, IBANs, CLABE, PIX keys, and so on).
Identity Management v3 separates identities and instruments so that you can:
- Reuse a single KYC’d identity across different payout rails and currencies.
- Manage multiple bank accounts or payout methods for the same party.
- Rotate or replace accounts without duplicating identities or losing history.
In this topic, you’ll learn:
- How financial instruments relate to payment identities and the overall payment workflow.
- Which metadata fields apply to every financial instrument (such as
financialInstrumentType,currency,country, andlabel). - What rail-specific objects look like for common payout rails (for example,
usAch,euSepa,mxSpei,gbFps,brPix). - How one identity can have multiple financial instruments, enabling a single party to hold several bank accounts or payout rails.
- How to think about validation rules, corridor coverage, and best practices when modeling bank accounts and payout methods.
Financial instruments are scoped to identities:
- Each financial instrument belongs to exactly one identity.
- The instrument does not store personal details; it only stores account/wallet data.
- The identity’s
paymentRole(ORIGINATOR or BENEFICIARY) determines whether the instrument is used to fund or receive payments.
When building payments:
- The payment object references the identity and financial instrument by ID.
- The payment orchestration layer uses the financialInstrumentType to determine which payout rail to use (for example,
US_ACH,MX_SPEI). - Corridor-specific rules ensure that instrument type, currency, and corridor are compatible.
For details on the identity model, see Payment identities.
At a high level, a financial instrument consists of:
- Metadata describing the instrument (
type,currency,label, etc.). - A single rail-specific object (for example,
usAch,mxSpei,euSepa) that contains the account fields required for that rail.
Conceptual shape:
{
"financialInstrumentId": "3fc74743-e7f3-414a-9fcf-eb8c1d52356a",
"financialInstrumentType": "US_ACH",
"currency": "USD",
"label": "US bank account",
"country": "US",
"createdAt": "2025-10-01T18:46:47.430Z",
"updatedAt": "2025-10-01T18:46:47.430Z",
// one rail-specific object, depending on financialInstrumentType
"usAch": {
"bankName": "Bank of Example",
"bankRoutingNumber": "266231608",
"accountNumber": "60480",
"accountType": "CHECKING"
}
}Only one of the rail-specific objects (usAch, mxSpei, euSepa, and so on) is populated for a given instrument.
The following fields apply to every financial instrument, regardless of rail.
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| financialInstrumentId | string | Yes | Server-generated unique identifier for the financial instrument. Stable across all versions. | "3fc74743-e7f3-414a-9fcf-eb8c1d52356a" |
| financialInstrumentType | string | Yes | Payment rail used by this instrument. Values include US_ACH, US_FEDWIRE, MX_SPEI, EU_SEPA, GB_FPS, AFRICA_BANK_PAYOUT, BR_PIX, CO_PSE, BR_TED, CA_EFT. | "US_ACH" |
| currency | string | Yes | ISO 4217 currency code of the instrument (for example, USD, EUR, MXN). Must be compatible with the chosen rail and corridor. | "USD" |
| label | string | No | User-defined label to help your systems distinguish instruments (for example, by region or usage). | "US bank account" |
| country | string | No | Country code (ISO 3166-1 alpha-2) where the instrument is held or used. | "US" |
| createdAt | string | Yes | RFC 3339 timestamp when the instrument was created. | "2023-11-02T18:26:00.000Z" |
| updatedAt | string | Yes | RFC 3339 timestamp when the instrument was last updated. | "2023-11-03T18:26:00.000Z" |
When listing instruments, the API returns metadata only (no rail-specific fields) for each instrument.
To see full rail-specific details, retrieve the instrument by ID.
In Identity Management v3, an identity can have one or more financial instruments (bank accounts or other payout methods) attached to it. This allows you to keep a single, reusable KYC record for a party while managing multiple payout accounts and rails underneath that identity.
Identity vs financial instrument
- The identity describes who you are paying or collecting from:
identityType(INDIVIDUAL or BUSINESS)paymentRole(ORIGINATOR or BENEFICIARY)- PII fields such as names, addresses, registration documents, and contact details.
- The financial instrument describes how and where funds are delivered:
financialInstrumentType(for example, US_ACH, EU_SEPA, MX_SPEI, BR_PIX)currencyandcountry- Rail-specific fields such as routing numbers, IBANs, CLABE, PIX keys, and so on.
By separating these two concepts, you can reuse the same identity across different corridors, currencies, and payout rails without duplicating PII.
Each financial instrument is managed as a child resource of an identity:
- Create an identity
UsePOST /v3/identitiesto create the identity with its PII andinternalId. - Add one or more financial instruments
UsePOST /v3/identities/{identity-id}/financial-instrumentsto attach a new bank account or payout method to that identity.
You specify:financialInstrumentTypecurrency- The corresponding rail object (for example,
usAch,euSepa,mxSpei,brPix) with its required fields.
- List instruments for an identity
UseGET /v3/identities/{identity-id}/financial-instrumentsto see all instruments attached to an identity. The response returns a list of instruments with metadata (IDs, types, currencies, labels, timestamps). - Get details for a single instrument
UseGET /v3/identities/{identity-id}/financial-instruments/{financial-instrument-id}to retrieve full rail-specific details, such as account numbers and routing codes. - Update or deactivate instruments
- Use
PUTto update editable fields (for example, changing a label or updating a bank account number where allowed). - Use
DELETEto deactivate an instrument so it can no longer be used for new payments. Historical usage remains available for audit.
- Use
Deactivating an identity also deactivates its financial instruments and prevents them from being used in new payments.
Multiple financial instruments per identity are useful when:
- A single beneficiary uses multiple accounts
For example, a vendor in Mexico may want:- An MXN SPEI account for local MXN payouts (
MX_SPEI), and - A USD ACH account for USD payouts (
US_ACH).
- An MXN SPEI account for local MXN payouts (
- A corporate beneficiary has multi-currency accounts
For example, a business might maintain EUR SEPA, GBP FPS, and USD ACH accounts. All of these can live under the same BUSINESS BENEFICIARY identity, each as a separate financial instrument. - You rotate or replace accounts without duplicating identities
If a beneficiary changes their bank account, you can:- Add a new financial instrument,
- Switch new payments to the new instrument, and
- Deactivate the old instrument,while keeping the identity (and its history) intact.
- Use the
labelfield on financial instruments to make accounts easy to distinguish (for example, "operating-USD", "payroll-EUR", "MXN-SPEI-local"). - Avoid creating multiple identities for the same real-world party just to handle different bank accounts; prefer a single identity with multiple financial instruments.
- Use identity-level tags to express business segmentation (for example, ["vendor-emea", "high-value"]) and handle account-specific details at the financial instrument level.
The financialInstrumentType determines which rail-specific object is populated and what fields are required.
| Type | Description | Typical use | Common currency |
|---|---|---|---|
| US_ACH | U.S. Automated Clearing House batch processing network. | Domestic U.S. bank transfers (ACH/RTP-backed). | "USD" |
| US_FEDWIRE | U.S. Fedwire real-time gross settlement system for high-value domestic transfers. | High-value domestic USD bank transfers. | "USD" |
| MX_SPEI | Mexico’s real-time interbank transfer system (SPEI). | MX domestic bank payouts in MXN. | "MXN" |
| EU_SEPA | SEPA credit transfer rails for EUR-denominated payments across SEPA countries. | EUR bank payouts to SEPA-region accounts (IBAN). | "EUR" |
| GB_FPS | UK Faster Payments Service and CHAPS. | GBP payouts to UK bank accounts. | "GBP" |
| CA_EFT | Canada’s Electronic Funds Transfer system. | CAD payouts to Canadian bank accounts. | "CAD" |
| AFRICA_BANK_PAYOUT | Bank payout rails in supported African markets (for example, Ghana, Nigeria, Rwanda, Uganda, South Africa). | Local-currency payouts to bank accounts in Africa. | Varies by corridor |
| BR_PIX | Brazil’s instant payment platform (PIX) operated by the Central Bank of Brazil. | BRL payouts to PIX accounts using PIX keys. | "BRL" |
| CO_PSE | Colombia’s secure online banking payment system (PSE). | COP payouts to Colombian bank accounts over PSE. | "COP" |
| BR_TED | Brazil’s Electronic Funds Transfer (TED) system for higher-value transactions. | BRL payouts to Brazilian bank accounts over TED. | "BRL" |
Each instrument type is supported only for specific country–currency corridors.
For full corridor coverage, see Payout network.
This section summarizes the key fields for each bank-account-based instrument.
The usAch object is used when financialInstrumentType is US_ACH.
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| bankName | string | Yes | Name of the bank holding the account. | "Bank of Example" |
| bankRoutingNumber | string | Yes | 9-digit routing number (ABA Routing Transit Number). | "266231608" |
| accountNumber | string | Yes | Account number to be credited. | "60480" |
| accountType | string | Yes | Type of bank account. Values include CHECKING and SAVINGS. | "CHECKING" |
currencyis typicallyUSD.- Used for U.S. domestic payouts over ACH (and related real-time rails where applicable).
Financial instrument data is validated in two ways:
- Structural validation
- Identity Management v3 ensures required fields for the specified
financialInstrumentTypeare present. - Field patterns (length, character sets, IBAN/CLABE formats, routing formats, and so on) are enforced.
- Identity Management v3 ensures required fields for the specified
- Corridor compatibility
- Only certain combinations of instrument type, currency, and payout corridor are supported.
- If an instrument cannot be used for any corridor you’re enabled for, creation or updates may fail.
For detailed corridor-level rules and to understand which financial instrument type is required for a given payout, use: TBD
- To see how to create, update, list, and deactivate financial instruments using the API, continue with Create and manage financial instruments.
- To review how account details connect back to KYC data and specific payment roles, see Payment identities.