Skip to main content
Version: 1.1.1

Token Transfer

Transfer tokens cross-chain in four steps: verify token support, estimate fees, send, and track.

StepCommandPurpose
1. Verifyget-supported-tokensCheck token support on the lane
2. Estimatesend --only-get-feeGet fee quote
3. Sendsend --transfer-tokensExecute transfer
4. TrackshowMonitor execution

You need RPC endpoints and a wallet configured. See Configuration.

Step 1: Verify Token Support

Check that your token is supported on the lane:

Bash
ccip-cli get-supported-tokens \
-n ethereum-testnet-sepolia \
-a 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59

Select a token to see its configuration, including rate limits and available capacity per destination. You can also query a specific token directly with -t <token-address>.

Step 2: Estimate Fee

Bash
ccip-cli send \
-s ethereum-testnet-sepolia \
-r 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59 \
-d ethereum-testnet-sepolia-arbitrum-1 \
--to 0xReceiverAddress \
-t 0xFd57b4ddBf88a4e07fF4e34C487b99af2Fe82a05=1.0 \
--only-get-fee

Add --fee-token LINK to get the fee in LINK instead of native token.

Step 3: Send Transfer

EVM to EVM

Bash
ccip-cli send \
-s ethereum-testnet-sepolia \
-r 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59 \
-d ethereum-testnet-sepolia-arbitrum-1 \
--to 0xReceiverAddress \
-t 0xFd57b4ddBf88a4e07fF4e34C487b99af2Fe82a05=1.0 \
--wallet ledger

EVM to Solana

Bash
ccip-cli send \
-s ethereum-testnet-sepolia \
-r 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59 \
-d solana-devnet \
--to <SOLANA_PROGRAM_ADDRESS> \
--token-receiver <SOLANA_TOKEN_ACCOUNT> \
--account <ACCOUNT_1> \
--account <ACCOUNT_2>=rw \
-t 0xToken=1.0 \
--wallet ledger

Solana to EVM

Bash
ccip-cli send \
-s solana-devnet \
-r <SOLANA_ROUTER> \
-d ethereum-testnet-sepolia \
--to 0xEvmAddress \
-t <SPL_TOKEN_MINT>=1.0 \
--wallet ledger

EVM to Sui

Bash
ccip-cli send \
-s ethereum-testnet-sepolia \
-r 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59 \
-d sui-testnet \
--to 0xSuiReceiverAddress \
--account 0xObjectId1 \
--account 0xObjectId2 \
-t 0xToken=1.0 \
--wallet ledger

See the send command reference for all options: token amount format, gas limit behavior, lane-specific parameters, and extra args. Extra args like blockConfirmations and ccvs (encoded as GenericExtraArgsV3) require CCIP v2+ lanes — check your lane version in the CCIP Directory.

Step 4: Track Transfer

Bash
ccip-cli show 0xTransactionHash

Add --wait to block until execution completes. You can also include --wait in the send command itself.

Troubleshooting

IssueSolution
Transfer stuckRate limiter may be depleted — wait for refill or reduce amount
Execution failedRetry with manual-exec --gas-limit
Token not supportedVerify with get-supported-tokens

See Debugging Failed Messages for the full debugging workflow.