Shopify Order ID Explained: Formats, Locations, Use Cases
Learn where to find a Shopify order ID, how its format works, and key use cases for using this identifier in 2026.
Learn where to find a Shopify order ID, how its format works, and key use cases for using this identifier in 2026.

Have you ever copied the number a customer sent you, pasted it into an API request, and wondered why Shopify couldn't find the order? The problem usually isn't the order itself. It's that Shopify exposes several identifiers for the same purchase, and each one belongs to a different workflow.
A customer may send an order number such as #1004. Your admin URL may contain a numeric internal ID. A GraphQL response may return a global ID beginning with gid://shopify/Order/, while a checkout or point-of-sale system may provide a different reference altogether. This guide maps those identifiers to the places where they work, so your support team, automation, and integrations can stop guessing.
Table of Contents
- What a Shopify Order ID Actually Is
- The Anatomy of a Shopify Order Identifier
- Finding the Order ID in the Shopify Admin
- Looking Up Orders by ID Through the Shopify API
- Order ID Versus Other Shopify Identifiers
- A Support Workflow Built Around the Order ID
- Common Workflows That Depend on the Order ID
- Troubleshooting When an Order ID Is Missing or Wrong
- Quick Reference Card for Shopify Order IDs
What a Shopify Order ID Actually Is
The two identifiers often confused are the order ID and the order number. In this article, “Shopify order ID” means the internal identifier used to retrieve and connect an order in Shopify's backend and APIs. The order number means the customer-facing reference shown in emails, storefront experiences, and much of the admin interface.
Shopify's documentation distinguishes the internal id from order_number. The internal id is a system-wide identifier used in admin links, while order_number is the shop-unique number displayed to customers, commonly formatted like #1004 without a prefix or suffix. Shopify also notes that the number used to create an order's display name isn't guaranteed to follow a consecutive integer sequence and isn't guaranteed to be unique across multiple stores. See the Shopify Order object documentation for the platform's distinction.

Why Shopify keeps both identifiers
The order number is designed for people. A shopper can read #1004 over the phone, recognize it in a confirmation email, and compare it with a packing document. It's short, familiar, and suitable for communication.
The internal order ID is designed for systems. Your app can use it to retrieve the order, associate webhook data, store a durable database reference, or connect a refund and fulfillment record to the correct Shopify object.
Practical rule: Show the order number to customers, but store the internal order ID as the primary key for integrations.
That distinction matters even when the two values appear close together in the admin. A support agent may search for #1004, locate the correct order, and then need the numeric value in the admin URL before an API request can retrieve it. If a store customizes its order prefix or suffix, the visible label can look even less like the backend value.
When a customer sends you an order number, treat it as a search clue. Once you've located the order, resolve it to the internal ID before performing backend work.
The Anatomy of a Shopify Order Identifier
A Shopify order can expose different identifiers depending on the product surface or API you're using. They describe the same underlying order, but they aren't interchangeable strings.
The REST API id is the internal numeric identifier used by REST order endpoints. It's the value you pass when retrieving a single order through a REST URL. Shopify's Admin REST order documentation describes the single-order endpoint and bulk lookup pattern based on order_id.
The GraphQL ID is the global object identifier used by the Admin GraphQL API. It commonly takes a form such as gid://shopify/Order/..., and GraphQL uses it when you fetch an Order object directly. The Admin GraphQL Order documentation also describes filtering by the order's name, which gives you a useful separation: use the global ID for direct retrieval, and use the name for search or reconciliation.
The order number, often represented through order_number, is the human-readable reference. The order name is the display identifier used across Shopify surfaces and may appear as #1004. In many stores, the name and order number look similar, but your application shouldn't assume that a display value is a durable cross-store key.

