Skip to main content

Overview

The CCTP Go SDK and CLI is a comprehensive toolkit for building cross-chain USDC transfers using Circle’s Cross-Chain Transfer Protocol (CCTP) V2. Whether you’re building a Go application or need a quick command-line tool, this package provides everything you need to move USDC seamlessly across 16 mainnet and 17 testnet EVM chains.

Key features

Importable Go SDK

Use CCTP functionality directly in your Go applications with a clean, type-safe API

Fast Transfer support

Complete transfers in ~8-20 seconds with Fast Transfer (small fee applies)

Standard Transfer support

Free transfers in ~13-19 minutes, or ~8 seconds on instant finality chains

18+ EVM chains

Support for all CCTP V2 EVM chains including Ethereum, Arbitrum, Base, Polygon, and more

Multiple wallet support

Works with Geth keystore files and private keys

Real-time tracking

Monitor transfer progress with detailed fee information and status updates

Beautiful terminal UI

Interactive CLI with a polished terminal user interface

V2 contract bindings

Type-safe Go Ethereum V2 contract bindings for all CCTP contracts

Supported chains

The SDK supports 16 mainnet chains and 17 testnet chains:
  • Ethereum (Domain 0)
  • Avalanche (Domain 1) - Instant finality
  • OP Mainnet (Domain 2)
  • Arbitrum (Domain 3)
  • Base (Domain 6)
  • Polygon PoS (Domain 7) - Instant finality
  • Unichain (Domain 10)
  • Linea (Domain 11)
  • Codex (Domain 12)
  • Sonic (Domain 13) - Instant finality
  • World Chain (Domain 14)
  • Sei (Domain 16) - Instant finality
  • XDC (Domain 18) - Instant finality
  • HyperEVM (Domain 19) - Instant finality
  • Ink (Domain 21)
  • Plume (Domain 22)
  • Ethereum Sepolia
  • Avalanche Fuji
  • OP Sepolia
  • Arbitrum Sepolia
  • Base Sepolia
  • Polygon PoS Amoy
  • Linea Sepolia
  • Arc Testnet
  • Unichain Sepolia
  • Codex Testnet
  • Sonic Testnet
  • World Chain Sepolia
  • Sei Testnet
  • XDC Apothem
  • HyperEVM Testnet
  • Ink Testnet
  • Plume Testnet

Transfer types

Fast Transfer

~8-20 seconds with a small fee (1-14 bps depending on source chain). Best for time-sensitive transfers. Available on most chains when used as source.
Not available when instant finality chains are the source

Standard Transfer

~13-19 minutes with no fee, or ~8 seconds on instant finality chains. Best for cost-sensitive transfers. Available on all chains.
Instant finality chains: Avalanche, Polygon PoS, Sei, Sonic, XDC, HyperEVM, Arc Testnet

Get started

Quickstart

Complete your first USDC transfer in minutes

Installation

Install the SDK and CLI tool

SDK guide

Learn how to use the SDK in your Go applications

CLI guide

Master the command-line interface

Package structure

The SDK is organized into clear, focused packages:
cctp-go/
├── client.go          # Iris attestation client
├── transfer.go        # Transfer orchestration
├── chains.go          # Chain configurations
├── contracts.go       # Contract interactions
├── cmd/
│   └── cli/           # CLI application
│       └── main.go
└── internal/          # CLI-specific code
    ├── config/
    ├── ui/
    └── wallet/

Prerequisites

  • Go 1.25.2 or later
  • For CLI usage: A wallet’s private key stored in Geth keystore

Next steps

1

Install the SDK

Follow the installation guide to add the SDK to your project or install the CLI tool.
2

Complete the quickstart

Run through the quickstart guide to execute your first transfer.
3

Explore the SDK

Dive into the SDK documentation to learn about all available features.

Build docs developers (and LLMs) love