> ## Documentation Index
> Fetch the complete documentation index at: https://docs.socket.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout

> Let users complete checkout or deposits with assets they already hold across supported chains.

Socket lets users complete checkout, deposits, and funding flows with the assets they already hold. Your app defines the required destination token and chain; Socket handles conversion, bridging, and delivery.

## 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

1. Your app requests a deposit quote with `userOps=deposit` (or `enableDepositAddress=true` for the legacy endpoint).
2. Socket returns a `depositData` object containing a unique deposit address, token, amount, and chain.
3. The user sends the specified token and amount to the deposit address.
4. Socket monitors the address, detects the deposit, and delivers the output token to `receiverAddress` on the destination chain.
5. Poll `/v3/swap/status` with the `quoteId` to 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.

<CardGroup cols={2}>
  <Card title="Deposit Address Guide" icon="code" href="/integrate/integration-guides/deposit-addresses">
    Full integration guide for the deposit flow
  </Card>

  <Card title="Chain Support" icon="link" href="/about/chain-support">
    See which chains are supported
  </Card>
</CardGroup>