Moving between REST and GraphQL
A common integration mistake is treating the REST numeric ID and GraphQL global ID as two unrelated orders. They're different representations for API surfaces that use different identifier formats. If a system stores the REST value but later calls GraphQL, your code needs to construct or obtain the corresponding global ID rather than sending the bare number where GraphQL expects an ID.
That translation belongs in an explicit adapter or identifier utility, not scattered across webhook handlers and fulfillment code. It keeps logs readable and reduces the chance that a developer accidentally stores a customer-facing name in a field intended for an API key.
Point-of-sale extensions add another surface. Shopify's POS UI Order API documentation describes the POS order id as the unique identifier used for order lookups and external-system integrations. The exact object and context differ from the Admin APIs, so a POS extension should follow the identifier contract for that API instead of assuming every id field has the same format.
For developers working on storefront customization, identifier logic can sit alongside theme and section work. Presidio's guide to Shopify sections is useful background for understanding how storefront presentation differs from backend object data. A section may display an order reference, but it shouldn't define which identifier your server uses for retrieval.
Finding the Order ID in the Shopify Admin
You don't need to write code to find an order's internal ID. The most reliable merchant workflow starts with the customer-facing information, then uses the order detail page to resolve the backend value.
Use the order list to locate the record
- Open Orders in Shopify Admin.
- Search by the customer's name, email address, or visible order number.
- Open the matching order.
- Inspect the browser address bar.
The URL will contain an /orders/ path followed by the order's internal numeric identifier. The segment after /orders/ is the value you're looking for. It isn't the #1004 label shown in the page title, and it isn't a trailing route such as /print if you're viewing a printable version.
For example, if the URL ends with /orders/4594885232945, the numeric segment after /orders/ is the admin-facing order ID. Don't copy the entire URL, a locale prefix, or an action suffix into an API request.
Search by customer details when the number is incomplete
Customers often omit the hash, mistype a digit, or provide only part of an order reference. Shopify's help documentation recommends searching orders by customer name or email as well as by order information. The Shopify guide to managing order details is the appropriate reference for the merchant-side search workflow.
Once you open the order, verify the customer, items, payment state, and fulfillment details before copying the ID. This extra check prevents a valid ID from being attached to the wrong customer conversation.
Use exports for reconciliation
An order export can help when you're matching records outside Shopify. Keep the internal order ID and the order name or number in separate columns in your warehouse, help desk, or accounting import. The internal value should drive joins, while the display value remains available for human review.
If a customer needs to self-serve, they'll generally see the order number in their confirmation and account history, not the internal API identifier. That's expected. Customers need a reference they can communicate, while your systems need a stable object key.
Looking Up Orders by ID Through the Shopify API
Once you have the internal identifier, retrieval becomes straightforward, provided you use the format expected by your API surface.
REST single-order retrieval
The REST Admin API uses a numeric order_id in the order path:
/admin/api/2025-01/orders/{order_id}.json
Replace {order_id} with the internal numeric ID, not the customer-facing name. A request based on the visible value #1004 won't be equivalent to a request based on the numeric order ID.
REST also supports bulk lookup through a comma-separated list:
/admin/orders.json?ids=1,2,3
The REST order reference documents both the individual order endpoint and the ids query pattern. For production code, validate that each value is an internal ID before assembling the request, and handle missing records explicitly rather than assuming every submitted ID belongs to the current shop.
GraphQL direct retrieval
GraphQL expects the global object identifier. The conceptual query looks like this:
order(id: "gid://shopify/Order/...")
The ... portion represents the order object's identifier in the global ID format. Your GraphQL client should store or construct this value according to the API response and schema rather than passing a display name.
GraphQL is particularly useful when your integration needs a selected set of fields and related objects in one request. The important design rule remains the same: use the GraphQL global ID for direct object retrieval, and use the order name when a human-readable search or reconciliation workflow calls for it.
Integration rule: Persist one canonical internal key, then store REST, GraphQL, and display representations in clearly named fields when your system needs more than one.
For example, fields such as shopify_order_numeric_id, shopify_order_gid, and shopify_order_name are safer than a single generic order_id column whose contents change depending on the source system. That naming discipline becomes valuable when webhook payloads, REST responses, and GraphQL queries meet in the same processing pipeline.
Order ID Versus Other Shopify Identifiers
A Shopify order ID isn't the only identifier in an ecommerce stack. Checkout, draft order, POS, and subscription systems can all produce values that look like order references but point to different objects or lifecycle stages.
| Identifier | Where it appears | Best used for |
|---|---|---|
| Internal order ID | Admin URLs, REST responses, backend workflows | Stable order retrieval and database joins |
| Order number or name | Customer emails, storefront views, admin search | Customer communication and human reconciliation |
| GraphQL global order ID | Admin GraphQL requests and responses | Direct GraphQL object retrieval |
| Checkout ID | Checkout and checkout-related integrations | Tracking the checkout process before or around order creation |
| Draft order ID | Draft order workflows and manual order creation | Managing quotes, invoices, and draft-based orders |
| POS order ID or receipt reference | Shopify POS and POS extensions | Retail lookup and POS integrations |
| Subscription billing ID | Subscription application records and billing workflows | Connecting recurring billing events to a subscription system |
A checkout identifier shouldn't be substituted for the final order key. An external fulfillment or support platform may send a checkout-style reference, especially when it received data before the order was finalized. In that case, search your integration's stored mapping or query the relevant Shopify records to resolve the checkout reference to the resulting order.
Draft orders belong to a separate workflow. A draft can become an order, but the draft identifier and the completed order identifier shouldn't be treated as the same database key. Store both when your application needs an audit trail from quote creation through purchase.
POS extensions have their own API context. Shopify's POS documentation describes the POS order id as the unique value for POS lookups and external integrations, but your POS code should still respect the fields returned by that API rather than copying assumptions from Admin REST.
Subscription tools add another layer. A recurring billing platform may maintain subscription contracts, billing attempts, and payment records that refer back to Shopify orders. If you're evaluating a Shopify-native recurring workflow, RecurX's Shopify recurring payments overview provides context for how subscription operations sit alongside Shopify's order records. Keep the subscription system's identifier separate from the parent Shopify order ID.
A Support Workflow Built Around the Order ID
A customer emails support: “My order is #1042, and I need a refund.”
The agent searches Shopify Admin by the order number or the customer's email address. The order page shows the familiar #1042 label, but the agent also checks the browser URL and copies the numeric segment after /orders/. That internal value becomes the reference in the help desk note, so the next person doesn't have to repeat the search.
The agent confirms the customer and line items, then sends the internal ID to the developer or refund automation. The API request uses the order ID to retrieve the correct order and identify the refundable transaction or line item. The help desk stores both values, with #1042 available for customer-facing messages and the internal ID available for technical tracing.
This separation prevents a common handoff failure. If the developer receives only #1042, they may need to search by name before taking action. If they receive only the internal numeric value, the support agent may struggle to recognize it in a conversation. Storing both solves the human and machine sides of the workflow without treating them as interchangeable.
The customer's order number starts the investigation. The internal order ID completes the technical handoff.
The same pattern works for a fulfillment delay, address correction, or payment question. Search with the customer's language, verify the record, then pass the backend identifier to the system that will act.
Common Workflows That Depend on the Order ID
Backend operations need a reliable reference because they change or retrieve a specific Shopify record. The visible order name helps a person find that record, but the internal ID gives an application an unambiguous object to work with.

