Skip to main content

Overview

CCTP Go SDK supports three transfer types, each optimized for different use cases based on speed and cost requirements.

Transfer Types

Fast Transfer

~8-20 seconds with a small fee (1-14 bps)

Standard Transfer

~13-19 minutes with no fee (or ~8 seconds for instant finality chains)

Fast Transfer

Fast Transfer provides the fastest cross-chain USDC transfers at the cost of a small fee. Key characteristics:
  • Speed: ~8-20 seconds
  • Fee: 1-14 basis points (0.01%-0.14%) depending on source chain
  • Finality threshold: 1000
  • Availability: Not available when instant finality chains are the source
params := &cctp.TransferParams{
    SourceChain:      sourceChain,
    DestChain:        destChain,
    Amount:           amount,
    RecipientAddress: recipient,
    TransferType:     cctp.TransferTypeFast, // Fast Transfer
    Testnet:          false,
}

Standard Transfer

Standard Transfer is the default mode with no fee, suitable for cost-sensitive transfers. Key characteristics:
  • Speed: ~13-19 minutes for most chains, ~8 seconds for instant finality chains
  • Fee: No fee (0 bps)
  • Finality threshold: 2000
  • Availability: Available on all chains
params := &cctp.TransferParams{
    SourceChain:      sourceChain,
    DestChain:        destChain,
    Amount:           amount,
    RecipientAddress: recipient,
    TransferType:     cctp.TransferTypeStandard, // Standard Transfer
    Testnet:          false,
}

Auto Mode

Auto mode automatically selects the best transfer type based on the source chain capabilities. Selection logic:
  • Instant finality chains (Avalanche, Polygon PoS, Sonic, Sei, XDC, HyperEVM) → Standard Transfer
  • Other EVM chains → Fast Transfer
params := &cctp.TransferParams{
    SourceChain:      sourceChain,
    DestChain:        destChain,
    Amount:           amount,
    RecipientAddress: recipient,
    TransferType:     cctp.TransferTypeAuto, // Auto-select
    Testnet:          false,
}

Comparison

AspectFast TransferStandard Transfer
Speed~8-20 seconds~13-19 minutes (or ~8 seconds for instant finality)
Fee1-14 bpsNo fee
Finality Threshold10002000
AvailabilityMost chainsAll chains
Best ForTime-sensitive transfersCost-sensitive transfers

Fee Structure

Fast Transfer fees vary by source chain:
// Fee calculation from transfer.go:263-286
var maxFee *big.Int
if feeBps > 0 {
    // Add 1 bps buffer for fee fluctuations
    feeWithBuffer := big.NewInt(int64(feeBps + 1))
    maxFee = new(big.Int).Mul(amount, feeWithBuffer)
    maxFee = maxFee.Div(maxFee, big.NewInt(10000))
    // Ensure minimum of 1 unit
    if maxFee.Cmp(big.NewInt(0)) == 0 {
        maxFee = big.NewInt(1)
    }
} else {
    // Standard Transfer with no fee
    maxFee = big.NewInt(1)
}

Fee Examples by Chain

  • Ethereum, Arbitrum, Base, OP Mainnet: 1 bps (0.01%)
  • Linea: 14 bps (0.14%)
  • Polygon PoS, Avalanche, Sonic: Standard Transfer only (no fee)
The SDK automatically queries the Iris API for current fee rates and includes a 1 bps safety buffer.

Choosing the Right Type

1

Use Fast Transfer when

  • Time is critical (e.g., trading, arbitrage)
  • The fee is acceptable for your use case
  • Source chain is not an instant finality chain
2

Use Standard Transfer when

  • Cost is the priority
  • You can wait 13-19 minutes
  • Source chain has instant finality
3

Use Auto mode when

  • You want the SDK to choose optimally
  • Building a general-purpose application

See Also

Supported Chains

View all supported chains and their capabilities

Finality

Learn about finality thresholds

Fees

Detailed fee calculation

Transfer Orchestrator

API reference for executing transfers

Build docs developers (and LLMs) love