Overview
The deposit flow has four steps:- Create a session: server-side, with your API key
- Choose a payment method: client-side, with the client secret
- Wait for deposit: show the deposit address, poll for status
- Handle completion: process the result
Step 1: Create a session
Create a session on your server. Never expose your API key to the client.session.clientSecret and session.sessionId to your client.
Step 2: Choose a payment method
On the client, call the payment methods endpoint. This transitions the session fromrequires_payment_method to waiting_payment.
EVM deposit (any EVM chain):
receiverAddress in result.session.paymentMethod. Display this EVM address to the user - they send tokens to it from any supported chain.
tron.receiverAddress in result.session.paymentMethod, a temporary Tron address. Display it to the user so they can send USDT to it.
solana.serializedTx, a hex-encoded serialized Solana transaction for the user’s wallet to sign and submit.
This preserves a one-click wallet experience on Solana: swap and burn actions are bundled into one signed transaction. Unlike EVM and Tron, there is no receiverAddress for type: "solana".
Step 3: Wait for session completion
Poll for status updates to the session after the user has paid.txHash to speed up detection.
Step 4: Handle completion
Check for terminal statuses:succeeded- funds deliveredbounced- delivery failed (e.g. contract call reverted). Funds returned to refund address.expired- session timed out
succeeded and bounced case, destination.delivery.txHash refers to the settlement transaction.