Skip to main content

Which Path?

With the SDK

Requires Node.js 22 or later.
Destination minting is automatic: Cashmere’s relayers mint the USDC to the recipient once the source transaction confirms.

Without the SDK (EVM)

You need an RPC endpoint and a wallet holding USDC and some gas on the source chain, plus the addresses from Contract Addresses. No API key is required.
The quote is valid for about 100 seconds. Its fee and deadline are signed: pass them unchanged.
Units
amount and maxFee are USDC base units (6 decimals). The quote’s fee is USDC base units when isNative=false, and otherwise the source chain’s smallest native unit: wei on EVM chains (18), lamports on Solana (9), MIST on Sui (9), octas on Aptos (8).

Without the SDK (Solana)

  1. Request the quote from /getEd25519Sig_native with localDomain=5 and version=2. Always pass version: without it the signed message has no version byte and the program rejects it.
  2. Encode the recipient as 32 bytes (see Recipient Encoding).
  3. Put an Ed25519Program instruction with the quote’s publicKey, message and signature right before transfer_v2, in one VersionedTransaction that uses the Cashmere lookup table 865YCTTsymGpBjLMTvjd3T3RCGT8yvxnAHhyKZqRFfLi.
  4. Pass the quote’s fee and deadline unchanged, max_fee from Circle Iris and min_finality_threshold = 2000 (Solana sends V2 Norm).
The full transaction is in Smart Contracts → Solana.

Without the SDK (Aptos)

  1. Request the quote with localDomain=9 and version=2.
  2. Call transfer_v2_outer on 0xe49afb1896889e3e1dd7bcbb9e31d1df8221899d3d368e98588ac6b4d84b136d::transfer with the quote’s fee and deadline, max_fee from Circle Iris, min_finality_threshold = 2000 and the signature as a byte array.
The full payload is in Smart Contracts → Aptos.

Without the SDK (Sui)

  1. Request the quote with localDomain=8 and version=2.
  2. In one transaction, call prepare_deposit_for_burn_v2 on package 0x7eab670b…, then Circle’s deposit_for_burn_with_package_auth, the USDC handler’s burn and complete_burn.
The full transaction, with every object ID, is in Smart Contracts → Sui.

Monitor the Outcome

The transactions API lists transfers with their source and destination status:
A transfer is complete when its destination status is success. See Backend APIs for every field.

Next Steps