> ## Content Index
> Fetch the complete content index at: https://stablecoininsider.org/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Use Crossmint Agent Wallets for USDC (2026)
- URL: https://stablecoininsider.org/how-to-use-crossmint-agent-wallets-for-usdc/
- Published: 2026-09-18T06:25:38.000Z
- Updated: 2026-09-18T06:25:38.000Z
- Description: Set up Crossmint Agent Wallets for USDC: create a user smart wallet, authorize a server signer with email OTP, fund staging with 5 USDXM, and send USDC on Base.
- Author: Alexandra
- Tags: AI, Stablecoins

Operators building AI agents that spend **USDC** need a wallet the user owns, a delegated signer the agent can use without a prompt per tx, and a revoke path when the agent should stop.

Crossmint **Agent Wallets** are that stack: a non-custodial user smart wallet, a server signer authorized with a one-time email code, and **wallet.send** for USDC (or staging USDXM) signed entirely on your backend.

📌

Stablecoin Insider's framing: Crossmint Agent Wallets are the user-owned USDC spend path for an agent (create wallet, authorize server signer, send). Coinbase Agentic Wallet (awal) and Circle Agent Wallet are different products with different CLIs and custody models.

This guide walks the public Crossmint docs flow as of September 18, 2026: staging keys, create-on-login wallet on **base-sepolia**, authorize with **prepareOnly: true**, fund with **stagingFund(5)** USDXM, send stablecoins, then revoke.

### Key Takeaways

- Crossmint Agent Wallets give a user-owned smart wallet plus a delegated server signer for USDC spends.
- Staging quickstart needs Node.js 20+, client + server API keys, and a 32-byte CROSSMINT\_SIGNER\_SECRET.
- Authorize with addSigner prepareOnly:true, then the user approves via email OTP before the agent can sign.
- Staging mints 5 USDXM via stagingFund(5); production uses USDC on Base (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913).
- Named downside: anyone with the signer secret can sign every wallet it was authorized on; revoke with the user recovery signer only.

⚠️

Named downside: CROSSMINT\_SIGNER\_SECRET is as sensitive as a database password. Anyone holding it can sign for every wallet that secret was authorized on. Never ship it to the browser or the LLM prompt.

## What Crossmint Agent Wallets are (and aren't)

In Crossmint's [Agents overview](https://docs.crossmint.com/agents/overview), Agent Wallets are the non-custodial stablecoin path next to Agent Cards and Agent Checkouts. The wallet is owned by the end user. The agent is a scoped delegate.

Crossmint's [Stablecoin Wallet Quickstart](https://docs.crossmint.com/agents/stablecoin-wallet-quickstart) targets about 10 minutes to a running app: sign in, get a wallet, authorize the agent, fund, and send. The reference repo is [Crossmint/stablecoin-wallet-quickstart](https://github.com/Crossmint/stablecoin-wallet-quickstart) on GitHub.

| Step                | What happens                                                       | Who signs               |
| ------------------- | ------------------------------------------------------------------ | ----------------------- |
| 1\. Authenticate    | Email OTP or Google via CrossmintAuthProvider                      | User                    |
| 2\. Create wallet   | createOnLogin on base-sepolia with email recovery                  | User recovery signer    |
| 3\. Authorize agent | addSigner({type:"server"}, {prepareOnly:true}) then email approve  | User then server signer |
| 4\. Fund            | stagingFund(5) USDXM (staging) or USDC onramp/transfer (prod)      | N/A / user              |
| 5\. Send            | wallet.useSigner + wallet.send(recipient, "usdc"\|"usdxm", amount) | Server signer           |
| 6\. Revoke          | wallet.removeSigner with user email signer active                  | User only               |

