Docs/Cross-Chain (CCTP)

Cross-Chain Payments

How Fivo handles payments across different blockchains automatically.

What is CCTP?

CCTP (Cross-Chain Transfer Protocol) is Circle's native protocol for moving USDC between blockchains. Unlike wrapped tokens or bridges, CCTP burns USDC on the source chain and mints native USDC on the destination chain - ensuring you always receive real, native USDC.

Key Benefits

  • Native USDC: No wrapped tokens - real USDC on every chain
  • Secure: Backed by Circle's attestation service
  • Fast: Typically completes in 2-5 minutes
  • Automatic: Fivo handles everything for you

When Does CCTP Activate?

CCTP is triggered automatically when:

Customer's payment chain ≠ Merchant's receiving chain

Example: Customer pays with USDC on Ethereum Sepolia, but merchant's wallet is on Polygon Amoy.

Same Chain (Instant)

Customer on Polygon → Merchant on Polygon

Direct transfer, no bridging needed

Cross Chain (CCTP)

Customer on Ethereum → Merchant on Polygon

CCTP burns & mints (~2-5 min)

How It Works

The entire process is handled automatically by Fivo. Here's what happens behind the scenes:

1

Burn on Source Chain

Customer approves USDC and calls depositForBurn() on Circle's TokenMessenger contract. USDC is burned and a message is emitted.

2

Attestation

Circle's attestation service verifies the burn transaction and generates a cryptographic attestation (signature) proving the burn occurred.

3

Fivo Polls for Attestation

Fivo's backend monitors the payment and polls Circle's API until the attestation is ready. This usually takes 1-3 minutes.

4

Mint on Destination Chain

Fivo automatically calls receiveMessage() on the destination chain's MessageTransmitter contract, minting USDC to the merchant.

Payment Complete

Native USDC is now in the merchant's wallet on their preferred chain. Payment status updates to "completed".

Supported Routes

CCTP supports transfers between all 6 Fivo-supported chains:

ChainNetworkCCTP DomainChain ID
EthereumSepolia011155111
AvalancheFuji143113
OptimismSepolia211155420
ArbitrumSepolia3421614
BaseSepolia684532
PolygonAmoy780002
i
Any combination of source → destination is supported. For example: Ethereum → Polygon, Arbitrum → Base, Avalanche → Optimism, etc.

CCTP Payment Status

Cross-chain payments have additional status fields you can check via the API:

Attestation StatusDescription
pending_attestationWaiting for Circle to attest the burn transaction
ready_to_mintAttestation received, preparing to mint
mintedSuccessfully minted on destination chain
failedAn error occurred (check failure_reason)

Timing

Same Chain Transfer

~15-30 sec

Just blockchain confirmation time

Cross Chain (CCTP)

~2-5 min

Burn + Attestation + Mint

!

Network Congestion

During periods of high network congestion, CCTP transfers may take longer (up to 15-20 minutes in extreme cases). The payment will still complete successfully - it just takes more time for attestation.

Costs

Cross-chain payments involve additional gas costs:

  • Source chain gas: Paid by customer for burn transaction
  • Destination chain gas: Paid by Fivo for mint transaction

The widget shows estimated gas costs before the customer confirms. Costs vary by chain - L2s like Arbitrum and Base are typically cheapest.

For Merchants

You don't need to do anything!

CCTP is fully automatic. Just set up your merchant wallet on your preferred chain, and Fivo handles all cross-chain complexity. Your customers can pay from any supported chain, and you'll receive native USDC on your chain.

i

Recommended Setup

For lowest fees, we recommend setting up your merchant wallet on an L2 like Polygon, Arbitrum, or Base. This minimizes the gas costs for cross-chain minting.

Learn More About CCTP

For technical details about Circle's Cross-Chain Transfer Protocol:

Circle CCTP Documentation