Add a payment method to a counterparty. The type field determines which fields are required:
us_bank — routingNumber, accountNumber, bankAccountTypeinternational_bank — iban, bic, bankNamesepa_bank — iban, bicfps_bank — sortCode, accountNumbercrypto_wallet — chain, walletAddressValidation: After creation, use POST .../validate to verify the payment method before first use. For UK FPS methods, this triggers Confirmation of Payee (CoP).
One counterparty, multiple methods: A counterparty can have payment methods across different rails. Reference the specific paymentMethodId when creating payments.
API key issued at onboarding. Passed as a Bearer token in the Authorization header: Authorization: Bearer <api-key>. Identifies the caller and determines organization scope. Invalid or revoked keys return 401 with error type authentication_error.
Ed25519 or RSA-SHA256 asymmetric signature over the request payload (ADR-0015). Provides request integrity and non-repudiation. The signature covers the HTTP method, path, query string, request body, and timestamp. Invalid signatures return 401 with error type authentication_error.
Unix timestamp (seconds) of when the request was signed. Server rejects requests where the timestamp drifts beyond +/-60 seconds from server time to prevent replay attacks. Must match the timestamp used in the signature computation.
Idempotency key for this request. UUID v4 recommended. Max 128 characters. 24-hour retention. Same key + same body replays original response with Idempotency-Replayed: true. Same key + different body returns 409 (code: duplicate_idempotency_key). Same key while the original request is still processing returns 409 with a Retry-After header (code: idempotency_key_in_flight).
128"550e8400-e29b-41d4-a716-446655440000"
Unique identifier of the counterparty (cpt_ prefix). Counterparty resource identifier.
^cpt_[A-Za-z0-9]+$"cpt_01953e1a5f4b7004"
US domestic bank account payment method (ACH/Wire/FedNow).
Payment method type discriminator.
us_bank ISO 4217 currency code for fiat (USD, EUR, GBP) or crypto asset ticker (USDC, BTC, ETH). Uppercase, 2-10 characters. Use this type in contexts where both fiat currencies and crypto assets are accepted.
^[A-Z]{2,10}$"USD"
ABA routing transit number (9 digits).
^\d{9}$Bank account number. Write-only; masked in responses.
Type of US bank account.
checking, savings Consumer-defined label.
100Name on the bank account.
200Consumer-defined key-value store. Available on all primary resources. Max 50 keys. Keys must match ^[a-zA-Z0-9_]{1,40}$. Values are strings (max 500 chars) or null.
Payment method created.
A reusable payment method attached to a counterparty. Discriminated on type for rail-specific fields. Replaces V2's inline rail details. Fields present depend on the type — see each field's description for which types include it.
Payment method resource identifier.
^pm_[A-Za-z0-9]+$"pm_01953e1a5f4b7300"
Counterparty resource identifier.
^cpt_[A-Za-z0-9]+$"cpt_01953e1a5f4b7004"
Type of payment method. Used as discriminator for type-specific fields.
us_bank, international_bank, crypto_wallet, open Lifecycle status of a payment method.
pending, active, rejected Currency of the payment method.
^[A-Z]{2,10}$"USD"
UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"
Consumer-defined label.
"Globex USD Operating"
Name on the account (us_bank, international_bank, sepa_bank, fps_bank).
"Globex Corporation"
Name of the bank (us_bank, international_bank).
"Chase"
ABA routing number (us_bank).
"021000021"
Last 4 digits of account number (us_bank, fps_bank).
^[0-9]{4}$Checking or savings (us_bank).
checking, savings IBAN (international_bank, sepa_bank).
"DE89370400440532013000"
SWIFT/BIC code (international_bank, sepa_bank).
"COBADEFFXXX"
Intermediary/correspondent bank SWIFT code (international_bank).
Address of the receiving bank (international_bank).
Blockchain network (crypto_wallet).
ethereum, solana, base, ink, sui On-chain wallet address (crypto_wallet).
"0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B"
Destination tag or memo for chains that require it, e.g. XRP, XLM (crypto_wallet).
Recipient's OPEN ID (@org.handle.currency), OpenFX customer ID (cus_), or account ID (acc_) for platform-internal OPEN payments.
Result of payment method validation (e.g., Confirmation of Payee, Verification of Payee). partial_match and no_match replace the deprecated mismatch value with legally significant granularity required under UK PSR regulations.
verified, partial_match, no_match, unverified, mismatch, unavailable, not_required, error UTC timestamp in RFC 3339 / ISO 8601 format.
"2026-02-23T12:00:00Z"