This is not [Coinbase Agentic Wallet (awal)](https://stablecoininsider.org/how-to-create-a-coinbase-agentic-wallet-for-usdc/) and not [Circle Agent Wallet](https://stablecoininsider.org/how-to-create-a-circle-agent-wallet-for-usdc/). Those are separate how-tos on Stablecoin Insider. Crossmint is the SDK path where your backend holds a server signer secret and the user keeps email recovery.

[Open Crossmint Agent Wallet docs](https://docs.crossmint.com/agents/stablecoin-wallet-quickstart)

## Prerequisites (as of Sep 18, 2026)

Crossmint's quickstart requires:

- Node.js 20+ and pnpm
- A Crossmint Staging Console project with a client-side key (ck\_…) and a server-side key (sk\_…)
- A 32-byte CROSSMINT\_SIGNER\_SECRET (raw 64-char hex or xmsk1\_<64-hex>)
- Env vars: NEXT\_PUBLIC\_CROSSMINT\_CLIENT\_API\_KEY, CROSSMINT\_SERVER\_SIDE\_API\_KEY, CROSSMINT\_SIGNER\_SECRET

Staging keys come with all scopes enabled by default. Develop on **base-sepolia** with staging keys. Production uses **base** with production keys and real USDC.

## Step 1\. Clone the quickstart and install

Clone [github.com/Crossmint/stablecoin-wallet-quickstart](https://github.com/Crossmint/stablecoin-wallet-quickstart), run **pnpm install**, then copy **.env.example** to **.env.local** and paste your keys.

Generate the signer secret once and store it only as a server-side environment variable. Crossmint docs warn that anyone who holds the secret can sign on behalf of every wallet it has been authorized on.

## Step 2\. Create the user wallet on login

Wrap the app with **CrossmintProvider**, **CrossmintAuthProvider** (email and Google), and **CrossmintWalletProvider** with **createOnLogin={{ chain: "base-sepolia", recovery: { type: "email" } }}**.

On first login the SDK creates a non-custodial smart wallet with the user's email as the recovery signer. **useWallet()** exposes **wallet.address** when status is loaded. Creation is idempotent: repeated calls return the same wallet.

For non-React or custom auth backends, use **@crossmint/wallets-sdk** with **wallets.createWallet({ chain, owner: \`userId:${userId}\`, signer: { type: "email", email } })**. Server-side creation requires an explicit **owner** so later **getWallet** calls resolve correctly.

Full create steps live in Crossmint's [Create a User Wallet](https://docs.crossmint.com/agents/payment-methods/stablecoin-wallets/create-user-wallet) guide.

## Step 3\. Authorize the agent with prepareOnly

Authorization is a two-step dance so the user stays in control. See [Authorize the Agent](https://docs.crossmint.com/agents/payment-methods/stablecoin-wallets/authorize-agent).

### 3a. Register the server signer (backend)

From a server action, call **wallet.addSigner({ type: "server", secret: process.env.CROSSMINT\_SIGNER\_SECRET }, { prepareOnly: true })**. That returns **locator** and **signatureId**. The secret never leaves your backend.

Always pass **prepareOnly: true** from the server. If you omit it, the SDK can auto-approve with the server signer itself and the user never sees a prompt.

### 3b. User approves with email OTP (client)

On the client, activate the email signer with **wallet.useSigner({ type: "email", email: user.email })**, then **wallet.approve({ signatureId })**. That triggers the one-time email code. After verification, **wallet.signers()** should show an entry with **type: "server"**.

## Step 4\. Fund and send USDC (or staging USDXM)

Crossmint's [Using the Wallet](https://docs.crossmint.com/agents/payment-methods/stablecoin-wallets/on-chain-actions) guide is the send path.

On staging, **wallet.stagingFund(5)** mints **5 USDXM** into the wallet (staging-only). For production USDC, use Crossmint Onramp & Add Funds or a direct transfer. Base mainnet USDC contract in Crossmint production notes: **0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913**.

Before signing, activate the server signer on that wallet handle:

**await wallet.useSigner({ type: "server", secret: process.env.CROSSMINT\_SIGNER\_SECRET })**

Then send:

**const tx = await wallet.send(recipient, "usdc", amount)** (use **"usdxm"** on staging). Crossmint docs state gas is sponsored by default on supported chains, so the user does not need ETH for gas on those paths.

Calling **useSigner** is per handle. If you **getWallet** again, call **useSigner** again before signing.

💡

Stablecoin Insider's take: treat stagingFund(5) as a lab faucet, not a production funding model. Production agents should fund USDC via onramp or treasury transfer, with spend policies on the server signer before the first live send.

## Step 5\. Revoke agent access

When the agent should stop spending, revoke the server signer. Crossmint's [Remove Agent Access](https://docs.crossmint.com/agents/payment-methods/stablecoin-wallets/remove-agent-access) flow requires the user's recovery signer, not the agent.

Activate **wallet.useSigner({ type: "email", email: user.email })**, then **wallet.removeSigner({ locator })**. Persist the **locator** from **addSigner** against each wallet. The same secret produces a different locator per wallet. Revocation is per-wallet.

An agent cannot revoke itself. If the server signer is active when you call remove, the request fails by design.

## Crossmint Agent Wallet vs other SCI wallet how-tos

| Product                 | Owner model                              | Agent auth                  | Primary surface                  |
| ----------------------- | ---------------------------------------- | --------------------------- | -------------------------------- |
| Crossmint Agent Wallets | User-owned smart wallet + email recovery | Server signer + email OTP   | @crossmint SDKs / quickstart     |
| Coinbase Agentic Wallet | Coinbase TEE-backed agent wallet         | Email OTP via awal CLI      | awal CLI / payments-mcp          |
| Circle Agent Wallet     | Circle developer wallet stack            | Circle APIs / agent tooling | Circle docs + SCI Circle how-tos |

For a general wallet bootstrap checklist, see [how to set up an AI agent wallet](https://stablecoininsider.org/how-to-set-up-an-ai-agent-wallet/). For funding patterns, see [how to fund an AI agent wallet with USDC](https://stablecoininsider.org/how-to-fund-ai-agent-wallet-with-usdc/). For HTTP micropayments after the wallet exists, see [how to accept x402 USDC from AI agents](https://stablecoininsider.org/how-to-accept-x402-usdc-payments-from-ai-agents/) and [how to charge for MCP tools with Cloudflare Agents x402](https://stablecoininsider.org/how-to-charge-for-mcp-tools-with-cloudflare-agents-x402/).

[How to Create a Circle Agent Wallet for USDC (2026)Circle's agent wallet path for USDC, as a related Stablecoin Insider how-to next to Crossmint.![](https://stablecoininsider.org/favicon.ico)Stablecoin Insider](https://stablecoininsider.org/how-to-create-a-circle-agent-wallet-for-usdc/)

## Who this is for (and who should skip it)

Use Crossmint Agent Wallets if you need a user-owned USDC wallet, backend-signed agent spends, and a clean revoke path with email recovery.

Skip it if you only need a one-shot x402 buyer fetch (start with Coinbase AgentKit), or if your compliance model forbids a shared server signer secret across many user wallets without per-tenant secrets and hard spend caps.

Need the wallet bootstrap first? Start with Stablecoin Insider's AI agent wallet setup guide, then come back to Crossmint authorization.

[Read AI agent wallet setup ](https://stablecoininsider.org/how-to-set-up-an-ai-agent-wallet/) 

---

## FAQ

#### What is a Crossmint Agent Wallet?

A Crossmint Agent Wallet is a non-custodial user smart wallet that can authorize an AI agent as a delegated server signer to send stablecoins (USDC in production, USDXM in staging) without a user prompt per transaction.

#### How do you authorize a Crossmint agent to spend USDC?

Call wallet.addSigner with type server and prepareOnly true from your backend, then have the user approve the pending signature with an email OTP on the client. Only after that can the server signer move funds.

#### What does stagingFund(5) mint?

On supported staging chains, wallet.stagingFund(5) mints 5 USDXM into the wallet for local development. It is staging-only. Production wallets need real USDC via onramp or transfer.

#### Which Base USDC contract does Crossmint production use?

Crossmint production notes list Base mainnet USDC at 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\. Staging uses base-sepolia with USDXM test balances.

#### Can the agent revoke its own Crossmint signer?

No. Removal must run with the user's recovery signer active (for example email). If the server signer is active, removeSigner fails by design.

#### Is Crossmint Agent Wallet the same as Coinbase Agentic Wallet?

No. Crossmint uses @crossmint SDKs and a backend CROSSMINT\_SIGNER\_SECRET. Coinbase Agentic Wallet uses the awal CLI and Coinbase TEE infrastructure. Stablecoin Insider covers both as separate how-tos.

---

This content is provided for informational and educational purposes only and does not constitute financial, investment, legal, or tax advice; no material herein should be interpreted as a recommendation, endorsement, or solicitation to buy or sell any financial instrument, and readers should conduct their own independent research or consult a qualified professional.