Skip to main content
POST
Register an intercompany recipient for whitelisting

Authorizations

x-api-key
string
header
required

Headers

Idempotency-Key
string
required

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.

Required string length: 1 - 128
Pattern: ^[A-Za-z0-9_.:-]{1,128}$
Example:

"01J7B3K2X9M8N5P6Q7R8S9T0V1"

Path Parameters

customerId
string
required
Example:

"cus_1A2b3C4d5E6f7G8h9I0jKl"

Body

application/json
rail
enum<string>
required

US domestic bank recipient, identified by ABA routing + account number.

Available options:
us
routingNumber
string
required

ABA routing number (9 digits, checksum-validated).

accountNumber
string
required

US bank account number.

Required string length: 4 - 64
Pattern: ^[0-9]+$
relationship
enum<string>
required

Relationship between the customer and the recipient: self (the customer's own account) or group_entity (another entity in the customer's corporate group).

Available options:
self,
group_entity

Legal name of the account holder, or of the entity that controls the registered address.

Maximum string length: 255
evidenceDocumentIds
string[]
required

Ids of previously uploaded documents (doc_*) evidencing the intercompany relationship (e.g. ownership chart, bank statement). At least one is required.

Required array length: 1 - 100 elements
Pattern: ^doc_[0-9A-Za-z]{22}$
label
string

Optional human-readable label.

Maximum string length: 140

Response

id
string
required

Id of the whitelist recipient. Each id has the form wlr_ followed by 22 alphanumeric characters.

Pattern: ^wlr_[0-9A-Za-z]{22}$
customerId
string
required

Customer the recipient is registered against. Each id has the form cus_ followed by 22 alphanumeric characters.

Pattern: ^cus_[0-9A-Za-z]{22}$
rail
enum<string>
required

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.

Available options:
us,
swift,
sepa,
uk_domestic,
crypto
accountNumber
string | null
required

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.

routingNumber
string | null
required

ABA routing number, for us recipients. Null on every other rail.

sortCode
string | null
required

UK sort code (6 digits), for uk_domestic recipients. Null otherwise.

bic
string | null
required

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
string | null
required

IBAN, normalized (spacing and case). Null for us, uk_domestic and BIC-registered swift recipients.

chain
enum<string> | null
required

Blockchain network of the registered address, for a crypto recipient. Null on every bank rail.

Available options:
ethereum,
base,
solana,
polygon,
tron,
stellar
address
string | null
required

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
enum<string>
required

Relationship between the customer and the recipient: self (the customer's own account) or group_entity (another entity in the customer's corporate group).

Available options:
self,
group_entity
status
enum<string>
required

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.

Available options:
pending_review,
registered,
suspended,
revoked,
rejected
evidenceDocumentIds
string[]
required

Documents given at registration to evidence the relationship. Each id has the form doc_ followed by 22 alphanumeric characters.

Pattern: ^doc_[0-9A-Za-z]{22}$
label
string | null
required

Human-readable label given at registration. Null when none was given.

rejectionReason
string | null
required

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.

createdAt
string<date-time>
required

ISO 8601 timestamp

Example:

"2026-01-15T09:30:00.000Z"

updatedAt
string<date-time>
required

ISO 8601 timestamp

Example:

"2026-01-15T09:30:00.000Z"