Agentic Checkout

Agentic checkout is the transaction-completion step of agentic commerce — the session state machine, scoped payment tokens, human-in-the-loop seams, order webhooks, and the still-unsettled chargeback question.

First published: Jul 3, 2026 · Last updated: Jul 14, 2026 · Advanced
demand #3 in AI Commerce#15 in Ecommerce SEO#249 on the site

Agentic checkout is the transaction-completion capability of agentic commerce: an AI agent creates, updates, and finalizes a purchase on a shopper's behalf. It's one building block of ACP and of UCP, not a protocol of its own. Technically it's a state machine — ACP moves a checkout session through statuses like not_ready_for_payment → ready_for_payment → requires_escalation/authentication_required → completed, mirroring UCP's incomplete → requires_escalation → ready_for_complete — and the escalation states are the built-in seam where a human still has to authorize (login, 3DS step-up, address check, B2B approval). Payment runs through scoped tokens (merchant-locked, amount-capped, time-limited, single-use) so the agent never holds a raw card. Order confirmation is a push: merchants send HMAC-signed, full-object webhooks. The merchant stays merchant-of-record, so settlement/refunds/chargebacks sit with the merchant and its PSP — but the chargeback evidentiary question (how you dispute a purchase the 'buyer' was an AI agent) is genuinely unresolved as of mid-2026. And adoption is early: only about a dozen Shopify merchants had gone live with ChatGPT checkout before OpenAI's March 2026 pivot to discovery-plus-redirect.

TL;DR — Agentic checkoutAgentic checkout is the transaction-completion step of agentic commerce: the mechanism by which an AI agent creates, updates, and finalizes a purchase on a shopper's behalf — selecting fulfillment, calculating tax and shipping, passing a scoped payment token, and triggering order creation — often without the shopper visiting the merchant's site. is the transaction-completion capability of agentic commerce — create, update, complete/cancel a checkout session, delegate payment, confirm the order. It’s one building block of ACPThe Agentic Commerce Protocol (ACP) is an open standard/protocol whose first implementing AI platform is OpenAI and first compatible payment provider is Stripe, defining how AI shopping agents discover products, manage carts, and complete purchases on a buyer's behalf — by reading a merchant's product feed and APIs instead of crawling the website. and one of UCPThe Universal Commerce Protocol (UCP) is an open-source standard (Apache 2.0) led by Google and co-developed with Shopify, Etsy, Wayfair, Target, and Walmart that lets AI agents, merchants, and payment providers transact through a common language instead of bespoke integrations. Merchants advertise their capabilities at /.well-known/ucp., not a standalone protocol. The technical spine is a state machine: ACP walks a session through not_ready_for_paymentready_for_payment → (requires_escalation / authentication_required when needed) → completed, mirroring UCP’s incompleterequires_escalationready_for_complete. The escalation states are the deliberate human-in-the-loop seam. Payment delegation uses scoped tokensA token is the smallest unit of text (or image/audio/video) an LLM processes — roughly 4 characters, or about ¾ of an English word. A context window is the maximum number of tokens (input plus output) a model can hold at once, like its short-term memory. — merchant-locked, amount-capped, time-limited, single-use — so the agent never holds a raw card. Order confirmation is a push: merchants POST HMAC-signed, full-object webhooks. The merchant stays merchant-of-record, so settlement/refunds/chargebacks sit with the merchant and its PSP — but the chargeback evidentiary framework is genuinely unresolved as of mid-2026. Build and test for idempotency-safe retries, webhook signature verification, and the escalation paths before you flip it on.

Evidence for this claim OpenAI's commerce specification models checkout as a stateful API flow with explicit completion and escalation states. Scope: OpenAI commerce implementation; other agentic checkout systems may use different state names. Confidence: high · Verified: OpenAI Commerce: Checkout specification Evidence for this claim OpenAI's delegated-payment specification uses scoped payment tokens and keeps the merchant as merchant of record. Scope: OpenAI delegated-payment flow, not a guarantee that every agentic checkout implementation handles payment identically. Confidence: high · Verified: OpenAI Commerce: Payment specification

