Overview
Cashmere has no/transfer REST endpoint. Transfers happen on-chain, from the sender’s own wallet, with a fee quote from the Gas API. The Cashmere Agent SDK does every step below in one call.
- Get a quote from
/getEcdsaSig_native(EVM) or/getEd25519Sig_native(Solana, Aptos, Sui). - Fill the contract parameters with it.
- Call the Cashmere contract on the source chain.
- Track the transfer with
/transactionsmainnetuntil the destination mint succeeds.
Step-by-Step (EVM)
Take the addresses from Contract Addresses and the ABI from Smart Contracts.- 1. Quote
- 2. Prepare Params
- 3. Send Tx
Bridging into Solana?
recipient must be the destination wallet’s USDC associated token account, and solanaOwner the wallet itself, both as 32 bytes. See Recipient Encoding.Step-by-Step (Solana)
- Request a quote with
localDomain=5andversion=2. - Encode the recipient as 32 bytes (see Recipient Encoding).
- Build an
Ed25519Program.createInstructionWithPublicKeyinstruction from the quote’spublicKey,messageandsignature, and place it right beforetransfer_v2. - Call
transfer_v2with the quote’sfeeanddeadlineunchanged,max_feefrom Circle Iris andmin_finality_threshold = 2000.
transfer_v2_outer) and Sui (prepare_deposit_for_burn_v2) take the same quote fields: see Aptos and Sui.
Permit Variants
- On EVM,
transferV2WithPermittakes an EIP-2612PermitParamsstruct in place of a separateapprove. Sign the permit locally, then call the contract with the same quote. - Solana, Aptos and Sui have no approval step: the sender signs the transaction that moves the USDC.
Monitoring Settlement
receive_amount, relayer_fee and destination_tx_hash for dashboards and reconciliation: see Analytics.
Common Pitfalls
- Signature mismatch:
isV2,isNativeand both domains must match the call you make. - Empty hook data: pass
hookData: '0x00'. Circle reverts V2 burns whose hook data is0x. - Allowance errors: approve
amountUSDC beforetransferV2, or use the permit variant. - Native fee shortfall: with
isNative=true, send at leastfeewei asmsg.value. - Expired deadline: request a fresh quote if the transaction isn’t sent within about 100 seconds.
- Wrong recipient format: CCTP accepts any 32 bytes, so a mistake can’t be fixed after the burn. An EVM address sent to Aptos or Sui mints to an account nobody controls, and into Solana the recipient must be the USDC token account.