How do I let my AI agent use my own credit card safely?
Last reviewed: August 2026
Keep the card number out of the agent and put your approval on every charge. With Laso you save the card once on the issuer’s page behind a passkey, the agent builds a priced cart with POST /buy-with-saved-card, and nothing is charged until you approve that exact cart on your own device. The agent only ever sees the last four digits.
What goes wrong when an agent gets your card number
Pasting a card into an agent’s prompt or environment puts the number in the model’s context, its logs, and every tool call it makes. Anything that can read those, including a malicious web page the agent visits, can read the card. A prompt that says “only buy what I ask for” is a request, not a control.
A safe setup has three properties. The agent never holds the number. The charge is bound to a specific cart, not to open-ended permission. A human confirms each order outside the agent’s session.
Your options
| Approach | Agent sees the number? | Who approves each order |
|---|---|---|
| Paste your card into the agent | Yes | Nobody. Limited only by the card’s own limit |
| Single-use or low-limit virtual card from your bank or card provider | Yes, but it is capped and expires | Nobody, unless you add a review step yourself |
Laso saved card (POST /buy-with-saved-card) | No. It sees the last four digits | You, with a passkey, on every order |
Laso prepaid card (GET /get-card) | Yes, but it holds only the amount loaded | Nobody. The loaded balance is the budget |
A single-use virtual card is a good choice when you want the agent to check out on its own and you are happy to cap it in advance. The saved card fits when you want the order itself reviewed and your real card kept off the agent entirely. The prepaid card fits when the agent should run without you. The two Laso routes can share one agent.
Step 1: Check for a saved card
The agent signs in as described in SKILL.md. Then it checks whether you already saved a card, so you are never sent through the flow twice.
curl "https://laso.finance/get-saved-cards" \
-H "Authorization: Bearer $LASO_ID_TOKEN"
# { "cards": [ { "card_id": "vc_...", "last4": "4832",
# "expiry_month": 12, "expiry_year": 2029, "created_at": 1756838467000 } ],
# "note": "..." }
Step 2: You save the card once
If cards is empty, the agent mints a link and hands it to you. Saving the card is your step. The agent never opens the link. The page asks for the card and a passkey, and the number is encrypted on your device before it is stored. Laso never sees it. Saving a card needs no identity verification.
curl -X POST "https://laso.finance/create-saved-card-link" \
-H "Authorization: Bearer $LASO_ID_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"
# { "url": "https://.../v?vs=...", "expires_at": 1759203733257, "note": "..." }
# Send url to your human, then poll GET /get-saved-cards until the card appears.
Step 3: The agent builds a cart
The agent describes what to buy in plain language and includes the delivery address on this first call, because a cart is bound to the address it was shown for. It gets back questions to relay to you, or a priced cart.
curl -X POST "https://laso.finance/buy-with-saved-card" \
-H "Authorization: Bearer $LASO_ID_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"ask": "a 16 oz bag of Colombian ground coffee from Amazon",
"delivery_address": {
"street": "1900 Jefferson St", "city": "San Francisco",
"state": "CA", "zip": "94123",
"phone": "+14155550100", "name": "Ada Lovelace"
}
}'
# status "needs_input", with a cart: items, total_cents,
# approved_ceiling_cents, and a hash
total_cents is the all-in price and approved_ceiling_cents is the most the merchant may charge once final tax and shipping settle. Show these to yourself from the fields, not from the free-text reply.
Step 4: You approve that exact cart
When you agree, the agent sends the cart’s hash as confirm. The call pauses and returns an approval_url. Nothing has been charged. You open the link on your own device and approve with your passkey, then the agent sends the same confirm again.
curl -X POST "https://laso.finance/buy-with-saved-card" \
-H "Authorization: Bearer $LASO_ID_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"conversation_id": "conv_...",
"confirm": "<cart hash>",
"delivery_address": { "street": "1900 Jefferson St", "city": "San Francisco", "state": "CA", "zip": "94123", "phone": "+14155550100", "name": "Ada Lovelace" }
}'
# { "status": "awaiting_approval", "approval_url": "https://.../authorize?id=...", "charge_status": "none" }
# After you approve, repeat the same call:
# { "status": "order_placed", "order_id": "...", "card_last4": "4832", "charge_status": "settled" }
A confirm only ever places the cart whose hash it names. If the price or items move before checkout, the call returns status: "conflict" with error_code: "cart_changed" and a fresh cart, and you approve the new hash. The agent should branch on status, never on reply.
What this does not do
- The route is in beta and shops a set of online merchants such as Amazon, Walmart, Target, Best Buy, and DoorDash. It will not check out at an arbitrary site.
- Every order needs you. If you want the agent to buy while you are away, use a prepaid card loaded with a fixed amount instead.
- Your approval protects you from unwanted charges, not from a wrong purchase you approved. Read the cart before you tap.
Full reference: save a card, saved card purchases. For choosing between a saved card and a prepaid card, see how to let an agent buy something online.
Frequently asked questions
Is it safe to give an AI agent my credit card number?
It is safer not to. A number in the agent’s context ends up in logs and tool calls. Use a saved card the agent cannot read, a capped single-use virtual card, or a prepaid card loaded with a fixed amount.
Does the agent ever see my card number with Laso?
No. You type the card on the issuer’s page, which encrypts it on your device. The agent sees only the last four digits and expiry.
Can my AI agent charge my card without asking me?
Not through a saved card. Every confirm pauses for your passkey approval, and it only places the cart whose hash you approved.
How do I stop an agent buying something I did not approve?
Approvals are per cart. If the cart changes before checkout, the order stops with a cart_changed conflict and you review the new total.
What if I want my agent to buy while I am away?
Order a prepaid card loaded with the amount it may spend. The balance is the cap, and no approval step is needed.
More guides
- How to give your AI agent a credit card — An AI agent cannot pass credit underwriting, but it can issue itself a virtual prepaid card over an API in about a minute. The working pattern, with real requests: x402 payment in, card number out.
- x402 vs AP2 vs ACP vs MPP vs UCP: which should your agent use? — All five agent payment protocols compared honestly: x402 and MPP for machine-to-machine HTTP payments, ACP for ChatGPT checkout, UCP for Google surfaces, AP2 for authorization. Which layer each one is, when to use each, and a worked x402 example.
- x402 vs Stripe Issuing for AI agents — Two real ways to put a card in an AI agent’s hands: Stripe Issuing behind a business account, or x402 card issuance the agent drives itself. An honest comparison of onboarding, funding, controls, and when each wins.
- Issue a virtual card with one x402 call — A complete, runnable walkthrough: pay one x402 request in USDC and receive a virtual prepaid card with number, expiry, and CVV. Real endpoints, real response shapes, error handling included.
- How can an AI agent pay for an API call with USDC? — An AI agent pays for an API call with USDC by answering the API’s HTTP 402 challenge with a signed payment. Two ways to do it: your own wallet with an x402 client, or a managed wallet with a price cap and no private key.
- How do I give an AI agent a bank account? — Two real ways to give an AI agent bank details: a business checking account it can operate (Meow) or a U.S. bank account that converts incoming dollars to USDC in the agent’s wallet (Laso). What each one is, who approves what, and when to pick which.
- How do I cap how much my AI agent can spend? — Cap an AI agent’s spending with limits it cannot raise: a funded balance, a per-payment spend limit set by the account owner, a per-call price cap, and prepaid cards loaded with exactly the amount to spend.
- How do I send money to someone’s debit card from code? — Send USD, EUR, or GBP to a debit card with one API call paid in USDC. No payment processor account: you get a redemption link, the cardholder enters their own card details, and the funds are pushed to the card.
- What are the best ways to pay someone on Venmo or PayPal from an AI agent? — Four ways an AI agent can pay a person on Venmo or PayPal: the PayPal Payouts API, a USDC-paid payout through Laso, a bank or card payout instead, or a human approving each payment. Tradeoffs for each.
- How do I let my AI agent buy a gift card through an API? — An AI agent buys a gift card with two calls: search the catalog for a laso_server_id, then order it with a USDC payment. The redemption code comes back in the same response. Includes a runnable example and the currency gotcha.
- How do I let my AI agent buy something online? — Two working ways for an AI agent to buy something online: spend the account holder’s saved card with their approval on each order, or pay for a prepaid card in USDC and check out like any cardholder. How Laso and Crossmint each handle it, with runnable calls.
- How do I send dollars to a bank account from an AI agent? — Pay a U.S. bank account by ACH from an AI agent. Register the recipient once, then make one API call paid in USDC. Limits, fees, settlement time, and a runnable example.
- What are the best ways to give an AI agent its own wallet? — Four ways to give an AI agent a wallet it can spend from: a key you hold yourself, Coinbase Agentic Wallet, Crossmint agent wallets, or a Laso managed wallet. Custody, spend limits, and tradeoffs for each.
- How do I get notified when my AI agent spends money? — Get an alert every time your AI agent spends: register one signed webhook for card orders, payouts, withdrawals and deposits, or poll the balance and card transaction endpoints. Working code included.
- How do I convert USDC to fiat in my app without a multi-week integration? — Three ways to turn USDC into dollars, euros, or pounds from code: Laso pay-per-call payouts over x402, a Stripe stablecoin balance, or Circle Mint redemption. Onboarding, outputs, and tradeoffs for each.
- How do I let my AI agent pay for a subscription that bills every month? — A subscription charges the same card again each month, so a single-use card fails at the first renewal. Four ways to give an AI agent a card that stays open, from Privacy, Ramp, Meow, and Laso, with the calls for a reloadable card funded in USDC.
- All agent guides, or how Laso compares to the alternatives
Try it: connect a wallet at laso.finance and you'll have a card, gift card, or payout in minutes.
Building an agent? Point it at laso.finance/SKILL.md — it can set itself up.