Hello Shopify Team…We are CartAI (cartai.ai), a developer-first API for agentic checkout. Our infrastructure lets any AI agent automate, embed, or enable transactions across merchants.
We have implemented the full UCP flow end-to-end against live Shopify merchants: catalog search, cart creation, and checkout creation all working.
Checkout reaches status: ready_for_complete with payment handlers advertised (dev.shopify.card, com.google.pay), buyer identity, shipping, line items, and totals fully populated.
When we call complete_checkout we consistently get:
{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"AuthenticationFailed","data":"Missing required buyer IP header."}}
We’re authenticating at Token tier using credentials from Dev Dashboard (Catalogs section). We’ve tried supplying the buyer IP in every way we can think of — none work:
X-Forwarded-ForHTTP headerX-Real-IPHTTP headermeta.buyer_ipfield inside the JSON request body
All three return the same Missing required buyer IP header error. The header name does not appear anywhere in the UCP docs or Shopify agent docs.
Questions:
- What is the exact header name Shopify expects for the buyer IP on
complete_checkoutcalls? - For an autonomous agent flow (AP2), where the agent acts on behalf of a buyer without a live browser session, how should the buyer IP be supplied?
- Are there additional requirements beyond the buyer IP to reach a successful
complete_checkout— such as a payment instrument in the request body, or a specific token scope beyondread_global_api_catalog_search? - Is there an early access program or partner track for agentic commerce infrastructure platforms? We’re building toward both autonomous (AP2) and embedded (ECP) checkout flows and want to engage with the right team at Shopify.
For reference, our request:
curl -s -X POST "https://{shop}.myshopify.com/api/ucp/mcp" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "complete_checkout",
"arguments": {
"id": "{checkout_id}",
"meta": {
"ucp-agent": {"profile": "https://shopify.dev/ucp/agent-profiles/2026-04-08/valid-with-capabilities.json"},
"idempotency-key": "{uuid}",
"buyer_ip": "{buyer_ip}"
}
}
}
}'
Any guidance appreciated.