Skip to main content
POST
Register a payout bank account
Requires scope: manage:pay-outs — see Required scopes. Allow-lists a beneficiary bank account so it can receive pay-outs. The owning party comes from the path, never the body.
This is the only endpoint that accepts raw rail credentials. The account number is KMS-encrypted at rest immediately on persistence and is never returned — this response and every read path expose only accountNumberLast4. The ABA routing number is a public bank identifier and is returned in full.
bankAddress is the beneficiary bank’s postal address, not the recipient’s. All components are required, and country must be a valid ISO 3166-1 alpha-2 code. The initial supported rail is US_ACH, which requires fiatCurrency: USD. A new account starts PENDING and becomes ACTIVE once activated for pay-outs. Next: pair it with a deposit asset by creating a payout route.

Errors

The codes this endpoint can return, in addition to the standard errors. Branch on code, never the message.

Authorizations

Path Parameters

partyId
string<uuid>
required

Unique party identifier

Body

application/json

Allow-lists a beneficiary bank account as a pay-out destination. The owning party comes from the path, never the body.

rail
enum<string>
required

The fiat rail a payout bank account settles over.

  • US_ACH — US ACH transfer. Requires fiatCurrency: USD.
Available options:
US_ACH
fiatCurrency
string
required

ISO 4217 currency. Must be consistent with the rail — US_ACH requires USD.

Maximum string length: 3
Example:

"USD"

label
string
required

Human-readable label for this destination

Maximum string length: 255
accountHolderName
string
required

Name on the beneficiary bank account

Maximum string length: 255
railDetails
object
required

Raw US-ACH rail credentials. Accepted only when registering a payout bank account.

bankName
string
required
Maximum string length: 255
bankAddress
object
required

Structured postal address of the beneficiary's bank — not the recipient's own address. All components are required on registration, and country must be a valid ISO 3166-1 alpha-2 code; anything missing or invalid yields 400 invalid-bank-address.

beneficiaryEmail
string<email>

Beneficiary contact email, forwarded to the payment provider as part of the Travel-Rule record. Optional for providers that do not require it, but some destinations are refused without both a beneficiary email and phone number, so supply both on every bank account you register.

When the email is omitted the beneficiary party's email is used as a fallback; the phone number has no such fallback and must be supplied on the bank account itself. A bank account cannot be edited after registration, so if the resolved email or the phone is missing, the route fails terminally with beneficiary-data-incomplete and the beneficiary has to be registered again.

Maximum string length: 255
Example:

"finance@acme.com"

beneficiaryPhoneNumber
string

Beneficiary contact phone in E.164 form (leading +, no spaces or punctuation). Same applicability as beneficiaryEmail. Forwarded to the payment provider verbatim and not normalised, so a non-E.164 number is rejected here rather than failing the route registration later.

Maximum string length: 16
Pattern: ^\+[1-9][0-9]{7,14}$
Example:

"+12125550123"

Response

Bank account registered (masked)

success
boolean

Indicates whether the request was successful

result
object

Masked view of an allow-listed payout bank account.