Agentic payment controls: consent, limits and recovery
Published . Technical control guidance, not legal advice.
Short answer: a safe agentic payment is a controlled state machine, not a model deciding when to press “buy.” Record what the user authorized, enforce a recipient, amount and time boundary outside the model, make the authority revocable, bind payment proof to the intended request, make retries idempotent, preserve a receipt, and connect refunds and disputes to the original evidence. Instrument every step. The protocol can carry some of these controls; the merchant, agent operator, wallet and payment provider still have to implement them.
The minimum control record
| Field | Question it answers | Enforcement point |
|---|---|---|
| Principal | Who gave the instruction? | Identity and authentication system |
| Agent | Which software may act? | Agent identity, registry or workload identity |
| Purpose | What task is permitted? | Mandate, policy and tool authorization |
| Recipient | Who may be paid? | Verified merchant or address allowlist |
| Amount | What is the single and aggregate limit? | Payment session or provider authorization |
| Time | When does authority expire? | Mandate, token and session TTL |
| Request binding | Which basket, body or resource was approved? | Signed mandate, digest or payment challenge |
| Revocation | How can the user stop future action? | Agent and wallet-provider management surface |
| Receipt | What actually happened? | Merchant, protocol and payment-provider records |
1. Turn consent into a bounded authority
AP2 separates user intent from the final payment artifacts and uses mandates to communicate what the user approved. Its authorization guidance says long-lived mandates should be manageable, time-limited and visible to the user. UCP v2026-08-25 adds extensible buyer-consent purposes and richer payment and policy structures.
Whatever the protocol, record constraints in deterministic data:
- allowed merchant or recipient set;
- product, category or task boundary;
- single-payment and aggregate budget;
- currency and permitted instrument;
- start, expiry and renewal rules;
- whether final user confirmation is required;
- what changes force reapproval, such as price, quantity or delivery.
Limit: storing a consent field does not by itself prove informed consent or legal validity. The user experience, authentication, evidence and applicable rules still matter.
2. Separate funding, delegation and execution
AWS's AgentCore Payments guidance treats wallet funding and agent delegation as separate user decisions. It also recommends distinct roles for administration, session management and payment execution, so one identity cannot both raise a budget and spend it.
This separation prevents a compromised agent from widening its own authority. The model may propose an action. A policy engine decides whether the tool call is allowed. A payment session checks amount and time. The wallet or provider signs and settles.
3. Make revocation a normal state
Users can revoke delegated wallet access. Mandates and sessions expire. Credentials rotate. An implementation should expect these events rather than treat them as exceptional.
When authority is revoked:
- stop creating new payment attempts;
- invalidate cached authorization state;
- distinguish revoked authority from a transient provider failure;
- tell the user what stopped and what remains pending;
- preserve completed transaction records without retaining reusable credentials.
4. Bind proof to the intended request
MPP supports a request-body digest for paid POST, PUT and PATCH requests. The submitted credential must match that digest. AP2 binds authorization through signed mandate artifacts. The goal is the same: proof for one amount or body must not authorize a changed request.
Also verify amount, currency, recipient and validity window before authorization. Do not let the model invent a wallet address. AWS explicitly places destination-address validation on the application and recommends trusted sources or allowlists.
5. Design retries before the first payment
Network timeouts create an ambiguous state: the client may not know whether payment succeeded. A blind retry can pay twice.
The MPP protocol requires single-use proof semantics and recommends an Idempotency-Key for non-idempotent methods. AWS tells implementers to use idempotency, cap retries and provide fallback behavior. Apply four rules:
- give each commercial action a stable idempotency key;
- reject replayed proof;
- query the receipt or provider state before creating a new payment;
- stop after a bounded number of attempts and move to reconciliation.
If a payment settles but resource delivery fails, record a compensating action rather than erasing the first event.
6. Connect refunds to the original evidence
Stripe documents refunds for machine payments through its existing Refunds API and Dashboard. UCP's August release adds policy snapshots for returns, refunds and warranties. These are useful building blocks, but neither creates a universal refund rule across all providers and protocols.
A refund record should point to the original merchant order, payment-provider transaction, protocol receipt, user or mandate reference, amount and reason. Partial refunds need item and amount allocation. If access to a digital resource was already delivered, the commercial policy must say how that case is handled.
7. Treat disputes as an evidence problem
The protocol specifications reviewed for this guide do not assign universal liability among the user, agent developer, merchant, issuer, wallet and payment provider. Do not write a product policy as if they do.
Preserve an audit bundle that a support or risk team can understand without replaying a model conversation:
- user authentication and authority reference;
- agent and workload identity;
- merchant and recipient verification result;
- basket or request digest;
- policy decision and applicable limits;
- payment challenge, sanitized result and receipt identifiers;
- delivery, refund and communication events.
Never place raw credentials, private keys or reusable payment tokens in that bundle.
8. Observe the system, not the agent's narration
AWS publishes a concrete metric set for AgentCore Payments: payment requests, successes, failures, latency, spend, active sessions, throttles and validation errors. Its spans include session, connector, instrument, merchant, currency and remaining-budget context.
Alert on events that indicate control drift: recipient changes, repeated failures, rising retry counts, unusual spend velocity, many new recipients, expired-session attempts and reconciliation mismatches. The service generating the payment should generate the audit event. A model's explanation is useful context, not the ledger.
A pre-production control test
- Change the price after authorization and confirm the payment stops.
- Replay the same proof and confirm it is rejected.
- Timeout the response after settlement and confirm the retry does not pay twice.
- Revoke delegation during a task and confirm later steps stop.
- Use an unknown recipient and confirm deterministic rejection.
- Exhaust the budget and expiry separately.
- Complete a partial refund and reconcile every identifier.
- Export an audit bundle and verify that it contains no payment secret.
This guide is a technical control model. It does not replace payment-network rules, provider terms, security review or legal advice. For a deployed example, see AWS AgentCore Payments GA. For protocol choice, see x402 vs MPP.