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

# Supported routes

> Which assets can move in and out, from which chains, and who signs.

A route is one direction, one provider and one asset pair. Ask [`GET /v1/routes`](/api-reference/routes) for the live list: each row carries its CAIP IDs, minimum and maximum, funding modes, `available` flag and typical time.

| Route ID | Direction | From | To | Provider |
| - | - | - | - | - |
| `cctp-deposit` | Deposit | USDC on a CCTP EVM chain | USDC in the user's Stellar wallet | Circle CCTP |
| `usdt0-deposit` | Deposit | USDT0 on a USDT0 chain | USDC in the user's Stellar wallet | USDT0, then the Stellar DEX |
| `cctp-withdraw` | Withdraw | USDC on Stellar | USDC on a CCTP EVM chain | Circle CCTP |
| `usdt0-withdraw` | Withdraw | USDC on Stellar | USDT0 on a USDT0 chain | Stellar DEX, then USDT0 |
| `stellar-send` | Send | USDC on Stellar | USDC at another Stellar address | Native payment |

## CCTP chains

USDC deposits and withdrawals work on every CCTP EVM chain with native USDC: Arbitrum, Arc, Avalanche, Base, Codex, Cronos, EDGE, Ethereum, HyperEVM, Ink, Linea, Monad, Morph, OP, Pharos, Plasma, Plume, Polygon PoS, Sei, Sonic, Unichain, World Chain, X Layer and XDC. Circle's TokenMessengerV2 has the same address on every EVM mainnet, so one adapter serves all of them.

## USDT0 chains

USDT deposits and withdrawals use USDT0 on its native chains, including Ethereum, Arbitrum, Polygon, OP, Unichain, Ink, Monad, Sei, HyperEVM, Mantle, Plasma, Berachain, Morph and X Layer. On Stellar, USDT0 is converted to and from USDC on the Stellar DEX.

<Warning>
  USDT0 withdrawals to Ethereum are refused. The LayerZero fee from Stellar to Ethereum is above the per-transfer fee cap.
</Warning>

## Funding modes for deposits

| Mode | Who holds the funds | Who pays gas | Starts at |
| - | - | - | - |
| `deposit_address` | The user's Privy smart wallet, same address on every EVM chain | Pesa's paymaster on chains marked `sponsored` | `AWAITING_FUNDS` |
| `direct` | The user's own EVM wallet (MetaMask, Rabby, ...) | The user | `FUNDED` |

On a chain that is not sponsored, the app shows a warning on the deposit address. Funds sent there cannot be moved by the app and need a manual recovery.

## Not supported

Solana, Starknet, Sui and Aptos through CCTP (each needs its own adapter), and BNB Chain through CCTP.

## Chain identifiers

Chains use CAIP-2 (`eip155:8453`, `stellar:pubnet`). Assets use CAIP-19 on EVM chains and `stellar:CODE:ISSUER` on Stellar. Route rows are generated from the SDK's chain registry. Enabling a chain is a new registry row and a mainnet canary; it needs no code change.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.