How can a Token-tier UCP client obtain permission to call complete_checkout?

Hi Shopify team,

We’re building Gratos, a buyer-authorized gifting platform, and have implemented Shopify’s agentic commerce flow across Catalog MCP, Cart MCP, and Checkout MCP.

We currently have:

  • Shopify Global API credentials
  • Token-tier authentication
  • A publicly hosted UCP agent profile
  • Working catalog search and cart creation
  • Working create_checkout and update_checkout calls
  • Checkout sessions that reach a state where they appear ready for completion

However, when attempting API-side checkout completion, we receive:

checkout_completion_ineligible
This checkout is ineligible for completion via API.

The documentation says that the API token must be granted permission to complete purchases, but we have not found a public application process or documentation describing how that permission is obtained.

Could someone clarify:

  1. How does a Token-tier platform apply for access to complete_checkout?
  2. Is the permission applied to the Global API client, the merchant, the payment handler, or a specific checkout?
  3. Is there a sandbox or test merchant where approved platforms can validate end-to-end completion?
  4. Does direct checkout completion currently require Shop Pay delegated payments?
  5. Can approved third-party network-token providers be used with the dev.shopify.card handler?
  6. Is there a separate process for obtaining Order MCP access and order webhooks?

Our initial use case is buyer-present and deterministic:

  • The buyer reviews the merchant, exact products, recipient, shipping method, and final total.
  • The buyer explicitly confirms the purchase.
  • Payment authorization is restricted to the approved checkout and amount.
  • The original Shopify merchant remains the merchant of record.
  • We do not store raw card numbers.
  • We support continue_url escalation when buyer interaction or 3DS is required.

We can provide our Partner organization ID, Global API client ID, agent profile URL, test-store details, request logs, and architecture privately.

Any guidance on the correct approval or integration-review path would be appreciated.

Thanks and Best,

Gratos Team

Hey @Peter_Amadon :waving_hand:

Token-tier authentication itself doesn’t grant access to complete_checkout. Under Shopify’s general-access flow, most agents complete via continue_url; direct completion is only available when an agent is eligible and Shopify has granted the client permission. There isn’t currently a public self-service application for this access at the moment unfortunately

Has Shopify onboarded your organization for native checkout completion, or do you have a Shopify partner contact sponsoring the integration? If so, if you can share some more info I can definitely look into this.

Happy to set up a DM with you if you’d prefer - just let me know and I can get that set up on my end. Hope to hear from you soon!

Jumping in because we’re in exactly the same position, and I can add one data point that might be useful.

We run a shopping app where a buyer holds one cart across several independent Shopify merchants, with checkout split per seller against each merchant’s own UCP endpoint. On buyer-linked tokens (Sign in with Shop, then the RFC 8693 exchange and RFC 7523 redemption from the buyer-linked tokens guide) we’re granted openid, email, name, phone and dev.ucp.shopping.catalog.search:read, and create_checkout, update_checkout and get_checkout all work authenticated. Today we complete via the continue_url handoff, which works fine and stays our fallback.

The extra data point: the gate is visible at the authorization server, not only at complete_checkout. Requesting dev.ucp.shopping.checkout:manage at accounts.shop.app/oauth/authorize comes back error=access_denied for our client_id, while a made-up scope comes back invalid_scope. So the scope exists and is switched on per client. It’s also listed in scopes_supported in the server’s OAuth metadata, but it doesn’t appear in any Dev Dashboard scope picker. Verified today.

Our completion path is already built and deployed behind a check on the granted scopes: we only ever echo back a Shop Pay instrument the merchant itself offered on the checkout, per the Shop Pay handler spec, so we never see or hold payment credentials. If the grant ever lands it switches on with no code change.

@Alan_G could you share what eligibility involves for this flow, and would you be open to a DM with us as well? Happy to share our client_id, agent profile and company details privately.