Overview
CCTP V2 supports fee-free Standard Transfers and fee-based Fast Transfers. Fees are charged in USDC and deducted from the transfer amount.Fee Structure
Standard Transfer
0 bps - No fee for all chains
Fast Transfer
1-14 bps - Varies by source chain
Fast Transfer Fees by Chain
Fees are denominated in basis points (bps), where 1 bps = 0.01%.| Source Chain | Fee (bps) | Fee (%) | Example (1000 USDC) |
|---|---|---|---|
| Ethereum | 1 bps | 0.01% | $0.10 |
| Arbitrum | 1 bps | 0.01% | $0.10 |
| Base | 1 bps | 0.01% | $0.10 |
| OP Mainnet | 1 bps | 0.01% | $0.10 |
| Linea | 14 bps | 0.14% | $1.40 |
| Instant Finality Chains | N/A | N/A | Fast Transfer not available |
Fees for Fast Transfer range from 1 to 14 basis points depending on the source chain. The SDK automatically queries the Iris API for current rates.
Fee Calculation
The SDK calculates the maximum fee (maxFee) automatically:
Key Points
- 1 bps safety buffer is added to handle rate fluctuations
- Minimum fee is 1 USDC unit (0.000001 USDC)
- maxFee parameter sets an upper bound on the fee charged
Fee API
The SDK queries Circle’s Iris API for real-time fee information:Fee Response Structure
Fee Examples
Example 1: Ethereum → Arbitrum (Fast Transfer)
Example 2: Linea → Base (Fast Transfer)
Example 3: Avalanche → Arbitrum (Standard Transfer)
Fee Fallback
If the Iris API is unavailable, the SDK uses a conservative fallback:Gas Fees
In addition to CCTP transfer fees, you’ll pay gas fees on both chains:- Source chain: Gas for
approve()(if needed) anddepositForBurn() - Destination chain: Gas for
receiveMessage()
Gas fees are paid in the native token of each chain (ETH, AVAX, MATIC, etc.), not USDC.
Optimizing Costs
Choose Standard Transfer when possible
Standard Transfer has no CCTP fee. Use it for:
- Non-time-sensitive transfers
- Transfers from instant finality chains
- Cost-sensitive applications
Batch transfers
Consolidate multiple small transfers into fewer large transfers to minimize gas overhead
Fee Recipients
Fees are collected by Circle and distributed to attesters and fee recipients configured in the TokenMessengerV2 contract:Cost Comparison
| Transfer Amount | Chain Route | Fast Transfer Fee | Standard Transfer Fee |
|---|---|---|---|
| 100 USDC | Ethereum → Arbitrum | $0.01 (1 bps) | $0.00 |
| 1,000 USDC | Ethereum → Arbitrum | $0.10 (1 bps) | $0.00 |
| 10,000 USDC | Ethereum → Arbitrum | $1.00 (1 bps) | $0.00 |
| 1,000 USDC | Linea → Base | $1.40 (14 bps) | $0.00 |
| 1,000 USDC | Avalanche → Arbitrum | N/A | $0.00 |
See Also
Transfer Types
Learn about Fast and Standard transfers
Supported Chains
View fee rates for all chains
Finality
Understand finality thresholds
IrisClient
GetTransferFees API reference