ACP vs AP2: the two AI-checkout protocols, and what your store actually has to build A developer implemented both OpenAI's Agentic Commerce Protocol (ACP) and Google's Agent Payments Protocol (AP2) for AI-driven checkout, finding they solve the same problem in opposite ways: ACP is session-based while AP2 is mandate-based. The developer built both on top of a single manifest in AI2Web to avoid maintaining two separate worlds, noting challenges like canonical JSON for AP2's cart_hash. A few weeks ago I wrote about describing your site once so any AI can use it. Since then the thing I was hand-waving at "agents will check out for users" stopped being hypothetical. OpenAI shipped ACP and Google shipped AP2, and they solve the same problem in almost opposite ways. I implemented the merchant side of both. Here are the field notes, because the differences aren't obvious until you're in them. The 30-second version ACP Agentic Commerce Protocol, OpenAI + Stripe is session-based. The agent drives a live checkout session on your server, like a headless cart. It powers ChatGPT's Instant Checkout. AP2 Agent Payments Protocol, Google is mandate-based. Your store signs a "here is the cart and the price" object; the buyer's agent signs a "I authorize this" object. It leans on verifiable credentials and now the FIDO Alliance. Same goal. Completely different shape. ACP: a checkout session you don't own the UI for ACP is five REST endpoints and a state machine. The agent creates a session, updates it address, shipping, coupon , and completes it: POST /checkout sessions create from line items POST /checkout sessions/:id update address, shipping, discounts POST /checkout sessions/:id/complete pay What you return is a CheckoutSession: line items, live shipping options, and totals broken out subtotal, discount, fulfillment, tax, total . Money is integer minor units 330 = $3.30 . Payment completes when the agent hands you a Shared Payment Token and you charge it through Stripe. The card never touches the agent. The mental model: it's your existing checkout, minus the browser. AP2: sign the cart, don't run the session AP2 has no session. The agent sends you an Intent Mandate "a red basketball shoe, under $120" . You price it and return a Cart Mandate you have cryptographically signed: { "contents": { / a W3C PaymentRequest: items, total, currency / }, "merchant authorization": "