Skip to main content
The CCTP CLI provides commands for transferring USDC, resuming transfers, and managing configuration.

Command Structure

All commands follow this structure:
cctp [command] [flags]

Global Flags

These flags are available for all commands:
FlagTypeDescriptionDefault
--configstringPath to config file$HOME/.cctp/config.yaml
--testnetbooleanUse testnet instead of mainnetfalse
--keystorestringPath to Ethereum keystore directoryOS-specific default

Examples

cctp transfer --config ./my-config.yaml

transfer

Start a new cross-chain USDC transfer using the interactive TUI.

Usage

cctp transfer [flags]

Flags

FlagTypeDescriptionExample
--sourcestringSource chain nameethereum, arbitrum
--deststringDestination chain namebase, polygon
--amountstringAmount of USDC to transfer100, 1000.50
--recipientstringRecipient address0x742d35Cc...
--typestringTransfer type: fast, standard, or autoDefault: auto
All flags are optional. If not provided, the interactive TUI will prompt you for the required information.

Transfer Types

Automatically selects the best transfer type:
  • Uses Fast Transfer when available (non-instant finality source chains)
  • Uses Standard Transfer for instant finality source chains
cctp transfer --source ethereum --dest arbitrum --type auto
# Fast Transfer will be used (~8-20 seconds)

cctp transfer --source avalanche --dest ethereum --type auto
# Standard Transfer will be used (~8 seconds, instant finality)

Examples

# Launch TUI and enter all parameters interactively
cctp transfer

Chain Names

Use these exact names (case-sensitive) for the --source and --dest flags:
  • Ethereum
  • Avalanche (instant finality)
  • OP Mainnet
  • Arbitrum
  • Base
  • Polygon PoS (instant finality)
  • Unichain
  • Linea
  • Codex
  • Sonic (instant finality)
  • World Chain
  • Sei (instant finality)
  • XDC (instant finality)
  • HyperEVM (instant finality)
  • Ink
  • Plume
Instant finality chains only support Standard Transfer when used as source, but complete in ~8 seconds.
Use these exact names for testnet transfers (requires --testnet flag):
  • Ethereum Sepolia
  • Avalanche Fuji
  • OP Sepolia
  • Arbitrum Sepolia
  • Base Sepolia
  • Polygon PoS Amoy
  • Unichain Sepolia
  • Linea Sepolia
  • Codex Testnet
  • Sonic Testnet
  • World Chain Sepolia
  • Sei Testnet
  • XDC Apothem
  • HyperEVM Testnet
  • Ink Testnet
  • Plume Testnet
  • Arc Testnet

Interactive Flow

When you run cctp transfer, the TUI guides you through these steps:
1

Wallet Selection

If using keystore, select an account from available keystore files and enter password.
2

Source Chain

Select the source blockchain (where USDC will be transferred from).
3

Destination Chain

Select the destination blockchain (where USDC will be received).
4

Transfer Type

Choose Fast, Standard, or Auto transfer type. The CLI shows available options based on chain capabilities.
5

Amount & Recipient

Enter the amount of USDC to transfer and the recipient address.
6

Confirmation

Review all transfer details before confirming.
7

Execution

The CLI executes the transfer and displays real-time status updates.

resume

Resume an existing transfer using the burn transaction hash.

Usage

cctp resume [tx-hash] [flags]
The transaction hash can be provided as:
  • A positional argument: cctp resume 0x1234...
  • A flag: cctp resume --tx-hash 0x1234...
  • Interactive prompt: cctp resume (TUI will ask for tx hash)

Flags

FlagTypeDescription
--tx-hashstringBurn transaction hash to resume

Examples

cctp resume 0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

When to Use Resume

Use the resume command when:
  • Your terminal was closed during a transfer
  • The CLI crashed or was interrupted
  • You want to monitor the status of a previous transfer
  • Network issues caused the transfer to pause
The resume command fetches the transfer state from the blockchain and Circle’s attestation service, so you can resume from any point in the transfer process.

Finding Your Transaction Hash

You can find the burn transaction hash:
  1. From your wallet’s transaction history
  2. On a blockchain explorer (Etherscan, Arbiscan, etc.)
  3. From the CLI output during the initial transfer (look for “Burn transaction”)

version

Print the CLI version information.

Usage

cctp version

Example Output

INFO CCTP CLI version version=0.2.0

Why Check Version?

  • Verify successful installation
  • Confirm you’re running the latest version
  • Report version when filing bug reports
  • Check compatibility with SDK versions

help

Display help information for any command.

Usage

cctp help
cctp --help
cctp -h

completion

Generate shell completion scripts for faster command-line usage.

Usage

cctp completion [bash|zsh|fish|powershell]

Shell-Specific Setup

One-time setup (requires restart):
cctp completion bash > /etc/bash_completion.d/cctp
Current session only:
source <(cctp completion bash)
Permanent setup (add to ~/.bashrc):
echo 'source <(cctp completion bash)' >> ~/.bashrc

What Completion Provides

  • Command name completion: cctp tr<TAB>cctp transfer
  • Flag completion: cctp transfer --s<TAB>cctp transfer --source
  • Subcommand help: cctp <TAB> shows all available commands

Configuration Precedence

When you use multiple configuration sources, the CLI applies them in this order (highest to lowest priority):
  1. Command-line flags (e.g., --testnet, --keystore)
  2. Environment variables (e.g., CCTP_TESTNET=true)
  3. Configuration file (~/.cctp/config.yaml)
  4. Default values

Example Precedence

Config file (~/.cctp/config.yaml):
network: mainnet
keystore_path: ~/.ethereum/keystore
Environment variable:
export CCTP_TESTNET=true
Command:
cctp transfer --keystore /custom/path
Result:
  • testnet: true (env var overrides config)
  • keystore_path: /custom/path (flag overrides env and config)

Exit Codes

The CLI uses standard exit codes:
CodeMeaning
0Success
1General error (configuration, validation, etc.)
2User cancelled operation
Use exit codes in scripts:
cctp transfer --source ethereum --dest arbitrum
if [ $? -eq 0 ]; then
  echo "Transfer successful"
else
  echo "Transfer failed"
fi

Next Steps

Configuration

Learn how to set up config files and customize defaults

Quick Start

Complete tutorial from installation to first transfer

SDK Reference

Integrate CCTP into your application

Troubleshooting

Common issues and solutions

Build docs developers (and LLMs) love