Scope: this is the transaction step, not the whole protocol

Agentic checkout is one capability. In ACP it’s literally the Agentic Checkout block (one of five, alongside Product Feed, Delegate Payment, Delegate Authentication, and Orders/Webhooks). In UCP it’s the checkout capability inside a broader, capability-negotiated spec. The sibling articles on ACP and UCP cover the surrounding protocol and business context — feed quality, the /.well-known/ucp profile, the March 2026 pivot’s discovery implications. This page stays on the mechanics of completing the transaction: the session lifecycle, payment delegation, where a human intervenes, order confirmation, and liability.

One framing to carry in from the ACP sibling and not re-argue: agents transact against feeds and APIs, not your crawled HTML. So checkout reliability — not page copy — is what’s being optimized here.

The checkout session state machine

The single most differentiating thing to understand about agentic checkout, and the thing most write-ups skip, is that a checkout is a session with a status, and that status moves through a defined machine.

ACP’s Checkout reference lists the full status enum: incomplete, not_ready_for_payment, requires_escalation, authentication_required, ready_for_payment, pending_approval, complete_in_progress, completed, canceled, in_progress, and expired. The happy path is short — not_ready_for_paymentready_for_paymentin_progresscompleted, with canceled as the other terminal state. Per ACP’s lifecycle concepts, providing a required fulfillment option is what transitions a session from not_ready_for_payment to ready_for_payment; a failed payment can drop it back to ready_for_payment for a retry.

The interesting states are the ones that aren’t the happy path:

  • requires_escalation / authentication_required — the agent can’t proceed alone; something needs a human or an extra verification (see the next section).
  • pending_approval — waiting on an approval, e.g. a B2B purchase-order sign-off.
  • expired — the session timed out (CheckoutSession carries expires_at).

This is the same underlying design as UCP’s checkout, which runs incompleterequires_escalationready_for_complete, where requires_escalation hands control back to a human via a continue_url (covered on the UCP sibling). Two separate protocols, one convergent pattern: a checkout can’t always finish without stopping to ask a human something. That’s not a limitation bolted on — it’s the core shape of the design.

Escalation is a first-class checkout state: the agent pauses, a human completes the required step, and the same session resumes. Source: Agentic Commerce Protocol

The happy path assembles the cart and fulfillment choice, becomes ready for payment, processes a scoped payment token, and completes. When a step-up is needed, the session enters requires escalation or authentication. A human completes login, 3-D Secure, or approval, then the session resumes at payment processing.

© Patrick Stox LLC · CC BY 4.0 ·

A practical note for anyone building against ACP: a malformed request returns an HTTP-level error object (type of invalid_request, request_not_idempotent, processing_error, or service_unavailable). But a business-logic problem inside an otherwise-valid session comes back as a MessageError object in the session’s messages[] array, not an HTTP error. You have to handle both, and they’re easy to conflate in early integration work.

How payment delegation works

The whole point of the payment-delegation layer is that raw card data never reaches the agent. Instead of handing the agent a card number, the buyer’s payment details are turned into a scoped token.

Per OpenAI’s Delegated Payment spec, the delegated payment payload is sent to the merchant’s PSP or vault directly, and the PSP or vault returns a payment token scoped to the delegated payment outside of PCI scope. That token is bounded on four axes:

  • reason — currently "one_time": single-use.
  • max_amount — caps the charge to the checkout total; the token can’t be used to overcharge.
  • expires_at (RFC 3339) — the token has a hard expiry.
  • merchant_id + checkout_session_id — bound to one merchant and one session.

