Skip to main content
POST
Register a wallet address for a customer

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 cached response is returned for 5 minutes on any retry with the same key from the same API principal. Required on every state-changing money-moving or resource-creating POST.

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

Path Parameters

customerId
string
required

Body

application/json

Discriminated by type: SELF_CUSTODY requires selfCustodyAttestation: true; THIRD_PARTY requires originatorDetails for travel-rule disclosure.

type
enum<string>
required

Self-custody attestation: the customer signs that the wallet is owned and controlled by them, not a third-party VASP. Requires selfCustodyAttestation: true.

Available options:
self_custody
chain
enum<string>
required

Blockchain network of the address. Lowercase on the wire (e.g. ethereum, polygon).

Available options:
ethereum,
base,
solana,
polygon,
arbitrum,
optimism,
avalanche,
tron,
stellar,
bsc,
bitcoin
address
string
required

On-chain destination address.

Required string length: 1 - 255
selfCustodyAttestation
enum<boolean>
required

Must be exactly true on a self_custody registration. The literal opts the customer into the self-custody attestation; any other value (including absence) is rejected.

Available options:
true
label
string

Optional human-readable label.

Maximum string length: 255

Response

id
string
required
Pattern: ^wra_[0-9A-Za-z]{22}$
customerId
string
required
Pattern: ^cus_[0-9A-Za-z]{22}$
chain
enum<string>
required
Available options:
ethereum,
base,
solana,
polygon,
arbitrum,
optimism,
avalanche,
tron,
stellar,
bsc,
bitcoin
address
string
required
type
enum<string>
required
Available options:
self_custody,
third_party
status
enum<string>
required
Available options:
registered,
pending_screening,
suspended,
revoked
label
string | null
required
originatorDetails
object
required
selfCustodyAttestation
boolean | null
required
attestedAt
string<date-time> | null
required

ISO 8601 timestamp

Example:

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

screenedAt
string<date-time>
required

ISO 8601 timestamp

Example:

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

createdAt
string<date-time>
required

ISO 8601 timestamp

Example:

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