Create a Circle developer account and enable Programmable Wallets in the Circle Console; obtain an API key scoped to wallet management and payout operations.
Create a wallet set and provision an on-chain wallet for each payee via POST /v1/w3s/wallets (specifying blockchain, e.g., ETH, SOL, or AVAX), or use Circle's custodial wallets if you want Circle to manage private keys.
To send USDC, initiate a transfer via POST /v1/w3s/developer/transactions/transfer specifying sourceWalletId, destinationAddress (recipient's on-chain address), amount, and tokenId (Circle's USDC token ID for the target chain).
For Circle Payments Network (CPN) corridors, use the CPN Managed Payments API to instruct Circle to send USDC to a registered CPN participant bank or PSP that will distribute to the end recipient in local currency.
Monitor transaction status via GET /v1/w3s/transactions/{id}; wait for state=CONFIRMED (typically requiring a configurable number of on-chain confirmations per chain) before marking the payout as settled.
Handle FAILED or CANCELLED transaction states by inspecting the errorCode field — common causes include insufficient gas, invalid destination address, or compliance screening failure — and retry only after resolving the root cause.
Known gotchas
On-chain USDC transfers require gas fees paid in the native token of the chain (ETH on Ethereum, SOL on Solana, etc.) — ensure the sender wallet holds the native token for gas in addition to USDC; Circle's custodial wallets abstract this but developer wallets do not.
Settlement finality varies by chain — Ethereum mainnet requires more confirmations than Solana; configuring too few confirmations risks marking payouts as settled before they are irreversible.
Circle's compliance screening may CANCEL transactions to sanctioned addresses without warning — build FAILED/CANCELLED handling and a compliance review workflow rather than auto-retrying cancelled transactions.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp