How to Create an Order in Shopify Admin Without a Checkout URL in a Headless Store?

Hi everyone,

I am developing an online store using React and a headless approach, where I handle the cart and checkout flow myself. However, I’m encountering an issue with Shopify’s workflow: it seems that I cannot generate an order in the Shopify Admin panel without a checkout URL.

I do not want to use a checkout URL because the payments are processed by a third-party service, and I only need to complete the order without payment to have it appear in Shopify’s Admin panel for further processing by the third party.

Has anyone faced this issue while working with headless Shopify? Is there a way to create an order directly in the Shopify Admin panel without needing a checkout URL or bypass the standard checkout process? Any advice or suggestions would be greatly appreciated!

Thanks in advance!

This is a common architecture challenge with headless stores. Here’s the approach I use:
The Solution

Create orders directly via Admin API instead of relying on checkoutUrl:

  1. Process payment with your third-party provider (Stripe, Square, etc.)
  2. Verify payment server-side — critical for security
  3. Create order via draftOrderCreate mutation
  4. Complete with draftOrderComplete — marks as paid

The Flow

Payment Provider → Server Verification → draftOrderCreate → draftOrderComplete → Order in Admin

Key Mutations

mutation draftOrderCreate($input: DraftOrderInput!) {
  draftOrderCreate(input: $input) {
    draftOrder { id }
    userErrors { field message }
  }
}

mutation draftOrderComplete($id: ID!) {
  draftOrderComplete(id: $id, paymentPending: false) {
    draftOrder {
      order { id name }
    }
    userErrors { field message }
  }
}

What This Gets You

The completed order appears in Shopify Admin exactly like a checkout-created order:
- Customer info and line items visible
- Webhooks fire (orders/create, orders/paid)
- Inventory decrements automatically
- Order available for fulfillment

Important Details

- Always verify payment before creating the order (prevents fraud)
- Store payment reference in order notes for idempotency checks
- Handle errors gracefully — userErrors array tells you what went wrong

If you want to see a complete implementation of this pattern, I've open-sourced one here:
https://github.com/nathanmcmullendev/ecommerce-react

The core logic is in app/routes/api.create-order.ts — includes payment verification, idempotency handling, and error
management. Feel free to use it as reference or fork it.

Please note that Liquid and Headless shops must use the Shopify Checkout.
You can review our terms and conditions here.

(post deleted by author)

Please don’t hijack someone else’s post. Create a new post.

1 Like