Table of Contents
Fund an AI agent wallet with USDC by moving native Circle-issued USDC onto the same chain as the policy-controlled agent address, from a human-controlled custody wallet or Circle Mint, then confirming the balance before you raise spend.
This page sits after how to set up an AI agent wallet and before how to set spend limits. The wallet already exists; the principal still has to load it.
Key Takeaways
- Fund after the wallet exists and the spend policy is written, not before.
- Load native Circle USDC on the named chain; do not fund with bridged wrappers.
- Use
circle wallet fundfor a deposit URI, or transfer from Mint or another custody wallet. - Match the destination address and chain character-for-character before you send.
- Confirm balance with
circle wallet balancebefore you treat the agent as funded. - Keep the first mainnet load small; raise only after allowlists and caps hold.
- A funded wallet with no live policy is an unconstrained spender.
What funding an agent wallet means
Funding is the human principal loading a prepaid USDC budget onto an address the agent can operate under policy. It is not the on-ramp from bank dollars, and it is not the agent's first outbound payment.
How to on-ramp USD to USDC is how dollars become native USDC in treasury custody. This page is the next hop: treasury custody to the agent address.

How to set up an AI agent wallet creates the policy-controlled wallet and the human session. Funding assumes that address already exists and that you can authenticate as the principal.

Write the policy before the first mainnet fund
Do not fund first and add limits later. A funded agent wallet with no live transfer policy is a hot wallet with a chatbot on top.
How to set spend limits for an AI agent USDC wallet is the envelope you write before the first mainnet load. Circle spending policies are mainnet-only, so a testnet dry run is not a policy test.

Confirm the recipient allowlist and per-transaction cap under a human OTP. Then fund an amount that those caps can actually spend.
Native USDC only, on the named chain
Load Circle-issued USDC on the chain the agent wallet uses. A bridged wrapper that shows a USDC ticker is a third-party claim, not the token Circle redeems.
How to check the official USDC or USDT contract is the character-for-character match before you send. Base native USDC is 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913.

If treasury holds USDC on a different chain, move it with Circle CCTP burn-and-mint first. Do not lock-and-mint a wrapper into the agent address and call it funded.
Three funding paths
Pick the path that matches where the dollars already sit. The destination is always the agent wallet address on one named chain.
| Path | When to use it | What you confirm |
|---|---|---|
Circle CLI wallet fund (crypto) |
You already hold native USDC in a mobile or desktop wallet on the same chain | QR / EIP-681 URI points at the agent address and the named chain |
Circle CLI wallet fund (fiat) |
You need to buy USDC with a card or bank transfer into the agent address | On-ramp provider credits native USDC on the same chain as the wallet |
| Mint or custody transfer | Treasury already holds native USDC at Circle Mint or another custody wallet | Send to the agent address only; match contract and chain before broadcast |
Fund with Circle CLI
Circle's fund an agent wallet guide is the reference. Authenticate as the human principal first; do not let the model complete the OTP.
List the agent address on the target chain, then run fund with that address, chain, amount, and method:
circle wallet list --type agent --chain BASE
circle wallet fund --address 0xYourAgentAddress \
--chain BASE --amount 10 --method cryptoCrypto mode prints a terminal QR code and an EIP-681 deposit URI. Scan it from a wallet that already holds native USDC on Base, or pass --export / --open if you need a PNG or browser tab.
Fiat mode opens the on-ramp provider so you can buy USDC with a card or bank transfer. Pass --no-open to print the URL instead of launching a browser.
On testnet, omit --method and --amount; Circle draws 20 USDC from the faucet. A faucet credit is not a mainnet fund.
Transfer from Mint or custody
If treasury already holds native USDC, send it to the agent address with a normal transfer on the named chain. Dual-control the destination string the same way you dual-control a wire beneficiary.
Do not paste an address from chat history. Copy it from circle wallet list or your approved wallet inventory, then match it character-for-character before you broadcast.
Keep gas or sponsored transfers in mind. Agent wallets often hide the second-token problem, but a manual custody send still needs the sending wallet able to pay fees on that chain.
Confirm the balance before you call it funded
Mark the fund complete only when the agent wallet shows available native USDC on the named chain. A pending deposit or a ticker that fails the contract check is not a budget.
circle wallet balance --address 0xYourAgentAddress --chain BASECall it funded when every row below passes. A single Fail cell means the agent is not ready to spend.
| Check | Pass | Fail |
|---|---|---|
| Spend policy | Live mainnet transfer limit and allowlist confirmed under human OTP | No policy, or only a testnet dry run |
| Destination | Address and chain match circle wallet list character-for-character |
Address came from chat, or chain does not match the wallet |
| Token | Contract matches Circle's published native USDC for that chain | Bridged wrapper, clone, or unlabeled "USDC" ticker |
| Balance | circle wallet balance shows the expected available amount |
Pending inbound, zero balance, or balance on the wrong chain |
| Size | First mainnet load is a small prepaid budget you can afford to lose | Full treasury dump before caps and allowlists are proven |
After the balance is confirmed, the agent can pay under policy. How to verify an AI agent before accepting USDC is the merchant-side check on the other end of that payment.

When not to fund
Skip the fund if the spend policy is still a prompt. Signing-time caps have to live in the wallet layer, not in instructions the model can rewrite.
Skip it if you only have bridged USDC on the destination chain. Convert or CCTP to native USDC first; a wrapper in the agent wallet is bridge risk dressed as a budget.
Skip it if the OTP inbox is shared with the agent. Circle sessions last seven days once login completes, and an agent that can read that email can authenticate and move what you just loaded.
Skip a large top-up after an incident until you have revoked the old grant. How to revoke an AI agent's access to USDC is the cut-off; funding is not how you recover from a live leak.
FAQs
1. Should I fund before or after setting spend limits?
After. Write the transfer policy and allowlist under a human OTP, then load a small mainnet budget those caps can actually spend.
2. Can I fund an agent wallet with bridged USDC?
No. Fund only native Circle-issued USDC on the named chain. Match the contract before you send, and move cross-chain with CCTP rather than a lock-and-mint wrapper.
3. What does circle wallet fund actually do?
It prepares a deposit into the agent address. Crypto mode gives you a QR / EIP-681 URI to send from a wallet you already control; fiat mode opens an on-ramp to buy USDC into that address.
4. How do I know the fund landed?
Run circle wallet balance on the same address and chain. Treat the wallet as funded only when available native USDC shows the expected amount.
5. Is funding the same as on-ramping USD to USDC?
No. On-ramping turns bank dollars into native USDC in treasury custody. Funding moves that USDC onto the agent wallet so the agent can spend under policy.
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, sell, or hold any financial instrument, and readers should conduct their own independent research or consult a qualified professional.