Checkout with Socket
Socket works as a checkout layer when the destination app needs one asset, but users may arrive with many different assets across many networks:- Pay with existing assets: Let users start from supported tokens on supported chains instead of forcing a manual pre-fund step.
- Conversion and delivery: Route the user’s input into the token and chain your app needs.
- Deposit address UX: Give users a unique address for simple “send funds here” flows.
- Higher completion: Keep users inside the checkout or deposit flow instead of sending them to bridge, swap, or fund elsewhere.
Who this is for
Use checkout when users need to pay, deposit, subscribe, fund an account, or enter an app with assets that are not already on your destination chain.How the deposit flow works
- Your app requests a deposit quote with
userOps=deposit(orenableDepositAddress=truefor the legacy endpoint). - Socket returns a
depositDataobject containing a unique deposit address, token, amount, and chain. - The user sends the specified token and amount to the deposit address.
- Socket monitors the address, detects the deposit, and delivers the output token to
receiverAddresson the destination chain. - Poll
/v3/swap/statuswith thequoteIdto track completion.
Supported chains
The deposit flow supports:- All EVM chains (Ethereum, Arbitrum, Base, Optimism, Polygon, and more)
- Tempo
- Solana
- Tron (USDT0 OFT chains → USDT on Tron only)
- Stellar (Base USDC ↔ USDC on Stellar only)
When to use deposit addresses
Deposit addresses are ideal when:- The user does not have a wallet on the destination chain.
- You want to accept funds from non-EVM chains (Tron, Solana, etc.).
- You need a simple “send to this address” UX without requiring the user to approve a smart contract.
Deposit Address Guide
Full integration guide for the deposit flow
Chain Support
See which chains are supported