laso

← All agent guides

How do I let my AI agent use my own credit card safely?

Last reviewed: August 2026

The short answer

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

Ways to let an agent spend, and what each one protects.
ApproachAgent sees the number?Who approves each order
Paste your card into the agentYesNobody. Limited only by the card’s own limit
Single-use or low-limit virtual card from your bank or card providerYes, but it is capped and expiresNobody, unless you add a review step yourself
Laso saved card (POST /buy-with-saved-card)No. It sees the last four digitsYou, with a passkey, on every order
Laso prepaid card (GET /get-card)Yes, but it holds only the amount loadedNobody. 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

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

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.