Agentic payments are delegated authority, scoped credentials, machine-readable checkout, deterministic policy enforcement, and dispute evidence wrapped around a payment rail.
The payment rail can be cards, PayPal, bank transfer, stablecoins, or x402, but the hard part is proving “the user meant this, the agent stayed inside bounds, and the merchant/payment processor can trust it.”
Sample flow
“Buy me an Anker USB-C charger under
$40.”
Step 1: Generate User intent
{
"task": "buy_charger",
"brand": "Anker",
"maxAmount": 40,
"currency": "USD"
}user intent != payment authorization- The agent knows what to shop for
Step 2: Agent shops
- Can be via,
- Browser checkout
- Bridge to the current internet
- No new protocol required. No merchant integration required.
- But the browser is a brittle surface - messy checkouts, captcha, etc.
- Flow:
User -> Agent -> Browser -> Store checkout -> AgentPay virtual card
- ACP - connects merchants to ChatGPT
- UCP - open standard from Google
- direct merchant API/ MCP
- Store exposes tools like
search_products(),create_cart(),get_checkout_quote(),submit_order(), etc. - Flow:
User -> Agent -> Merchant MCP/API -> AgentPay -> Merchant
- Store exposes tools like
- x402
- Browser checkout
- Once the agent finds the product, it generates a proposed payment quote (in case of browser checkout that’s the details in the checkout),
Agent found Anker 30W Charger Cost: $29.99 tax: $2.7 Shipping: $0 Total: $32.69 Merchant: Amazon
Step 2.5: Identity challenge
- Doesn’t matter for buying a charger, but matter when you buy medicines that could be age restricted for example
- For flows where payment alone is not enough: prescriptions, age-gated goods, travel, account opening, ticketing, professional licenses, memberships, business identity, KYC/AML-gated services, and high-risk checkout
- x401
- got to rename this example
Step 3: Verify quote against User intent
# session context
Is it a charger? yes
Is it Anker? yes
Is total <= $40? yes
# global user context
Is merchant allowed? yes
Is shipping address correct? yes- The verification has to be done against user intent + global user context - AP2 tries to mandate this combination’s structure
Step 4: Scoped payment credential (given quote verification is successful)
- A payment rail that works inside the session’s authorization (Ex: Authorization maybe “You may spend up to $40 at this merchant for this charger before 3pm.”)
- It might be one of,
- virtual card
- wallet signature
- an x402 payment payload
- a PayPal/payment-provider token
- a bank debit authorization
Step 5: Merchant send charge request
- Processor auth - “This charge matches / does not match the authorization.”
Step 5.5: Step-up
- User approval, OTP, 3DS, passkey, identity proof, manual review
Evidence - User intent, mandate/grant, checkout quote, identity proof result, auth decision, receipt, refund/dispute trail
flowchart TD A["UserIntent: buy regulated / identity-gated item"] --> B["AgentRuntime: parse task + constraints"] B --> C{"CommerceSurface"} C -- "ACP / UCP / MCP / Browser" --> D["MerchantCheckoutOrResource"] C -- "Paid API" --> X402A["x402: HTTP 402 Payment Required"] D --> E{"MerchantGate"} E -- "No identity gate" --> AP2["AP2 / AgentPayGrant: purchase authorization"] E -- "Identity required" --> X401A["x401: HTTP 401 Proof-Required"] E -- "Payment required" --> X402A E -- "Identity + payment required" --> X401A X401A --> X401B["IdentityWallet: OpenID4VP / VC / SD-JWT / mDoc"] X401B --> X401C["Proof-Presentation: scoped delegation + identity claims"] X401C --> X401D{"VerifierCheck: challenge + agent DID + issuer trust + revocation"} X401D -- "fail" --> F1["Block: identity_or_authorization_failed"] X401D -- "pass" --> AP2 AP2 --> P1{"PolicyEngine: AP2 Mandate / AgentPayGrant"} P1 -- "fail" --> F2["Block: purchase_policy_violation"] P1 -- "pass" --> PAY{"PaymentRail"} PAY -- "Card" --> CARD["AgentPayVirtualCard: single_use / merchant_locked / amount_locked"] PAY -- "x402" --> X402B["x402.PaymentSignature: signed payment payload"] PAY -- "Wallet" --> WALLET["WalletPayment: USDC / bank / external wallet"] CARD --> AUTH["ProcessorAuth: merchant + amount + MCC + TTL check"] X402B --> FAC["x402.Facilitator: verify + settle"] WALLET --> SETTLE["WalletSettlement"] AUTH --> DONE["OrderConfirmed + Receipt + EvidenceLedger"] FAC --> DONE SETTLE --> DONE
-
Authorization model
AP2.Directwhen the user sees the exact checkout,AP2.Autonomouswhen the user pre-approves constraints, orAgentPayGrantfor your own scoped spend model. -
Payment rail
Card, AP2 card credential, wallet/stablecoin, external wallet, orx402. -
Hard stops
Kill switch off, KYC incomplete, policy mismatch, price drift, wrong merchant, 3DS failure, replay, insufficient funds, or risk decline.