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
    • x402
  • 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.Direct when the user sees the exact checkout, AP2.Autonomous when the user pre-approves constraints, or AgentPayGrant for your own scoped spend model.

  • Payment rail
    Card, AP2 card credential, wallet/stablecoin, external wallet, or x402.

  • Hard stops
    Kill switch off, KYC incomplete, policy mismatch, price drift, wrong merchant, 3DS failure, replay, insufficient funds, or risk decline.