On February 12, 2026, Coinbase launched Agentic Wallets. Twelve days later, MoonPay launched MoonPay Agents. Two different companies, two different philosophies, both racing to become the default wallet infrastructure for autonomous AI agents.
Coinbase built a security-first architecture: keys isolated in trusted execution environments, programmable spending limits, and gasless transactions on Base. MoonPay built a fiat-first architecture: built-in payment processing, KYC-compliant onboarding, virtual bank accounts, and support for Apple Pay, Venmo, and PayPal.
This guide is the full head-to-head comparison. For how both fit into the broader wallet landscape (including Safe, raw EOA, and Lightning L402), see the Agent Wallet Comparison.
Quick Decision
Don’t have time for 15 minutes of comparison? Here are three scenarios:
“I’m building a Polymarket trading bot.” → Coinbase Agentic Wallets. TEE key isolation and spending limits are non-negotiable for any agent handling real money autonomously. Gasless on Base reduces friction. Full setup guide here.
“My agent needs to accept credit card payments from users.” → MoonPay Agents. Built-in fiat on-ramps (card, bank, Apple Pay, Venmo, PayPal) and KYC-compliant onboarding without building custom payment integrations.
“I need the strongest security possible for a high-value agent.” → Coinbase Agentic Wallets with Safe Smart Accounts for multi-sig approval on large transactions. See the security guide.
Architecture Comparison
The fundamental difference is where security lives and how money enters the system.
COINBASE AGENTIC WALLETS
Agent ──▶ Session Key ──▶ Coinbase TEE ──▶ Base L2 ──▶ Bridge ──▶ Polygon
│ │
│ Private key NEVER
│ leaves the TEE
│
└── Spending limits enforced HERE
(infrastructure layer, pre-chain)
MOONPAY AGENTS
Agent ──▶ MoonPay CLI ──▶ Local Wallet ──▶ Multi-Chain (Polygon, Base, ETH, SOL)
│ │ ▲
│ Private key stored │
│ on user's device Fiat On-Ramp
│ (Card/Bank/Apple Pay)
│
└── Spending limits? You configure them yourself.
Coinbase isolates the private key in a TEE (Trusted Execution Environment) — a hardware-secured enclave that the agent can never read from. Even if your agent is fully compromised (prompt injection, dependency backdoor, etc.), the attacker doesn’t get the private key. Spending limits are enforced at Coinbase’s infrastructure layer, before the transaction touches the blockchain.
MoonPay stores the wallet locally on the user’s device (non-custodial) and provides the financial plumbing — fiat-to-crypto conversion, KYC verification, cross-chain swaps, virtual bank accounts. The agent interacts through MoonPay CLI and the infrastructure handles payment processing. Security guardrails are your responsibility.
Master Comparison Table
| Coinbase Agentic Wallets | MoonPay Agents | |
|---|---|---|
| Launched | February 12, 2026 | February 24, 2026 |
| Custody | Non-custodial (TEE-isolated) | Non-custodial (device-stored) |
| Key isolation | Private keys in Coinbase TEE — agent never sees them | Private keys on user’s device — agent has access |
| CLI tool | npx awal | MoonPay CLI |
| Spending limits | Programmable (session caps + per-tx limits), infrastructure-enforced | Not built-in (configure yourself) |
| Fiat on-ramp | Via Coinbase (manual) | Built-in: card, bank, Apple Pay, Venmo, PayPal |
| Fiat off-ramp | Via Coinbase (manual) | Built-in: bank transfer, virtual accounts (US/EU/GBP) |
| KYC | Built-in KYT (Know Your Transaction) screening | Full KYC + KYB (Know Your Business) compliance |
| Payment protocol | x402 (native, deep integration) | x402 (compatible) |
| Chain support | Base (gasless), EVM chains, Solana planned | Ethereum, Polygon, Base, Solana, more |
| Gas handling | Gasless on Base L2 | Standard gas fees (user/agent pays) |
| Virtual accounts | No | Yes — US, EU, GBP bank accounts |
| Cross-chain swaps | Bridge to Polygon for Polymarket | Built-in cross-chain swaps |
| Recurring buys | No | Yes |
| SDK/Skills library | AgentKit with pre-built Skills (Fund, Send, Trade, Earn) | MoonPay CLI + REST API |
| LLM integration | AgentKit Skills work with ChatGPT, Claude, OpenClaw | Generic API (works with any LLM) |
| Setup time | ~2 minutes | ~5 minutes |
| Ecosystem | 50M+ x402 transactions processed | Embedded in ~500 companies |
| Account recovery | Email OTP re-auth | Device-based recovery |
| Prediction market support | Polymarket (via Base→Polygon bridge) | Polymarket (Polygon native, no bridge needed) |
Custody and Key Management: The Critical Difference
This is the most important section. How your agent’s private key is managed determines your security ceiling.
Coinbase: TEE Isolation
Coinbase stores private keys inside Trusted Execution Environments — hardware-secured enclaves that provide cryptographic guarantees about code execution and data isolation. The agent authenticates via email OTP and session keys, then requests transactions through Coinbase’s API. The TEE signs the transaction and broadcasts it. At no point does the agent (or the developer, or Coinbase staff) have access to the raw private key.
What this means in practice: If your agent is compromised — prompt injection, supply chain attack, exposed environment variable — the attacker can request transactions through Coinbase’s API, but they cannot extract the private key. And if spending limits are configured, even the transaction requests are bounded.
This is the architecture that would have prevented the Lobstar Wilde incident. Even with a completely confused agent, the $250K transfer would have been blocked by spending limits enforced before the transaction reached the chain.
MoonPay: Device-Stored Keys
MoonPay generates non-custodial wallets stored on the user’s device. The agent needs access to the key material to sign transactions. This is the same model as a raw EOA wallet — familiar, flexible, and the security boundary is entirely on you.
What this means in practice: Your agent (or any process with access to the device’s filesystem) can read the private key. There are no infrastructure-enforced spending limits — if the agent decides to send the entire balance, nothing stops it except your own application-level guardrails.
This is not necessarily a dealbreaker. Many production systems run with device-stored keys and application-level security. But it means you’re building your own safety net rather than inheriting one from the infrastructure.
Verdict
For autonomous agents that trade real money: Coinbase’s TEE model is categorically safer. The security boundary is at the infrastructure level, not the application level. If security is your top priority, this ends the comparison.
Fiat Rails: MoonPay’s Advantage
Where MoonPay decisively wins is in moving money between the fiat and crypto worlds.
What MoonPay Offers
- Payment methods: Credit/debit card, bank transfer (ACH, SEPA), Apple Pay, Venmo, PayPal
- Virtual bank accounts: US, EU, and GBP bank accounts for receiving payments
- Fiat off-ramping: Convert crypto back to fiat and withdraw to a bank account
- KYC/KYB compliance: Built-in identity verification that satisfies regulatory requirements
- Recurring buys: Automated periodic crypto purchases
What Coinbase Offers
- Manual funding: Deposit USDC through the Coinbase platform or via direct transfer
- KYT screening: Automatic transaction risk scoring (Know Your Transaction, not full KYC)
- No built-in fiat on-ramp: You need to fund through Coinbase’s separate consumer product
When Fiat Rails Matter
If your agent needs to:
- Accept payments from end users (e.g., a service that charges customers in USD and trades on their behalf)
- Convert between fiat and crypto programmatically
- Receive bank deposits directly
- Handle multi-currency operations (USD, EUR, GBP)
…then MoonPay’s infrastructure saves you from building or integrating a separate payment stack.
If your agent only operates in the crypto-native world (receiving USDC, trading on prediction markets, managing a DeFi portfolio), you don’t need fiat rails and Coinbase’s security model is the better choice.
Prediction Market Compatibility
Both can power a Polymarket trading bot, but the paths differ.
Polymarket with Coinbase
Polymarket runs on Polygon. Coinbase Agentic Wallets are native to Base. This means you need to bridge assets:
- Fund wallet with USDC on Base (gasless)
- Bridge USDC from Base to Polygon (~2-5 minutes, ~$0.10-0.50 in fees)
- Approve USDC for Polymarket’s CTF Exchange contract
- Trade via py_clob_client or Polymarket CLI
The bridging step adds latency and complexity but only happens once when funding. After that, trading is on Polygon natively. See the Coinbase Agentic Wallets Guide for the full bridging workflow.
Polymarket with MoonPay
MoonPay supports Polygon natively, so there’s no bridging step:
- Fund wallet with USDC via fiat on-ramp (card/bank/Apple Pay) — MoonPay handles the fiat→crypto conversion
- Approve USDC for Polymarket’s CTF Exchange contract
- Trade via py_clob_client or Polymarket CLI
The fiat on-ramp is smoother, but you lose TEE key isolation and infrastructure-enforced spending limits.
Kalshi
Kalshi is a centralized, CFTC-regulated exchange that uses USD. Neither Coinbase Agentic Wallets nor MoonPay Agents is needed for Kalshi — you fund your account with a bank transfer and trade via API keys. See the Kalshi API Tutorial.
Code Comparison: Same Operation, Both SDKs
Creating a Wallet
Coinbase Agentic Wallets:
# Install and create wallet in one command
npx awal setup
# Outputs: wallet address, session details
# Key is generated inside TEE — you never see it
MoonPay Agents:
# Install MoonPay CLI
npm install -g @moonpay/cli
# Create a new agent wallet
moonpay agents wallet create --network polygon
# Outputs: wallet address, private key stored locally
Sending USDC
Coinbase Agentic Wallets:
from agentkit import AgentkitClient
client = AgentkitClient()
# Spending limits enforced automatically
tx = client.send(
to="0xRecipient...",
amount="10.00",
token="USDC",
)
# If this exceeds per-tx limit, it's rejected
# before hitting the blockchain
MoonPay Agents:
import requests
MOONPAY_API = "https://api.moonpay.com/agents/v1"
# No built-in spending limits — add your own
resp = requests.post(
f"{MOONPAY_API}/wallet/send",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"to": "0xRecipient...",
"amount": "10.00",
"token": "USDC",
"network": "polygon",
}
)
Funding from Fiat
Coinbase Agentic Wallets:
# Manual: transfer USDC from your Coinbase account
npx awal fund 50 # Transfers $50 USDC to your agentic wallet
MoonPay Agents:
# Programmatic: generate a fiat on-ramp link
resp = requests.post(
f"{MOONPAY_API}/onramp/create",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"currency": "usdc",
"network": "polygon",
"amount": "50.00",
"payment_method": "card", # or "bank", "apple_pay", "venmo"
}
)
checkout_url = resp.json()["url"]
# User completes KYC + payment at this URL
# Funds appear in agent wallet after processing
The Hybrid Architecture
For production agents that need both strong security AND fiat payment processing, use both together:
User pays with card/bank
│
▼
┌─────────────────┐ USDC transfer ┌─────────────────────┐
│ MoonPay Agents │ ──────────────────▶ │ Coinbase Agentic │
│ (Fiat On-Ramp) │ │ Wallets (Trading) │
│ │ │ │
│ • Accept fiat │ │ • TEE key isolation │
│ • KYC/KYB │ │ • Spending limits │
│ • Convert→USDC │ │ • Trade Polymarket │
└─────────────────┘ └─────────────────────┘
This pattern is common in traditional fintech: one service handles payment acceptance (Stripe, Square), another handles the core business logic. The same separation works here. MoonPay handles the messy fiat world; Coinbase handles the high-security trading world.
When to Choose Each
| Scenario | Choose | Why |
|---|---|---|
| Prediction market trading bot | Coinbase | TEE key isolation + spending limits are critical for autonomous trading |
| Agent that accepts user payments | MoonPay | Built-in fiat on-ramp with card, bank, Apple Pay, Venmo |
| High-value treasury management | Coinbase (+ Safe for multi-sig) | TEE + spending limits + optional multi-agent approval |
| Multi-currency agent (USD + EUR + crypto) | MoonPay | Virtual bank accounts in US, EU, GBP |
| Agent marketplace / commerce platform | Both | MoonPay for payment acceptance, Coinbase for secure trading wallet |
| Quick prototype / hackathon | Coinbase | 2-minute setup with npx awal, gasless on Base |
| Compliance-heavy use case | MoonPay | Full KYC/KYB compliance built-in |
| After reading about Lobstar Wilde | Coinbase | Infrastructure-enforced spending limits would have prevented it |
Further Reading
- Agent Wallet Comparison — All five wallet architectures compared (Coinbase, MoonPay, Safe, EOA, Lightning L402)
- Coinbase Agentic Wallets: Developer Guide — TEE architecture, x402, spending limits, production deployment
- The Lobstar Wilde Incident — Why spending limits matter
- Build a Polymarket Trading Bot — Put your wallet to work
- Security Best Practices — Kill switches, key management, monitoring
- Polymarket + Coinbase Quickstart — Your first automated trade