Skip to main content
A destination is a typed target an account owns, with a stable destination_ id. The settlement profile is the one destination currently chosen, and every payment and deposit snapshots it at the moment that object is created.

List the account’s destinations

The list is cursor-paginated, takes limit from 1 to 100, and filters on type and status. resource is a privacy-safe projection of the linked wallet, bank account or rail identifier; provider tokens are never returned.

Only crypto wallets can receive settlement today

The list describes everything the account holds, not a menu of what is selectable. Every kind is normalised behind one settlementDestinationId, so a payment body never carries a wallet address, an account number or a currency. Every supported settlement chain can hold a crypto destination; see Supported regions and currencies.
A verified bank account cannot yet receive settlement. Verification confirms the recipient, but receiving settlement also needs the destination provider configured for that route, and it is not. Value collected for an account lands in stablecoin and nothing else.
A bank or rail destination returns settlementSupported: false with an unavailableReason such as bank_settlement_provider_not_configured, linked_bank_payout_execution_not_enabled or linked_bank_receive_settlement_not_enabled. Selecting one is refused with payment_method_not_supported and the message that fiat settlement is unavailable until the destination provider is configured and verified.

Offer a destination only when settlementSupported is true

Build your picker from capabilities.settlementSupported, not from status alone. A destination can be past its provider checks and still report settlementSupported: false with an unavailableReason. Selection fails closed on that flag rather than falling back to another destination.

Set the settlement profile

The body takes those two keys and nothing else. assetSymbol is optional and accepts USDC, USDT, THBT, JPYC or USDG: THBT is Movement-only, JPYC is Polygon-only and USDG is Robinhood Chain-only (4663). A native asset is never a destination. The response is the versioned profile:
  • Read status; don’t assume it. What moves a profile from draft to active is not stated in the contract, so do not build a promotion step around a guess.
  • A recipient needs an active profile. Naming an account whose profile is not active as a payment recipient is refused with a 409 conflict naming the account.
  • Repeats are safe. Repeating the same selection returns the existing profile rather than writing a new one.
  • Changes apply forward only. Payments already created and deposits already detected keep the destination captured at that moment.
  • No profile reads as null. GET /v2/accounts/{accountId}/settlement-profile returns { "settlementProfile": null } when nothing is selected. Design your settings screen around that state.

Override the destination for one payment

A receive payment can name a different eligible destination without touching the profile:
The override is snapshotted on that payment alone, and it still has to be an active crypto destination.

An account without a destination cannot receive value

Errors

account.updated fires when a destination is linked, changed or disabled. Treat it as a prompt to read the account.

Next: Webhooks

The event catalog, signature verification and delivery rules.