So a delegated token is merchant-locked, amount-capped, time-limited, and single-use. That’s the mechanism that lets an agent “spend money” without ever being trusted with a reusable card credential. On the ACP side, Stripe’s Shared Payment Token is described as the first Delegated Payment Spec–compatible implementation, with more PSPs coming. UCP uses a parallel decoupled model that separates payment instruments from handlers (covered on the UCP sibling).

PCI scope is a real decision here. OpenAI’s spec is explicit that directly integrating with the Delegated Payment Spec involves directly handling cardholder data and may affect your PCI scope, and direct integration requires PCI DSS Level 1 status. For most merchants the tokenized path (network tokens / a PSP that handles the delegation) is the way to keep cardholder data out of your environment. Choosing between “handle CHD directly” and “let the PSP tokenize” is the first architecture decision — the Decision tab walks it.

Where a human still has to step in

“The shopper still authorizes it” is true but vague. The protocol-level triggers are specific, and naming them is how you design the handoff instead of hitting a silent dead end:

  • 3-D Secure / step-up. ACP models this with InterventionCapabilities (supported types include 3ds and address_verification), an enforcement level (always / conditional / optional), and a display_context (native / webview / modal / redirect). The outcome of a step-up comes back as an AuthenticationResult with values like authenticated, denied, rejected, abandoned, canceled, or not_supported.
  • requires_escalation / authentication_required states. These are the session statuses that say “I need a human or an extra check before I can move on.”
  • B2B approval_required. The PaymentData object carries B2B fields (purchase_order_number, payment_terms, due_date, approval_required) — agentic checkout isn’t only DTC.
  • UCP’s continue_url handoff. UCP’s requires_escalation surfaces a continue_url the buyer finishes themselves (login, confirmation, age check). Same seam, different protocol.

The takeaway: a transaction that escalates cleanly is far better than one that silently dead-ends. Design the escalation paths as first-class flows, not error cases.

Order confirmation is a push, not a pull

Here’s a piece the competing explainers largely skip. After a purchase, the agent platform doesn’t sit there polling your API for order status. The merchant pushes signed webhooks.

Per ACP’s webhook reference, merchants POST order events so the agent platform can stay in sync with fulfillment-grade truth. Two event types carry it: order_create for new orders and order_update for state changes. Order status values referenced include created, manual_review, confirmed, canceled, shipped, and fulfilled. Three details matter for anyone implementing it:

  • Requests must be signed with an HMAC signature in the Merchant-Signature header. Unsigned or badly-signed requests get a 401.
  • The data field must contain the full Order object, not incremental deltas. You send the whole state every time.
  • Response codes to handle: 200 success, 401 invalid signature, 429 rate-limited.

So “how does the platform know the order went through?” has a concrete answer: you tell it, with a signed, full-object POST, and you handle the platform’s 429 back-pressure.

Fraud, chargebacks, and liability — what’s settled and what isn’t

This is the most honest and most differentiating section, so I’ll be plain about where the line between “settled” and “open” actually is.

What’s settled: the merchant of record. OpenAI’s own payment spec states that OpenAI is not the merchant of record — under ACP, merchants bring their own PSP, and settlement, refunds, chargebacks, and compliance remain with the merchant and their PSP. Rye’s Arjun Bhargava corroborates this independently: both protocols keep the merchant as the merchant of record, responsible for fulfillment, chargebacks, and disputes. This is consistent with the merchant-of-record framing on both sibling pages — carry it forward, don’t re-derive it.

What’s not settled: the chargeback evidentiary framework. Merchant-of-record tells you who eats a dispute by default. It does not tell you how you win one when the “customer” was mediated by an AI agent. Traditional chargeback defense leans on human-generated evidence trails (IP, device, browsing behavior, a human clicking “buy”). Agent-generated authorization logs are a different kind of evidence, and the card-network dispute rules weren’t written for them. Chargeflow’s fraud specialist Ben Herut frames it as agentic commerce bringing a new layer of fraud and confusion that legacy systems can’t interpret, and Chargeflow’s analysis is blunter still: there are no clean answers yet — card networks, issuers, and platform providers are all working through these questions.

