Skip to main content
When you register a payment account, you send two objects:
  • accountDetails names the account: a kind, plus the fields that kind takes.
  • registrationInfo holds information about the account holder. Bank account routes need it. Wallets don’t.
The fields each one needs come from our configuration, not from a fixed schema, so they can change. Before you register, call Get registration requirements with the account’s kind, market and accountDetails.kind. It returns the exact fields the route needs, and the holder fields we don’t already have a verified value for. This page shows the kinds and fields we support today.

Account details

Send exactly the fields your kind takes. A missing field, or one the kind doesn’t take, returns 400 validation-error with a pointer for each field.

Registration info

Every value is a string. Which fields a route needs depends on the route and on whether the organization is personal or business. Bank account routes need accountHolderName and taxId, plus the personal or business fields on routes that ask for them. We fill a field from the organization’s verified identity when we have it, so you only need to send the fields that Get registration requirements lists in registrationInfo.missing. You may send other fields from this table: we check their format and ignore the ones the route doesn’t use. A field name that isn’t in this table returns 400 validation-error. A text value that contains <, >, ;, {, }, a backtick, |, \, $(, ../ or a control character returns 400 invalid-request.