Refunds and payment corrections
A refund workflow first retrieves the order by its internal ID, then examines its transactions and refundable items. Your automation should record the order ID alongside the refund request so retries don't depend on a customer-facing label that may have been entered inconsistently.
For merchants using a subscription or recurring-payment workflow, RecurX's Shopify refund tooling is one example of a product area where order and payment operations need to remain connected.
Line-item edits
Order edits require the application to identify the existing order before it can add, remove, or adjust items. The order name isn't a substitute for the object ID. Your code should also check the order's current state because fulfillment and payment conditions can affect which changes are allowed.
Tags and operational organization
Adding tags can support warehouse routing, support triage, or internal reporting. An automation triggered by a webhook should use the order ID from the event payload, then apply the tag to that exact order instead of attempting to reconstruct a match from the customer-facing number.
Fulfillment recovery
A stuck shipment may require an application to retrieve the order's fulfillment information, inspect open fulfillment orders, and submit a correction. The order ID provides the starting point for that lookup. Tracking numbers and fulfillment IDs are separate records, so don't replace the order key with a carrier reference.
Subscription relationships
A subscription contract may create or relate to multiple orders over its lifecycle. Your data model should retain the contract identifier and the parent Shopify order ID as separate fields. That lets you answer two different questions: which recurring agreement is involved, and which specific order carries the current transaction?
The practical pattern is consistent across all five workflows. Resolve the customer-facing reference once, save the internal ID, and use that value for every subsequent backend operation.
Troubleshooting When an Order ID Is Missing or Wrong
When an order lookup fails, check the identifier's source before changing the API call. Most failures come from mixing formats or copying a nearby URL value.
- The URL contains extra text. If the copied value includes
/print, a locale segment, or another route suffix, extract only the segment immediately after/orders/. - The customer number includes a prefix or suffix. Treat
#1004,WEB-1004, or a customized display name as search metadata. Don't send the formatted label where the endpoint expects the internal ID. - The ID belongs to another store. Shopify identifiers are scoped to the shop context in which the record exists. Confirm the shop domain and access token before diagnosing the record as missing.
- A checkout reference arrives from another system. Don't cast it blindly to an order ID. Use the source system's mapping or reconciliation data to find the completed Shopify order.
- A POS value looks unfamiliar. Check whether the value came from the POS API or a receipt workflow. POS identifiers have their own context, so preserve the original source field.
- An old order isn't in the first API response. Review the request's filters, permissions, and pagination. Don't assume that a missing first page means the order was deleted.
- A migrated order has an unexpected value. Preserve the original platform reference in a separate field and create a mapping to Shopify's internal ID. Never overwrite the canonical Shopify key with an imported reference.
For recurring billing issues, identifier confusion can hide behind a failed renewal or an incomplete payment record. The troubleshooting guidance in RecurX's failed subscription payment recovery guide can complement your own mapping and retry diagnostics, but your system should still keep subscription, checkout, transaction, and order IDs in distinct fields.
Quick Reference Card for Shopify Order IDs
選擇 Shopify 識別碼時,先對照資料來源與工作流程。不同欄位就像不同索引,不能只因格式相似便互換。
| Identifier | Surface | Typical format | Primary workflow |
|---|---|---|---|
| REST order ID | Admin and REST API | Numeric value | REST retrieval, refunds, and edits |
| GraphQL order ID | Admin GraphQL API | gid://shopify/Order/... |
GraphQL object queries |
| Order number | Emails and storefront | #1004 style label |
Customer communication |
| Order name | Admin and search workflows | Display name such as #1004 |
Human search and reconciliation |
| POS order ID | POS UI extensions | API-defined POS value | Retail lookup and POS integrations |
| Checkout ID | Checkout-related systems | Checkout-specific value | Checkout tracing and pre-order reconciliation |
| Draft order ID | Draft order workflows | Draft-specific value | Quotes and manual order creation |
| Subscription billing ID | Subscription platform | Platform-defined value | Recurring billing and contract tracking |

