Stripe Link Wallet for Agents: One-Time-Use Cards and SPTs
Stripe Link’s wallet for agents launched in April 2026 as the fastest path to “agent pays at any Visa/MC merchant.” This post goes deep on the architecture, the one-time-use card model, the SPT (Shared Payment Token) flow, and the developer integration pattern via the Link API.
The problem Stripe is solving
AI agents can browse the web, click buttons, and fill checkout forms — but they can’t actually pay. They don’t have a credit card, a bank account, or a wallet. The agent’s human owner could pre-load a card, but that gives the agent unlimited access with no per-spend review. That works for some agents; it doesn’t work for an agent that might be tricked into spending $400 on a “free trial” or that has a buggy prompt and decides to buy 10,000 of something.
Stripe’s Link wallet for agents is the answer: a hosted wallet that holds your existing cards and bank accounts, and gives the agent the ability to request a spend — but every spend is reviewed by you, the human, in Link’s UI before the money moves.
How the one-time-use virtual card works
When an agent wants to pay, it doesn’t get your saved Chase Sapphire card number. It gets a one-time-use virtual card — a unique PAN, CVV, expiry, and billing address that’s valid for exactly one authorization (or one merchant, depending on the configuration). The card is provisioned to the merchant through Stripe’s payment rails and authorized against the underlying funding source.
The flow looks like this:
- Agent calls
link.wallet.spend()with the merchant, amount, and category. - Stripe creates a one-time-use virtual card via Issuing and provisions it to the merchant.
- You get a push notification in the Link iOS/Android app: “Your agent wants to spend $X at Merchant Y. Approve / Decline.”
- You tap Approve.
- The merchant charges the virtual card; the charge clears against your underlying funding source.
- You see the charge on your Chase/Amex/etc. statement with a “LINK-AGENT” memo.
If you decline, the virtual card is voided before the merchant can charge it. The agent’s request fails and it gets a link_wallet_declined error from the API.
The Shared Payment Token (SPT) model
For payments that don’t need a card network (USDC, EURC, future FedNow, RTP), Stripe uses Shared Payment Tokens (SPT) — payment-method-agnostic tokens that the agent can use to send money directly from the user’s Link balance (or a linked stablecoin wallet) to the merchant. SPTs are programmable, machine-readable, and don’t have the 3-D Secure friction of card auth.
SPTs are the bet Stripe is making on the future: as the world moves toward stablecoin-native commerce, the agent’s payment rail needs to be a token, not a card number. The same link.wallet.spend() API call works with cards or SPTs — the difference is invisible to the agent.
Approval granularity: per-spend, per-merchant, per-category
Link wallet for agents doesn’t have a single “approve / decline” UX. There are three approval levels:
- Per-spend review: every transaction, regardless of amount, requires a tap. Safest, but most friction.
- Per-merchant allowlist: agents you trust (Amazon, your SaaS vendor) can spend up to a cap without review. Untrusted merchants still require approval.
- Per-category rules: all “Software / SaaS” purchases under $200 are auto-approved. All “Travel” purchases require review. All “Crypto” purchases are blocked.
You can mix and match. A common pattern: per-spend review for the first 30 days, then per-merchant allowlist for trusted vendors after the agent has proven reliable.
Developer integration
From the agent’s perspective, the integration is a single API call:
// Agent code (Node.js)
const link = require('stripe')(process.env.STRIPE_SECRET_KEY);
const spend = await link.wallet.spends.create({
amount: 30000, // $300.00 in cents
currency: 'usd',
merchant_domain: 'hilton.com',
category: 'lodging',
description: 'Hotel booking for Mon night',
idempotency_key: 'agent-booking-2026-04-29-hilton-mon',
});
console.log(spend.status);
// → 'pending_review' | 'approved' | 'declined' | 'completed'
The agent then polls or subscribes via webhook for the spend status. When the status hits approved, the agent gets the virtual card details and can hand them to the merchant (via the merchant’s checkout API, or by filling a form, or by passing a Stripe Payment Element).
Limits and constraints
Link wallet for agents has soft limits in the launch window:
- $1,000/day per agent without additional verification (Stripe can raise this with KYC bump).
- $10,000 single transaction cap by default.
- 50 transactions/day per agent to prevent runaway loops.
- No international wire transfers (yet — coming with FedNow + RTP support).
- Stripe-prohibited merchant categories (gambling, adult content, crypto on-ramps) are blocked at the Link wallet level regardless of the agent’s intent.
What it doesn’t do (yet)
As of April 2026, Link wallet for agents is cards + SPT + ACH. It’s not yet:
- On-chain by default — SPT supports stablecoin transfers, but Link doesn’t expose a raw EVM/Solana signing API. For on-chain agency, you need OpenWallet.sh or a self-custody stack.
- Multi-party approval — every spend is approved by one human. Corporate cards with multiple approvers aren’t in the launch.
- Subscription management — the agent can pay a recurring bill, but Link doesn’t yet handle “this subscription was created on date X, please renew it.” That’s a Stripe Billing integration, not a Link feature.
FAQ
Do I need a Stripe account to use Link wallet for agents?
Yes. The agent’s owner needs a Stripe account in good standing, a Link profile, and at least one verified funding source. The agent itself doesn’t need a Stripe account.
What happens if I don’t respond to a review notification?
After 24 hours, the request expires and the virtual card is voided. The merchant never gets a usable card number.
Can the agent exceed the per-spend cap?
No. The cap is enforced at the Stripe API level. A request for $1,001 fails with link_wallet_limit_exceeded before the virtual card is ever created.
Is there a programmatic approval mode for trusted agents?
Yes — the per-merchant allowlist and per-category rules work without human review. The agent’s behavior is logged for audit.
Want more like this?
Get our best work delivered weekly. No spam, unsubscribe in one click.
Subscribe to Newsletter →