V1 deprecation
Circle is deprecating CCTP V1 to focus on the newer version, which is upgradable and provides a faster, more secure, and more robust crosschain experience across a wider network of blockchains.Naming changes
CCTP V2 is now referred to as CCTP (except in this document). The V1 version of CCTP is now CCTP V1 (Legacy).Deprecation timeline
CCTP V1 will be phased out over the course of 10 months beginning in July 2026. CCTP V2 contracts are available on all CCTP V1 chains except for Aptos, Noble, and Sui. Aptos and Sui will be supported by V2 before the phase out begins. Circle is working with Noble and Cosmos ecosystem teams on an intermediate solution to route USDC flows to and from Noble.Access to funds
You will not lose access to funds during the V1 phase out. All pending redemptions will remain available as CCTP V1 (legacy) begins its phase out. Circle will maintain minter allowances greater than the total of pending attestations, ensuring every redemption can be processed before V1 contracts are fully paused. The deprecation process is designed to wind down activity gradually, message limits will tighten over time until no new burns can be initiated, bringing transfer volume to zero before contracts are fully paused.Additional resources
In addition to this guide and Bridge Kit, you can contact the Circle team on the BuildOnCircle Discord for questions and migration support.Summary of breaking changes
The latest version of CCTP introduces architectural changes that make it incompatible with V1 integrations. You must update your implementation to use the new contracts, APIs, and transfer speeds. Additionally, the overall flow of the protocol has been streamlined, which means you need to update your integration to use the new functions.- Contracts are deployed at different addresses than V1 contracts. You should update your integration to point to the new contract addresses.
- Contract interfaces have changed. Importantly, the
depositForBurnfunction now takes additional parameters. You should update your integration to use the new ABIs and contract calls. - CCTP now allows you to specify a transfer speed. The
finalityThresholdparameter specifies whether the transfer should be a Fast Transfer or a Standard Transfer. - You no longer need to extract the message from the onchain transaction to
fetch an attestation. Instead, you can call the new
/v2/messages/{sourceDomainId}endpoint with the transaction hash to get the message and attestation in a single call. - API endpoints have changed. The new
/v2/endpoints have different functions than the old/v1/endpoints. You should update your integration to use the new endpoints. Review the CCTP API reference for details on the changes to the CCTP offchain API. - Fees have been introduced. Fast Transfer has a variable fee based on the source chain. You should update your integration to account for the new fees.
Migrating with Bridge Kit
Bridge Kit provides a simplified migration path by abstracting routine setup steps and standardizing bridging flows. This enables you to integrate bridging operations with minimal code.Benefits of using Bridge Kit
- No contract management: Bridge Kit handles contract addresses, ABIs, and function calls for you.
- No attestation polling: Automatically retrieves attestations without manual API calls.
- Built-in CCTP features: Access Fast Transfer and other capabilities through simple configuration.
- Type-safe interface: Compatible with
viemandethersfor safer development. - Fee collection: Optionally collect fees from transfers to monetize your application.
Example migration
Replace manual contract calls and API polling with a single Bridge Kit method:Changes to smart contracts
CCTP uses new smart contracts with different names, addresses, and interfaces. You must update your integration to use the new contracts and their new function signatures.Contract name and address changes
All legacy contracts have V2 equivalents deployed at new addresses:| Legacy contract | V2 contract | Documentation |
|---|---|---|
TokenMessenger | TokenMessengerV2 | V2 Interface |
MessageTransmitter | MessageTransmitterV2 | V2 Interface |
TokenMinter | TokenMinterV2 | V2 Addresses |
Message | MessageV2 | V2 Addresses |
Important: V2 contracts are deployed at different addresses than V1 contracts. See the CCTP Contract Addresses for the complete list of mainnet and testnet addresses.
TokenMessengerV2 changes
Modified functions:depositForBurn()now requires three additional parameters:destinationCaller(bytes32) - Address that can callreceiveMessageon destinationmaxFee(uint256) - Maximum fee for Fast Transfer in units of burn tokenminFinalityThreshold(uint32) - Minimum finality level (1000 for Fast, 2000 for Standard)
depositForBurnWithHook()- Enables custom logic execution on destination chain via hook datagetMinFeeAmount()- Calculates minimum fee for Standard Transfer (on supported chains only)
depositForBurnWithCaller()- UsedestinationCallerparameter indepositForBurn()insteadreplaceDepositForBurn()- No V2 equivalent available
Contract source code
Full contract source code is available on GitHub:- CCTP EVM Contracts - Main repository
- Contract ABIs - Interface definitions
API migration guide
CCTP streamlines the API workflow by combining message retrieval and attestation into single calls, while introducing new endpoints for features like Fast Transfer monitoring and re-attestation.Workflow changes
The API eliminates the need to extract the message emitted by the onchain transaction: Legacy workflow:- Get the transaction receipt from the onchain transaction
- Find the MessageSent event in the transaction receipt
- Hash the message bytes emitted by the MessageSent event
- Call
/v1/attestations/{messageHash}to get an attestation
- Call
/v2/messages/{sourceDomainId}with transaction hash or nonce to get message, attestation, and decoded data
Legacy workflow example
V2 workflow example
Endpoint migration mapping
| Legacy endpoint | V2 replacement | Migration notes |
|---|---|---|
GET /v1/attestations/{messageHash} | GET /v2/messages/{sourceDomainId}?transactionHash={hash} | Combined into messages endpoint with enhanced response |
GET /v1/messages/{sourceDomainId}/{transactionHash} | GET /v2/messages/{sourceDomainId}?transactionHash={hash} | Enhanced with decoded data and attestation |
GET /v1/publicKeys | GET /v2/publicKeys | Multi-version support, backward compatible |
New V2-only endpoints
V2 introduces additional endpoints for advanced features:| Endpoint | Purpose | Use case |
|---|---|---|
POST /v2/reattest/{nonce} | Re-attest messages for edge cases | Handle expired Fast Transfer burns or finality changes |
GET /v2/fastBurn/USDC/allowance | Monitor Fast Transfer allowance | Check remaining Fast Transfer capacity in real-time |
GET /v2/burn/USDC/fees/{sourceDomainId}/{destDomainId} | Get current transfer fees | Calculate fees before initiating transfers |