資料庫通常應以內部 Shopify order ID 作為關聯鍵。使用 GraphQL 時,另外保存 GraphQL 全域 ID,並保留面向客戶的 order name,方便客服溝通。Checkout、draft、POS、transaction、fulfillment 與 subscription 識別碼則應分開存放,避免把尚未完成結帳的參考值,或其他系統的合約值,誤當成訂單鍵。
這樣的欄位設計也能支援對帳。客服可用 order name 找單,REST 流程使用數字型 order ID,GraphQL 查詢使用 gid:// 值,POS 整合則保留 POS 原始識別碼。真正需要比對時,回到同一個商店與來源系統確認上下文。
RecurX 協助 Shopify 商家處理訂閱、客戶入口、付款恢復、合約及訂單相關流程,並讓不同識別碼保留在各自欄位。前往 RecurX 了解其 Shopify 原生訂閱工具如何配合訂單資料模型與對帳流程。
shopify order id · shopify order number · shopify api · shopify admin · ecommerce support
Keep reading
- 10 Subscription Ecommerce Platform Options for 2026Compare 10 subscription ecommerce platform options for Shopify, including features, migration complexity, retention tools, and merchant-fit recommendations.
- 10 Churn Prevention Software Options for 2026Compare 10 churn prevention software options for dunning, cancellation deflection, loyalty, reactivation, analytics, and subscription retention.
- 10 Best Customer Portal Software for Ecommerce in 2026Compare 10 top customer portal software for ecommerce. See self-serve actions, Shopify integration, merchant-domain hosting and migration notes to pick fast.
Start growing recurring revenue on Shopify
RecurX has a free-forever plan and zero transaction fees on every tier. Install in minutes.
Install RecurX free →