Letting an agent pay
How to set spending limits for an AI agent
Per-payment cap, daily cap, an auto-approve band and an ask band, enforced outside the model. How to choose each number and what happens at each edge.
Use four numbers enforced outside the model: a per-payment cap, a daily cap, an auto-approve limit under which payments go through on their own, and an ask limit up to which a person approves. Anything above the ask limit, the per-payment cap or the day's remaining budget is refused.
Why is this harder than it sounds?
A single number is not enough. A daily cap alone lets one payment use the whole day at once. A per-payment cap alone lets an agent stuck in a loop make the same small payment hundreds of times. And neither tells you which payments you want to see before they happen. The limits also have to live somewhere the model cannot edit, because an agent that can be told to raise its own limit does not have one. Finally, the limits need to be consistent with each other, or you end up with a configuration that looks safe and behaves strangely.
How do you do it?
- Start from the largest single payment you'd accept. Set the per-payment cap to the biggest amount you would ever want this agent to pay in one go, even with your approval.
- Set a daily cap you could lose without trouble. The daily cap is the most the agent can spend in a day, counted across all its payments. Size it as a float you can afford to lose to a bug or a bad instruction, not as a credit line.
- Choose an auto-approve limit for small, routine payments. Below this amount the payment can go through without you. Keep it at the size of the routine payments you identified, such as a few dollars of API credit.
- Choose an ask limit for payments you want to see. Between the auto-approve limit and the ask limit, the payment is held until you approve it. Above the ask limit it is refused.
- Keep the order consistent. Auto-approve should be no more than ask, ask no more than the per-payment cap, and the per-payment cap no more than the daily cap. A good policy service rejects anything else when you save it, rather than failing at payment time.
- Tell the agent what to do when it hits a limit. Give it a way to read its remaining budget, and an instruction to stop and ask you rather than retrying or splitting a payment into smaller pieces.
What it does not mean
- A limit does not stop an agent paying the wrong recipient. Pair amount limits with a recipient allowlist where you can.
- A daily cap does not reset when you choose. Check which time zone the service counts a day in; Veyra counts UTC days.
- Raising a limit in the prompt does nothing if the service enforces it, and lowering it in the prompt does nothing if the service doesn't.
Common questions
What happens when an agent hits its daily cap?
The payment is refused and the agent is told why. In Veyra the result carries a policy reason such as DAILY_LIMIT, and the tool description tells the agent to ask the human rather than retry.
Can an agent get round a per-payment cap by splitting a payment?
It can try, which is why the daily cap matters: splitting does not create more daily budget. Payments under the auto-approve limit also need an allowlisted recipient in Veyra before they can go through unattended.
Do plan limits and spending limits interact?
They are separate. A Veyra plan sets how many endpoints and sources you can have and how many auto-pay executions a month; your policy sets the money limits, and a paid plan never lets an agent exceed them.
Where does Veyra fit?
Veyra uses exactly these four limits per MCP endpoint, plus an optional recipient allowlist. It checks them server-side on every create_payment call, in order: recipient, per-payment cap, the day's total (UTC), then the auto and ask bands. It rejects inconsistent limits when you save them. The agent can read its policy and remaining allowance with get_budget but has no tool to change them. Limits are editable from the endpoint page at any time, and every change is recorded in the audit log with the before and after values. Note that auto-pay needs a recipient allowlist: with an empty allowlist, a payment under the auto-approve limit is held for your approval instead.
Sources
Terms on this page
- Auto-approve limitAn auto-approve limit is the largest single payment an agent may make without a person approving it, within any other caps that apply.
- Payment intentA payment intent is an object representing a payment that has been requested but not necessarily completed, which moves through defined states such as awaiting approval, submitted, confirmed or cancelled.
This page explains how agent payments and the related technology work. It is not financial, investment, legal or tax advice. Protocols and provider features change; check the linked official sources before relying on a detail.