Developers
Transfer funds

Transfer USDC

Initiate a transfer

To get started with CCTP, call depositForBurn (opens in a new tab) from any of the following contracts:

ChainDomainContract address
Ethereum00x598e338581e69BE32BCead94F1476FF301b8b0DF
Avalanche10x598e338581e69BE32BCead94F1476FF301b8b0DF
Optimism20x598e338581e69BE32BCead94F1476FF301b8b0DF
Arbitrum30x598e338581e69BE32BCead94F1476FF301b8b0DF
Noble4N/A
Base60x598e338581e69BE32BCead94F1476FF301b8b0DF
Polygon70x598e338581e69BE32BCead94F1476FF301b8b0DF

Once the transfer is initiated, our relayer network will listen for burns and automatically mint them on the destination chain.

Track a transfer

For convenience, bridges can be tracked via our trace api.

Example: https://cctp.money/api/trace?txHash=27F8C932754EBB2128F0BAAC8FE22029F25E2AE9D690989CF095AC416720FB97&sourceDomain=4 (opens in a new tab)

Response

{
  "burn": {
    "tx_hash": "27F8C932754EBB2128F0BAAC8FE22029F25E2AE9D690989CF095AC416720FB97",
    "tx_hash_link": "https://mintscan.io/noble/tx/27F8C932754EBB2128F0BAAC8FE22029F25E2AE9D690989CF095AC416720FB97",
    "from": "noble1rn9czteg7n9htyzs4nee88p2gprnntuc5z79y5",
    "amount": 54000000,
    "destination_domain": 6
  },
  "attestation": {
    "status": "complete",
    "nonce": 86996,
    "attestation": "0xd9de3f4577a26247c8df0ae4b7c6c2ec6316429ebdf512cf49b9122d599c0439552b357f81bd4f58d6ba4b87629894356a41a4ee143097974bc940eb6765e0b41b32b10597ad838a9aa541cab8b24aa6a9cdd7dbce225d2fcd47b18e0d92c260820b84a35dc3ddbd2dc0e7633162bb6aee1131d771a2ad03c96f718eb6c7c409e61b",
    "attestation_link": "https://iris-api.circle.com/v1/messages/4/27F8C932754EBB2128F0BAAC8FE22029F25E2AE9D690989CF095AC416720FB97"
  },
  "mint": {
    "tx_hash": "0xb954d4758a7ea6cd4110e52ed1864a56fc3f814f874cbc654f17b729ff98aae7",
    "tx_hash_link": "https://basescan.org/tx/0xb954d4758a7ea6cd4110e52ed1864a56fc3f814f874cbc654f17b729ff98aae7",
    "mint_recipient": "0xA8FdaC13f96A9eA6431533f6369F1AF1994cA4dd",
    "mint_recipient_link": "https://basescan.org/tx/0xA8FdaC13f96A9eA6431533f6369F1AF1994cA4dd"
  }
}

Manually mint

While rare, a transfer can get stuck in the ATTESTATION_FOUND state and fail to mint due to variable chain and network conditions.

To manually mint, simply call receiveMessage on the destination chain with the msg_sent_bytes and attestation from the API response.