Circle Programmable Wallets
Wallet
Official
Enterprise
Best for: Stablecoin operations; USDC-native agent treasury; gas sponsorship workflows
Not ideal for: Pure crypto/ETH-native operations; open source requirements
Key Signals
Chain Support
EVM + Solana + Polygon
Integration
REST API + Web3 SDK
Features
🔐
MPC Key Management
Circle splits key material using MPC across isolated environments. No single entity — including Circle — holds the full private key. Supports both developer-controlled and user-controlled wallet configurations.
💵
USDC-Native Gas Sponsorship
Built-in gas station functionality lets agents pay transaction fees in USDC rather than native tokens, eliminating the need to hold ETH or SOL in agent wallets. Especially useful for stablecoin-only agent treasuries.
🌐
Multi-chain Support
Single API covers EVM-compatible chains (Ethereum, Polygon, Avalanche, Arbitrum, Base) plus Solana. The same wallet abstraction and REST API work identically across all supported networks.
⚡
REST API + Web3 SDK
Full-featured REST API for wallet lifecycle, transaction management, and balance queries. A companion Web3 SDK provides typed client wrappers for Node.js and browser environments with webhook support for async event handling.
Ratings
Multi-chain Support
4.4/5
Ratings based on Circle developer docs, API reference, and published quickstarts — not end-to-end production testing. USDC integration score reflects Circle's unique position as the USDC issuer.
Integration
curl -X POST https://api.circle.com/v1/w3s/developer/wallets \
-H "Authorization: Bearer $CIRCLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "unique-key-001",
"blockchains": ["ETH-SEPOLIA"],
"count": 1,
"entitySecretCiphertext": "'$ENTITY_SECRET_CIPHERTEXT'"
}'
curl -X POST https://api.circle.com/v1/w3s/developer/transactions/transfer \
-H "Authorization: Bearer $CIRCLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "transfer-001",
"walletId": "'$WALLET_ID'",
"tokenId": "USDC-ETH-SEPOLIA",
"destinationAddress": "'$RECIPIENT'",
"amounts": ["10.00"],
"fee": { "type": "level", "config": { "feeLevel": "MEDIUM" } }
}'