Register an intercompany recipient for whitelisting
Registers an intercompany counterparty for this customer: a bank recipient on the us, swift, sepa or uk_domestic rail, or a group entity’s on-chain wallet on the crypto rail. The crypto rail takes relationship group_entity only — register the customer’s own wallet as a self_custody entry under wallets/registered-addresses instead. The entry starts in pending_review; compliance review outcomes are signalled via whitelist_recipient.* webhooks. Only registered entries satisfy purpose=intercompany payouts. A uk_domestic entry is refused with 503 RAIL_UNAVAILABLE until the UK payout route is open in this environment. Identical resubmissions return the existing entry. Resubmitting the same recipient details with different attributes (name, relationship, documents) returns 409 WHITELIST_RECIPIENT_CONFLICT.
Authorizations
Headers
Caller-generated unique key that lets the server safely replay this request. The original response is returned for 30 days on any retry with the same key from the same organization. Required on every state-changing money-moving or resource-creating POST.
1 - 128^[A-Za-z0-9_.:-]{1,128}$"01J7B3K2X9M8N5P6Q7R8S9T0V1"
Path Parameters
"cus_1A2b3C4d5E6f7G8h9I0jKl"
Body
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
US domestic bank recipient, identified by ABA routing + account number.
us ABA routing number (9 digits, checksum-validated).
US bank account number.
4 - 64^[0-9]+$Relationship between the customer and the recipient: self (the customer's own account) or group_entity (another entity in the customer's corporate group).
self, group_entity Legal name of the account holder, or of the entity that controls the registered address.
255Ids of previously uploaded documents (doc_*) evidencing the intercompany relationship (e.g. ownership chart, bank statement). At least one is required.
1 - 100 elements^doc_[0-9A-Za-z]{22}$Optional human-readable label.
140Response
Id of the whitelist recipient. Each id has the form wlr_ followed by 22 alphanumeric characters.
^wlr_[0-9A-Za-z]{22}$Customer the recipient is registered against. Each id has the form cus_ followed by 22 alphanumeric characters.
^cus_[0-9A-Za-z]{22}$How the recipient is identified. us: ABA routing number plus account number. swift: BIC plus an IBAN, or plus an account number for banks in countries without IBAN. sepa: IBAN alone. uk_domestic: sort code plus account number. crypto: chain plus on-chain address, and the five bank fields are all null. Switch on the value rather than assuming the set is closed.
us, swift, sepa, uk_domestic, crypto Bank account number, normalized (spaces and dashes stripped) — us, uk_domestic, or swift recipients registered by BIC + account number. Null for IBAN-registered recipients and on crypto.
ABA routing number, for us recipients. Null on every other rail.
UK sort code (6 digits), for uk_domestic recipients. Null otherwise.
BIC of the recipient bank (canonicalized to the 11-character form), for swift recipients registered by BIC + account number. Null on us, uk_domestic, sepa and crypto — for IBAN-registered recipients the IBAN alone is the matched identity, so supply the bank's BIC yourself when creating a payout.
IBAN, normalized (spacing and case). Null for us, uk_domestic and BIC-registered swift recipients.
Blockchain network of the registered address, for a crypto recipient. Null on every bank rail.
ethereum, base, solana, polygon, tron, stellar On-chain destination address as submitted, trimmed, for a crypto recipient. Matching is case-insensitive where the chain is, so compare through your own normalization rather than by string equality. Null on every bank rail.
Legal name of the account holder, or of the entity that controls the registered address.
Relationship between the customer and the recipient: self (the customer's own account) or group_entity (another entity in the customer's corporate group).
self, group_entity pending_review: submitted and awaiting review. registered: approved, so a payout with purpose: intercompany may target this account. rejected: declined, with the detail in rejectionReason; register again with corrected details to start a new review. suspended: blocked for now, so new payouts to it are refused. revoked: cancelled, and terminal. Outcomes arrive on the whitelist_recipient.* webhooks — listen for those rather than polling.
pending_review, registered, suspended, revoked, rejected Documents given at registration to evidence the relationship. Each id has the form doc_ followed by 22 alphanumeric characters.
^doc_[0-9A-Za-z]{22}$Human-readable label given at registration. Null when none was given.
Free text from the reviewer explaining why the registration was declined. Set when status is rejected, null otherwise. Written for a person to read, so do not branch on it.
ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"
ISO 8601 timestamp
"2026-01-15T09:30:00.000Z"