The emerging frameworks are emerging, not finished. Visa’s Trusted Agent Protocol is described as a standards-based framework enabling merchants to verify agent identity and intent in real time, preventing impersonation without degrading user experience. Mastercard’s Agent Pay (announced April 2025) uses “Agentic Tokens,” an extension of its Digital Enablement Service. Per third-party reporting (Fintech Wrap Up / Finextra), Mastercard’s liability is said to follow the same rules as standard tokenized transactions — the issuer carrying fraud liability when the token is validly issued and honored at authorization — but I’d treat that specific allocation as reported, not confirmed until it’s in Mastercard’s own docs. And note that Visa’s consumer-facing zero-liability guarantee protects cardholders from unauthorized charges; it does not resolve the merchant-side dispute question, which is the actual open one. Don’t conflate the two.

What merchants need to implement and test

Existing content gives strategic prep advice (clean feeds, loyalty programs). Here’s the operational layer — what to actually build and verify before flipping this on:

  • Decide your PCI posture. Tokenized/network-token path vs. direct CHD handling (Level 1). Most merchants want the PSP to hold the delegation.
  • Make retries idempotency-safe. ACP has a request_not_idempotent error type for a reason. An agent (or a flaky network) will retry a create/complete call; send an idempotency key and make repeated calls with the same key safe, so you don’t double-charge or double-create an order.
  • Verify webhook signatures. Validate the Merchant-Signature HMAC on every inbound order webhook, reject on mismatch, and confirm you return 200/429 correctly under load.
  • Simulate the escalation paths in sandbox. Force requires_escalation / authentication_required, run a 3DS step-up, and confirm your AuthenticationResult handling covers denied/rejected/abandoned, not just authenticated.
  • Reconcile feed/checkout price parity. If the agent sees one price in the feed and checkout returns another, trust erodes fast — the ACP sibling makes this point about feeds; it bites hardest at checkout.
  • Stand up agent-order attribution. A completed agentic checkout can land with no GA4 session. Track it at the order/OMS level, not by waiting for a website visit.
TIP Clear the public data handoff before live checkout testing

This check stops at public discovery and sampled feed shape. It cannot verify payment, tax, shipping, authentication, idempotency, webhooks, or order state transitions.

Catch a discovery-to-feed identity mismatch before starting the credentialed test pass with my free AI Commerce Validator Free

  1. Compare public discovery with the feed URL and merchant identity you intend agents to use.
  2. Resolve identity and sampled feed-shape warnings before testing carts and payments.
  3. Run the full sandbox state-machine, retry, escalation, webhook, and order-reconciliation tests separately.
A clean public handoff is only the entry condition for checkout testing—not proof that checkout works.

The validator passes its local JSON, endpoint, and sampled feed checks, but warns that the feed URL declared in discovery data differs from the expected feed URL. It states that adjacent schema, crawler, and live checkout checks are not evaluated.

The Testing SOP and Cheat Sheet tabs turn this into a concrete pass.

Where this stands in mid-2026

Ground yourself in the adoption reality, not the pitch deck. Shopify’s president Harley Finkelstein indicated only about a dozen Shopify merchants were actively using AI checkout tools — negligible against Shopify’s overall merchant base — and OpenAI itself scaled the fully-in-chat version of Instant Checkout back to discovery-plus-redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. in March 2026 after running into onboarding, accuracy, and multi-item-cart difficulties. Semrush’s Leigh McKenzie put the friction well: real-time catalog normalization across tens of millions of SKUs is a decade-scale problem, and consumers still default to checkout flows they trust — Apple Pay, Google Wallet, Amazon one-click.

None of that means agentic checkout is vaporware. The protocol capability — create/update/complete a session programmatically, with delegated payment and signed order webhooks — is real, specified, and worth building against. It just isn’t “already normal,” and whether the final step closes in-chat or on your site is an implementation detail that has already changed once and may change again.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.