Skip to main content
POST
Generate deposit wallet
Creates (or returns) the unique one-time deposit address for a checkout session on the selected chain, and links it to the payment. The hosted checkout calls this for the customer — you only need it if you’re building your own checkout UI.

Behavior notes

  • Idempotent — calling it again for the same payment + chain returns the existing address (200).
  • The payer chooses chain (solana | sui) and coin_symbol (USDC | USDT, default USDC).
  • For live payments the address is registered for chain monitoring right away (Solana via webhook, Sui via listener); test payments skip external calls by design.
  • Expired payments are refused with 410 Payment has expired — surface your own timer from expires_at instead of letting customers hit this.
Payment-link asset lock. A session created from a payment link is pinned to that link’s chain and asset. Requesting anything else returns 409 with "code": "ASSET_LOCKED" and the allowed chain / coin_symbol in the payload — re-request with those values.
409 — asset locked

Authorizations

x-api-key
string
header
required

Path Parameters

id
string<uuid>
required

Body

application/json
chain
enum<string>
required

Settlement chain for this payment.

Available options:
solana,
sui
Example:

"solana"

coin_symbol
enum<string>
default:USDC

Stablecoin the customer will pay with.

Available options:
USDC,
USDT

Response

Deposit address (existing one if already generated)