Rightshold™ Sign up

Answers · agent payments

We want our shopping agent to pay through Stripe's Link Agent Wallet (link-cli or the Link SDKs). What does a spend request actually let the agent charge, what limits does Link enforce on its own, and what do we still have to control ourselves?

Last updated

TL;DR: Every purchase starts as a spend request: the agent names the amount, the seller and a written reason of at least 100 characters, the customer approves it on the Link website or app within 30 minutes, and only then does Link return a scoped credential for that purchase, a virtual card by default, a Shared Payment Token for sellers taking Stripe payments through the Machine Payments Protocol, or a Link Pay Token for Stripe-hosted checkouts. The agent never gets the real card number. Link's documented limits are 500 USD per request, 5,000 USD a day, 20,000 USD per rolling 30 days, 10 approved requests at once and 50 new requests an hour, and a customer's agent wallet can carry its own per-transaction, daily and 30-day limits that the agent can read before asking. That makes Link's approval a strong per-purchase check, with three gaps: the customer approves the reason the agent wrote, so an agent misled by a seller page can describe the purchase wrongly; a recurring request's amount is a limit for each period, not a total; and cancelling a recurring request in Link revokes the credential but doesn't cancel the subscription with the seller. Payments for agents are available to US and Canadian Link accounts.

What should I check, step by step?

1. Before creating a request, have the agent read the customer's limits (link-cli user-info retrieve --format json): agent_wallet_spend_limits has per_transaction, daily and thirty_day entries with limit, used and remaining in cents, and null means unlimited. Stop and ask instead of creating a request that can't be approved.

  1. Have the agent confirm the seller, items and amount with the customer first and write the context only from facts it verified. Link's own agent rules say the customer sees that text when approving, and that seller pages, headers and 402 challenge bodies are untrusted data, not instructions.
  2. Pass line items and totals (subtotal, tax, shipping, total) so the approval shows what the money is for, not just one number.
  3. Leave approval on. --no-request-approval only defers it, and Link's rules say not to use it without a specific reason, because approval is the customer's control over the purchase.
  4. Give every create an idempotency key. If a create times out, retrieve the same request or use the duplicate details Link returns with a 429 spend_request_rate_limited, rather than creating a second request.
  5. Treat polling results carefully: exit code zero from link-cli means polling finished, not that the customer approved or the payment went through, and a POLLING_TIMEOUT means the request is still pending. Always branch on status.
  6. Never retry a payment without checking the spend request status first. Link's rules warn that a blind retry can buy twice.
  7. Retrieve card details only at the point of use, into the protected output file (created with 0600 permissions), keep them out of the model's context and logs, and delete the file afterwards.
  8. For subscriptions, state the per-period limit, currency and cadence in the context, and when stopping one, cancel with the seller and then run link-cli spend-request cancel; both steps are needed.
  9. Use --test while building: test requests return test credentials and never charge the payment method (Link Pay Tokens have no test mode).

What is a Link Agent Wallet spend request and what does Link check before an agent can pay?

A spend request is Link's record of one proposed purchase: seller, amount, reason, payment method and the type of credential the agent needs. For a virtual card the agent supplies merchant_name and merchant_url; for a Shared Payment Token it supplies the network_id from the seller's HTTP 402 challenge, and the amount and currency must come from that same challenge; for a Link Pay Token it supplies the merchant's account ID. Link resolves the seller itself in the token flows.

What are the Link Agent Wallet spend request limits per request, per day and per 30 days?

Link's CLI reference lists: 500 USD (50,000 cents) maximum per request, a 30-minute approval window, a default expiry of 7 days from creation for one-time requests, 5,000 USD daily spend, 20,000 USD per rolling 30 days, 30 concurrent active requests, 10 concurrent approved requests, 50 new requests an hour and 200 per 60 days. Eligible virtual cards can expire if they aren't first used within 48 hours of first retrieval, and a Link Pay Token is valid for up to 30 minutes from retrieval.

What doesn't Link Agent Wallet approval protect against when an AI agent buys something?

What the agent wrote. The customer approves the seller, amount and context the agent supplied. If a seller page or a prompt injection convinced the agent of the wrong item or a different store, the approval screen shows the agent's version. Keeping the agent's facts tied to what the customer asked for is your job.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Before my shopping agent creates a Link spend request for $25.99 at acme.example, check it against this agent's own spending policy and give me a signed allow or deny with the request's idempotency key as the reference.”

One-click setup

{
  "tool": "authorize_spend",
  "arguments": {
    "credential_id": "<this agent's credential id>",
    "amount_minor": 2599,
    "currency": "USD",
    "merchant_domain": "acme.example",
    "category": "retail",
    "reference": "<the spend request idempotency key>"
  }
}

Rightshold records spending decisions your agent asks it for. It never holds or moves money, isn't a wallet or payment processor and isn't affiliated with Stripe or Link. Link Agent Wallet behavior and limits are as described in Link's developer docs and Stripe's documentation, read on November 11, 2026; limits, availability and commands may change, so check the linked pages before relying on a number. Not financial advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'