One of the biggest challenges in crypto payments is chain fragmentation. Your customer has USDC on Arbitrum, but your wallet is on Polygon. Traditionally, this means the customer can't pay you — or has to use a third-party bridge with extra fees and risk. Circle CCTP solves this.
What is CCTP?
Cross-Chain Transfer Protocol (CCTP) is an on-chain protocol built by Circle that enables native USDC transfers between blockchains. Unlike third-party bridges that use wrapped tokens, CCTP burns USDC on the source chain and mints fresh, native USDC on the destination chain. The result is a trustless, 1:1 transfer with no wrapped token risk.
How does CCTP work?
The CCTP flow has three stages: burn, attest, and mint. Here's what happens under the hood:
1. Burn (source chain)
The user calls depositForBurn() on the TokenMessenger contract on the source chain. This burns the specified amount of USDC and emits a message containing the burn details: amount, destination chain, and recipient address.
2. Attest (off-chain)
Circle's attestation service observes the burn event and, once confirmed, produces a signed attestation. This attestation is the cryptographic proof that the burn happened and authorizes the corresponding mint. Fivo's attestation poller checks for this attestation automatically.
3. Mint (destination chain)
Once the attestation is available, anyone can call receiveMessage() on the MessageTransmitter contract on the destination chain, passing the original message and the attestation. The contract verifies the signature and mints fresh USDC to the recipient.
Source Chain Circle Destination Chain
| | |
|-- depositForBurn() --> | |
| (burns USDC) | |
| |-- attestation ready --> |
| | |
| | <-- receiveMessage()--|
| | (mints USDC) |How Fivo uses CCTP
When a customer pays a Fivo merchant, the payment widget detects whether the customer's chain matches the merchant's receiving chain. If it doesn't, the widget automatically routes the payment through CCTP:
- Customer initiates a cross-chain payment through the Fivo widget
- Bridge Kit handles the burn on the source chain and attestation from Circle
- Bridge Kit automatically mints USDC on the destination chain
- USDC arrives directly in the merchant's wallet — no intermediaries
CCTP domains supported by Fivo
Fivo supports 9 CCTP-enabled EVM chains. Each chain has a unique CCTP domain identifier:
- Domain 0 — Ethereum
- Domain 1 — Avalanche
- Domain 2 — Optimism
- Domain 3 — Arbitrum
- Domain 6 — Base
- Domain 7 — Polygon
- Domain 10 — Unichain
- Domain 11 — Linea
- Domain 13 — Sonic
CCTP limitations
- USDC only — CCTP currently supports USDC. EURC payments are same-chain only.
- Attestation time — Circle attestation typically takes 30-90 seconds. Bridge Kit handles this automatically.
- Gas on destination — Bridge Kit handles gas management on the destination chain automatically.
Why CCTP matters for merchants
Without CCTP, merchants would either need to deploy wallets on every chain (complex and expensive) or restrict customers to a single chain (limits your audience). CCTP lets you accept payments from customers on any chain while receiving funds on your preferred chain. It's the key technology that makes multi-chain payments practical.
Want to learn more? Read the CCTP technical documentation or create a merchant account to see it in action.