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 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

Discriminated by type: self_custody requires selfCustodyAttestation: true; third_party requires originatorDetails for travel-rule disclosure. Both values are lowercase and are matched exactly.

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,
tron,
stellar
address
string
required

On-chain destination address, in the encoding its chain uses: EVM chains (ethereum, base, polygon) take a 0x hex address and reject a mixed-case value whose EIP-55 checksum does not match; solana takes a base58 public key; tron a base58 address; stellar a G-prefixed key. An address that does not match its chain is rejected with INVALID_ADDRESS_FORMAT.

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

Id of the registered address. Each id has the form wra_ followed by 22 alphanumeric characters.

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

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

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

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

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

The registered address, echoed in the normalized form Conduit matches on (lowercase on EVM chains).

type
enum<string>
required

Who controls the address. self_custody means the customer owns it, and only a self_custody address unlocks a payout with purpose: intercompany. third_party means it belongs to another beneficial owner, described in originatorDetails; it clears an inbound transfer but never an intercompany payout.

Available options:
self_custody,
third_party
status
enum<string>
required

registered: screened and usable. pending_screening: screening is not finished, so an intercompany payout to the address is still refused, while an inbound transfer from it is held rather than sent back. suspended: blocked — do not retry, contact Conduit. revoked: cancelled with DELETE. A revoked address stops being usable, but Conduit can restore it on request, so do not treat this status as permanent.

Available options:
registered,
pending_screening,
suspended,
revoked
label
string | null
required

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

originatorDetails
object
required

Beneficial owner of a third_party address, disclosed at registration. Null on a self_custody address, where the customer is the owner.

selfCustodyAttestation
boolean | null
required

true when the customer attested that they own and control the address. Null on a third_party address.

attestedAt
string<date-time> | null
required

When the customer made the self-custody attestation. Null on a third_party address.

Example:

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

screenedAt
string<date-time>
required

When the address was screened.

Example:

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

createdAt
string<date-time>
required

When the address was registered.

Example:

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