Skip to main content
A connected wallet is an address the account holds on one chain, where it can settle and send from. A payment handle is a permanent name that resolves to the account, so a sender never needs its address.

When to use them

Wallets and a handle can also be passed as wallets and handle on POST /v2/accounts, which provisions them in the same transaction. See Universal Payment Account.

The connected wallet

There is no wallet list endpoint: GET /v2/accounts/{accountId} returns the account’s wallets as connectedWallets.
To change only the payment source afterwards, use PUT /v2/accounts/{accountId}/payment-source; see Sending payments. To pick a different settlement destination, see Settlement destinations.

Ownership verification

Linking a wallet never verifies it, and the Partner API has no call that submits a proof. Partner-managed KYC treats a wallet address as verified information only when the wallet is verified. Show unverified to your users as exactly that.

The payment handle

The full address is handle@namespace, for example alice@partner.

Claim a handle

A handle is permanent. Each account gets one, it cannot be changed after assignment, and it is never released for reuse. Whatever your customer picks is final.

Resolve a handle

GET /v2/payment-handles/{handle} returns { accountId, paymentHandle }, where accountId is the account to use on account-scoped calls. An unknown handle returns 404 not_found. You can pay another partner’s qualified handle but cannot look it up first, so confirm it with your customer before sending. The resolved account comes back on the payment as destination.accountId; see Stablecoin transfers.

Public payment acceptance

paymentAcceptance on the account is { publicReceiveEnabled, version }. publicReceiveEnabled starts false. When it is true, payers can open the account’s public payment page by its qualified handle and create a receive payment to it from a browser.
Payers’ browsers read the page with GET /v2/public/payment-recipients/{paymentHandle} and create the payment with POST /v2/public/apps/{appId}/payments. Public send is never allowed.

The display profile

displayProfile on the account is { displayName, logoUrl, version }: the recipient identity payers see, separate from your app’s branding. Every payment copies it into recipientDisplay at creation, and a later update affects only future payments.
displayProfile can also be set on POST /v2/accounts.

Errors

Webhooks

Linking wallets, claiming a handle, and changing payment acceptance or the display profile each emit account.updated. The event says the account changed: read GET /v2/accounts/{accountId} for the current record. See Webhooks.

Universal Payment Account

The account wallets and handles attach to.

Settlement destinations

Choose which linked wallet collected value lands in.

Stablecoin transfers

Send to a wallet, an account or a handle, across partners.

Sending payments

Set a payment source and send from it.