Each protocol from this seat
Relevance levels: High, a main persona on the protocol page; Medium, owns, implements or verifies a step; Low, relies on or observes a step; None, no role found in the protocol page.
Not one of the main personas on the ERC-8004: Trustless Agents page. The responsibility table gives this persona no step.
Not one of the main personas on the x402 page. The responsibility table gives this persona no step.
Runs a large online store that wants to serve Visa-approved agents, recognize returning customers and take payment data in a signed container. Source [1, 2, 3, 4]
Goals
- Sell to customers who shop through agents
- Recognize returning customers from the ID Token
- Reduce fraud on agent checkouts
Pains
- Proprietary terms that require updates within six months
- No test vectors for the body object signatures
- Personal data in contextualData that brings privacy duties
Implements
- Verification of agenticConsumer and agenticPaymentContainer
- A mapping table from obfuscated email and phone values to accounts
- Decryption of the payment payload with a key onboarded to Visa
Must trust
- Its CDN's verification of the header signature
- Visa's ID Token and key store
- The acquirer and card rules for liability, since TAP sets none
Questions they ask
- Do I verify the body objects myself or does my CDN do it?
- What happens to a chargeback on an agent purchase?
- How do I hash key-entered card data the same way Visa does?
First three steps
- Accept the Product Terms and read the merchant specification
- Ask the CDN to turn on TAP verification in log-only mode
- Onboard a merchant public key for the encrypted payload
Metrics they care about
- Agent checkout conversion
- Fraud and chargeback rate on agent orders
- Share of agent orders matched to existing accounts
A day in the life. Malik leads payments at a fashion retailer. Agents were tripping the bot wall at checkout, so he asks the CDN to let TAP-signed requests through. His team then builds the merchant side: compare each body object's nonce with the header nonce, verify the signatures, and decrypt the payload. The ID Token does not give emails in the clear, so they build a table that maps obfuscated values to existing accounts. Legal asks who carries a dispute on an agent order. He finds no agent-specific rule from Visa and books the orders as ordinary tokenized card-not-present sales for now.
Steps in the responsibility table
- Relies onOnboard the agent and register its key
- Relies onHost the key store (JWKS)
- VerifiesSign each request with a TAP tag
- ImplementsVerify header signature, window and nonce
- VerifiesSign the consumer and payment objects
- OwnsVerify body objects and process payment data
- Relies onAuthorize the card payment
- ImplementsHandle a dispute on an agent purchase
Builds and runs its own ACP server: checkout endpoints, order webhooks, discovery and feeds, often across several agent surfaces. Source [5, 6, 7, 8, 9]
Goals
- One integration for several agent platforms
- Keep pricing, tax and fraud logic authoritative
- Reuse existing order management
Pains
- Released spec folders change after release
- OpenAI docs and the spec disagree on status codes and names
- UCP asks for a similar but different integration
Implements
- /checkout_sessions endpoints with idempotency storage for 24 hours or more
- Payment handlers and PSP charging of vault tokens
- Signed order_create and order_update webhooks
- /.well-known/acp.json
Must trust
- Agents to render totals and messages as returned
- The PSP to reject out-of-allowance charges
- Bearer keys to stay secret on both sides
Questions they ask
- Which version should we pin, and at which commit?
- Do we run ACP and UCP side by side?
- How do we map our order states to the ACP order status list?
First three steps
- Pin a commit of spec/2026-04-17 and validate your examples against it
- Implement idempotency exactly as RFC section 6 says
- Add the docs-versus-spec differences to your test suite
Metrics they care about
- Conversion by agent surface
- Idempotency conflicts and replays
- Chargebacks on agent orders
- Latency of create and complete
A day in the life. Lena's team at a home goods retailer built an ACP server in a sprint. The hard part was not the endpoints but the drift: the RFC examples sent items with a quantity that their schema validator rejected, so they followed the JSON Schema and the repository's examples file. They store every idempotency key for 48 hours and return 422 on a changed body, while their client library also tolerates 409 because OpenAI's checklist says so. A month later they publish acp.json and start a UCP adapter, reusing the same order service but a separate checkout layer.
Steps in the responsibility table
- OwnsPublish /.well-known/acp.json
- ImplementsCreate and update the checkout session
- OwnsReturn authoritative totals and messages
- ImplementsCharge the token inside the allowance
- OwnsCreate the order (merchant of record)
- ImplementsSign and verify order webhooks
- OwnsHandle refunds and chargebacks
The business: publishes /.well-known/ucp, runs the checkout endpoints, sets status and totals, and stays merchant of record. Source [10, 11, 12, 13, 14]
Goals
- Sell through AI Mode, Gemini and other agent surfaces without one integration per platform
- Keep the customer relationship, its PSP and its own terms
- Hand off to its own web checkout whenever policy needs the buyer
Pains
- Two-layer negotiation and full-replacement updates are easy to get subtly wrong
- Attribution gaps when checkout happens on a platform surface
- Reported automatic enrollment of Shopify merchants in Google's native checkout without an explicit opt-in
Implements
- The business profile with capabilities, payment handlers and a keys array
- REST or MCP checkout endpoints with idempotency storage of 24 to 48 hours
- continue_url handoff, confirmation emails and signed order webhooks
Must trust
- The platform profile and keys named in UCP-Agent
- The credential provider's handler and the token its PSP receives
- Google to route traffic as documented in its FAQ
Questions they ask
- Which capabilities and extensions should we advertise first?
- Does our PSP process Google tokens?
- When should we return requires_escalation instead of an error?
First three steps
- Read the v2026-08-25 overview and the checkout spec at the tag, not on main
- Run the samples REST server and the conformance suite against it
- Publish a minimal profile with checkout and one payment handler
Metrics they care about
- Checkout completion rate by platform
- Escalation rate and continue_url conversion
- Idempotency conflicts (409) and duplicate orders
A day in the life. Dana leads commerce engineering at a home-goods retailer. Her team publishes a profile at /.well-known/ucp with checkout, fulfillment and a Google Pay handler, and keeps its own PSP. The first week, agent orders arrive through AI Mode, and the platform's profile and signature check out on every call. Large furniture orders need a delivery window that their API cannot take, so the checkout returns requires_escalation with a continue_url to the store's own page. Conversion on that path is lower, so she adds a scheduling field to the next release. The merchant-of-record question never comes up: refunds and disputes stay with her team, exactly as before.
Steps in the responsibility table
- OwnsPublish /.well-known/ucp with keys
- VerifiesAdvertise UCP-Agent and verify the platform profile
- OwnsCompute the capability intersection
- VerifiesFill the checkout (full-replacement updates)
- Relies onReview and place the order in a trusted UI
- OwnsEscalate with continue_url
- Relies onIssue the opaque token
- Relies onAuthorize and settle the token
- OwnsSign the checkout and verify the AP2 mandate
- OwnsSend signed order webhooks
- OwnsHandle refunds and disputes
Not one of the main personas on the Stripe MPP (Machine Payments Protocol) page. The responsibility table gives this persona no step.
Merchant: signs every checkout, verifies Checkout Mandates and open-mandate constraints, and returns Checkout Receipts. Source [15, 16, 17, 18]
Goals
- Accept agent orders with proof of user approval
- Keep their own checkout and payment stack
- Clear errors when agents misbehave
Pains
- Signature rule conflict for the Checkout JWT (issue 268)
- Line-item matching needs a max-flow style check
- No proof of production use to justify the work
Implements
- checkout_jwt signing with ECDSA
- Checkout Mandate and constraint verification
- Checkout Receipt JWT with status and errors
- The UCP extension when selling through UCP
Must trust
- Its processor to verify the Payment Mandate
- The agent to forward the exact checkout_jwt
- Its signing key custody
Questions they ask
- Should I sign checkouts with ES256 or Ed25519?
- How strictly do I match line items?
- Which UCP errors do I return?
First three steps
- Sign checkouts with ES256 and include enough entropy
- Implement checkout_hash comparison against the latest checkout_jwt
- Add UCP dev.ucp.common.payment.ap2_mandate to /.well-known/ucp if you sell through UCP
Metrics they care about
- Share of agent orders with valid mandates
- Constraint rejections per day
- Chargebacks on agent orders
A day in the life. Tomas leads checkout engineering at an outdoor retailer that sells through UCP. His team signs every checkout with ES256 because the specification forbids deterministic signatures, even though their bot-auth setup already uses Ed25519, so they now manage two key types. Today an agent presents a closed Checkout Mandate for a tent, but the cart has a different color than the open mandate allows. His service evaluates checkout.line_items, finds no match and returns a Checkout Receipt with unresolved_constraint. Ten minutes later the same order comes back with a user-signed closed mandate and goes through. He logs the round trip for the weekly report.
Steps in the responsibility table
- OwnsSign the checkout (checkout_jwt)
- OwnsVerify the Checkout Mandate and constraints
- OwnsReturn signed receipts
- ImplementsVerify mandates and receipts in a dispute
- ImplementsSet retention and consent policy
Not one of the main personas on the Mastercard Agent Pay page. The responsibility table gives this persona no step.