Skip to main content
object

Requires read_orders access scope or read_marketplace_orders access scope.

An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the Order object. Learn more about editing an existing order with the GraphQL Admin API.

Only the last 60 days' worth of orders from a store are accessible from the Order object by default. If you want to access older orders, then you need to request access to all orders. If your app is granted access, then you can add the read_all_orders scope to your app along with read_orders or write_orders. Private apps are not affected by this change and are automatically granted the scope.

Caution: Only use this data if it's required for your app's functionality. Shopify will restrict access to scopes for apps that don't have a legitimate use for the associated data.

Anchor to Fields and connectionsFields and connections

[AdditionalFee!]!non-null

A list of additional fees applied to the order.

SalesAgreementConnection!non-null

A list of sales agreements associated with the order.

[ResourceAlert!]!non-null

A list of messages that appear on the order page in the Shopify admin.

OrderApp

The application that created the order.

MailingAddress

The billing address of the customer.

Anchor to billingAddressMatchesShippingAddressbillingAddressMatchesShippingAddress
Boolean!non-null

Whether the billing address matches the shipping address.

OrderCancellation

Cancellation details for the order.

DateTime

The date and time when the order was canceled. Returns null if the order wasn't canceled.

OrderCancelReason

The reason provided when the order was canceled. Returns null if the order wasn't canceled.

Boolean!non-null

Whether the order can be manually marked as paid.

Boolean!non-null

Whether a customer email exists for the order.

Boolean!non-null

Whether payment for the order can be captured.

Anchor to cartDiscountAmountSetcartDiscountAmountSet
MoneyBag

The total order-level discount amount, before returns, in shop and presentment currencies.

ChannelInformation

Details about the channel that created the order.

String

The IP address of the API client that created the order.

Boolean!non-null

Whether the order is closed.

DateTime

The date and time when the order was closed. Returns null if the order isn't closed.

String

A randomly generated alpha-numeric identifier for the order that may be shown to the customer instead of the sequential order name. For example, "XPAV284CT", "R50KELTJP" or "35PKUN0UJ". This value isn't guaranteed to be unique.

Boolean!non-null

Whether inventory has been reserved for the order.

DateTime!non-null

Date and time when the order was created in Shopify.

CurrencyCode!non-null

The shop currency when the order was placed.

Anchor to currentCartDiscountAmountSetcurrentCartDiscountAmountSet
MoneyBag!non-null

The current order-level discount amount after all order updates, in shop and presentment currencies.

Anchor to currentShippingPriceSetcurrentShippingPriceSet
MoneyBag!non-null

The current shipping price after applying refunds and discounts. If the parent order.taxesIncluded field is true, then this price includes taxes. Otherwise, this field is the pre-tax price.

Anchor to currentSubtotalLineItemsQuantitycurrentSubtotalLineItemsQuantity
Int!non-null

The sum of the quantities for all line items that contribute to the order's current subtotal price.

Anchor to currentSubtotalPriceSetcurrentSubtotalPriceSet
MoneyBag!non-null

The sum of the prices for all line items after discounts and returns, in shop and presentment currencies. If taxesIncluded is true, then the subtotal also includes tax.

[TaxLine!]!non-null

A list of all tax lines applied to line items on the order, after returns. Tax line prices represent the total price for all tax lines with the same rate and title.

Anchor to currentTotalAdditionalFeesSetcurrentTotalAdditionalFeesSet
MoneyBag

The total amount of additional fees after returns, in shop and presentment currencies. Returns null if there are no additional fees for the order.

Anchor to currentTotalDiscountsSetcurrentTotalDiscountsSet
MoneyBag!non-null

The total amount discounted on the order after returns, in shop and presentment currencies. This includes both order and line level discounts.

Anchor to currentTotalDutiesSetcurrentTotalDutiesSet
MoneyBag

The total amount of duties after returns, in shop and presentment currencies. Returns null if duties aren't applicable.

Anchor to currentTotalPriceSetcurrentTotalPriceSet
MoneyBag!non-null

The total price of the order, after returns, in shop and presentment currencies. This includes taxes and discounts.

MoneyBag!non-null

The sum of the prices of all tax lines applied to line items on the order, after returns, in shop and presentment currencies.

UnsignedInt64!non-null

The total weight of the order after returns, in grams.

[Attribute!]!non-null

A list of additional merchant-facing details that have been added to the order. For example, whether an order is a customer's first.

Customer

The customer that placed the order.

Anchor to customerAcceptsMarketingcustomerAcceptsMarketing
Boolean!non-null

Whether the customer agreed to receive marketing materials.

Anchor to customerJourneySummarycustomerJourneySummary
CustomerJourneySummary

The customer's visits and interactions with the online store before placing the order.

String

A two-letter or three-letter language code, optionally followed by a region modifier.

Anchor to discountApplicationsdiscountApplications
DiscountApplicationConnection!non-null

A list of discounts that are applied to the order, not including order edits and refunds.

String

The discount code used for the order.

[String!]!non-null

The discount codes used for the order.

MailingAddress

The primary address of the customer. Returns null if neither the shipping address nor the billing address was provided.

Anchor to displayFinancialStatusdisplayFinancialStatus
OrderDisplayFinancialStatus

The financial status of the order that can be shown to the merchant. This field doesn't capture all the details of an order's financial state. It should only be used for display summary purposes.

Anchor to displayFulfillmentStatusdisplayFulfillmentStatus
OrderDisplayFulfillmentStatus!non-null

The fulfillment status for the order that can be shown to the merchant. This field does not capture all the details of an order's fulfillment state. It should only be used for display summary purposes. For a more granular view of the fulfillment status, refer to the FulfillmentOrder object.

[OrderDisputeSummary!]!non-null

A list of the disputes associated with the order.

Boolean!non-null

Whether duties are included in the subtotal price of the order.

Boolean!non-null

Whether the order has had any edits applied.

String

The email address associated with the customer.

Boolean!non-null

Whether taxes on the order are estimated. This field returns false when taxes on the order are finalized and aren't subject to any changes.

EventConnection!non-null

A list of events associated with the order.

Boolean!non-null

Whether there are line items that can be fulfilled. This field returns false when the order has no fulfillable line items. For a more granular view of the fulfillment status, refer to the FulfillmentOrder object.

FulfillmentOrderConnection!non-null

A list of fulfillment orders for a specific order.

FulfillmentOrder API access scopes govern which fulfillments orders are returned. An API client will only receive a subset of the fulfillment orders which belong to an order if they don't have the necessary access scopes to view all of the fulfillment orders. In the case that an API client does not have the access scopes necessary to view any of the fulfillment orders that belong to an order, an empty array will be returned.

[Fulfillment!]!non-null

List of shipments for the order.

Count

The count of fulfillments including the cancelled fulfillments.

Boolean!non-null

Whether the order has been paid in full.

Boolean!non-null

Whether the merchant added a timeline comment to the order.

ID!non-null

A globally-unique ID.

UnsignedInt64!non-null

The ID of the corresponding resource in the REST Admin API.

LineItemConnection!non-null

A list of the order's line items.

LocalizedFieldConnection!non-null

List of localized fields for the resource.

Anchor to merchantBusinessEntitymerchantBusinessEntity
BusinessEntity!non-null

The merchant's business entity associated with the order.

Boolean!non-null

Whether the order can be edited by the merchant. For example, canceled orders can’t be edited.

Anchor to merchantEditableErrorsmerchantEditableErrors
[String!]!non-null

A list of reasons why the order can't be edited. For example, "Canceled orders can't be edited".

OrderApp

The application acting as the Merchant of Record for the order.

Metafield

A custom field, including its namespace and key, that's associated with a Shopify resource for the purposes of adding and storing additional information.

MetafieldConnection!non-null

A list of custom fields that a merchant associates with a Shopify resource.

String!non-null

The unique identifier for the order that appears on the order page in the Shopify admin and the Order status page. For example, "#1001", "EN1001", or "1001-A". This value isn't unique across multiple stores.

MoneyBag!non-null

The net payment for the order, based on the total amount received minus the total amount refunded, in shop and presentment currencies.

Anchor to nonFulfillableLineItemsnonFulfillableLineItems
LineItemConnection!non-null

A list of line items that can't be fulfilled. For example, tips and fully refunded line items can't be fulfilled. For a more granular view of the fulfillment status, refer to the FulfillmentOrder object.

String

The contents of the note associated with the order.

Anchor to originalTotalAdditionalFeesSetoriginalTotalAdditionalFeesSet
MoneyBag

The total amount of additional fees at the time of order creation, in shop and presentment currencies. Returns null if additional fees aren't applicable.

Anchor to originalTotalDutiesSetoriginalTotalDutiesSet
MoneyBag

The total amount of duties at the time of order creation, in shop and presentment currencies. Returns null if duties aren't applicable.

Anchor to originalTotalPriceSetoriginalTotalPriceSet
MoneyBag!non-null

The total price of the order at the time of order creation, in shop and presentment currencies.

Anchor to paymentCollectionDetailspaymentCollectionDetails
OrderPaymentCollectionDetails!non-null

The payment collection details for the order.

[String!]!non-null

A list of the names of all payment gateways used for the order. For example, "Shopify Payments" and "Cash on Delivery (COD)".

PaymentTerms

The payment terms associated with the order.

String

The phone number associated with the customer.

String

The PO number associated with the order.

Anchor to presentmentCurrencyCodepresentmentCurrencyCode
CurrencyCode!non-null

The payment CurrencyCode of the customer for the order.

DateTime!non-null

The date and time when the order was processed. This date and time might not match the date and time when the order was created.

Publication

The publication that the order was created from.

PurchasingEntity

The purchasing entity for the order.

Boolean!non-null

Whether the order can be refunded.

Anchor to refundDiscrepancySetrefundDiscrepancySet
MoneyBag!non-null

The difference between the suggested and actual refund amount of all refunds that have been applied to the order. A positive value indicates a difference in the merchant's favor, and a negative value indicates a difference in the customer's favor.

[Refund!]!non-null

A list of refunds that have been applied to the order.

URL

The URL of the source that the order originated from, if found in the domain registry.

Boolean!non-null

Whether the order has shipping lines or at least one line item on the order that requires shipping.

Boolean!non-null

Whether any line item on the order can be restocked.

Location

The physical location where a retail order is created or completed, except for draft POS orders completed via the “mark as paid” flow in Admin, which return null. Transactions associated with the order might have been processed at a different location.

ReturnConnection!non-null

A list of returns for the order.

OrderReturnStatus!non-null

The order's aggregated return status for display purposes.

OrderRiskSummary!non-null

The risk characteristics for the order.

MailingAddress

The mailing address of the customer.

ShippingLine

A summary of all shipping costs on the order.

ShippingLineConnection!non-null

A list of the order's shipping lines.

ShopifyProtectOrderSummary

The Shopify Protect details for the order. If Shopify Protect is disabled for the shop, then this will be null.

String

A unique POS or third party order identifier. For example, "1234-12-1000" or "111-98567-54". The receipt_number field is derived from this value for POS orders.

String

The name of the source associated with the order.

StaffMember

The staff member associated with the order.

URL!non-null

The URL where the customer can check the order's current status.

Anchor to subtotalLineItemsQuantitysubtotalLineItemsQuantity
Int!non-null

The sum of the quantities for all line items that contribute to the order's subtotal price.

MoneyBag

The sum of the prices for all line items after discounts and before returns, in shop and presentment currencies. If taxesIncluded is true, then the subtotal also includes tax.

SuggestedRefund

A suggested refund for the order.

[String!]!non-null

A comma separated list of tags associated with the order. Updating tags overwrites any existing tags that were previously added to the order. To add new tags without overwriting existing tags, use the tagsAdd mutation.

Boolean!non-null

Whether taxes are included in the subtotal price of the order.

Boolean!non-null

Whether taxes are exempt on the order.

[TaxLine!]!non-null

A list of all tax lines applied to line items on the order, before returns. Tax line prices represent the total price for all tax lines with the same rate and title.

Boolean!non-null

Whether the order is a test. Test orders are made using the Shopify Bogus Gateway or a payment provider with test mode enabled. A test order can't be converted into a real order and vice versa.

MoneyBag!non-null

The authorized amount that's uncaptured or undercaptured, in shop and presentment currencies. This amount isn't adjusted for returns.

Anchor to totalCashRoundingAdjustmenttotalCashRoundingAdjustment
CashRoundingAdjustment!non-null

The total rounding adjustment applied to payments or refunds for an Order involving cash payments. Applies to some countries where cash transactions are rounded to the nearest currency denomination.

MoneyBag

The total amount discounted on the order before returns, in shop and presentment currencies. This includes both order and line level discounts.

MoneyBag!non-null

The total amount not yet transacted for the order, in shop and presentment currencies. A positive value indicates a difference in the merchant's favor (payment from customer to merchant) and a negative value indicates a difference in the customer's favor (refund from merchant to customer).

MoneyBag!non-null

The total price of the order, before returns, in shop and presentment currencies. This includes taxes and discounts.

MoneyBag!non-null

The total amount received from the customer before returns, in shop and presentment currencies.

MoneyBag!non-null

The total amount that was refunded, in shop and presentment currencies.

Anchor to totalRefundedShippingSettotalRefundedShippingSet
MoneyBag!non-null

The total amount of shipping that was refunded, in shop and presentment currencies.

Anchor to totalShippingPriceSettotalShippingPriceSet
MoneyBag!non-null

The total shipping amount before discounts and returns, in shop and presentment currencies.

MoneyBag

The total tax amount before returns, in shop and presentment currencies.

MoneyBag!non-null

The sum of all tip amounts for the order, in shop and presentment currencies.

UnsignedInt64

The total weight of the order before returns, in grams.

[OrderTransaction!]!non-null

A list of transactions associated with the order.

Count

The number of transactions associated with the order.

Boolean!non-null

Whether no payments have been made for the order.

DateTime!non-null

The date and time when the order was modified last.

Deprecated fields and connections

MoneyDeprecated
ChannelDeprecated
CustomerJourneyDeprecated
Anchor to landingPageDisplayTextlandingPageDisplayText
StringDeprecated
URLDeprecated
Anchor to localizationExtensionslocalizationExtensions
LocalizationExtensionConnection!non-nullDeprecated
Anchor to metafieldDefinitionsmetafieldDefinitions
MetafieldDefinitionConnection!non-nullDeprecated
Money!non-nullDeprecated
LocationDeprecated
StringDeprecated
StringDeprecated
URLDeprecated
OrderRiskLevel!non-nullDeprecated
[OrderRisk!]!non-nullDeprecated
MoneyDeprecated
Money!non-nullDeprecated
MoneyDeprecated
Money!non-nullDeprecated
Money!non-nullDeprecated
Money!non-nullDeprecated
Money!non-nullDeprecated
MoneyDeprecated
MoneyV2!non-nullDeprecated

Was this section helpful?

query

The order query retrieves an order by its ID. This query provides access to comprehensive order information such as customer details, line items, financial data, and fulfillment status.

Use the order query to retrieve information associated with the following processes:

You can only retrieve the last 60 days worth of orders from a store by default. If you want to access older orders, then you need to request access to all orders.

For large order datasets, consider using bulk operations. Bulk operations handle pagination automatically and allow you to retrieve data asynchronously without being constrained by API rate limits. Learn more about creating orders and building order management apps.

query

Returns a list of orders placed in the store, including data such as order status, customer, and line item details. Use the orders query to build reports, analyze sales performance, or automate fulfillment workflows. The orders query supports pagination, sorting, and filtering.


Was this section helpful?

mutation

Closes an open order.

Arguments

OrderCloseInput!required

The input for the mutation.


Fields

Order

The closed order.

[UserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Creates an order with attributes such as customer information, line items, and shipping and billing addresses.

Use the orderCreate mutation to programmatically generate orders in scenarios where orders aren't created through the standard checkout process, such as when importing orders from an external system or creating orders for wholesale customers.

The orderCreate mutation doesn't support applying multiple discounts, such as discounts on line items. Automatic discounts won't be applied unless you replicate the logic of those discounts in your custom implementation. You can apply a discount code, but only one discount code can be set for each order.


Note

If you're using the orderCreate mutation with a trial or development store, then you can create a maximum of five new orders per minute.


After you create an order, you can make subsequent edits to the order using one of the following mutations:

  • orderUpdate: Used for simple updates to an order, such as changing the order's note, tags, or customer information.
  • orderEditBegin: Used when you need to make significant updates to an order, such as adding or removing line items, changing quantities, or modifying discounts. The orderEditBegin mutation initiates an order editing session, allowing you to make multiple changes before finalizing them. Learn more about using the orderEditBegin mutation to edit existing orders.

Learn how to build apps that integrate with order management and fulfillment processes.

Arguments

OrderCreateOptionsInput

The strategies for updating inventory and whether to send shipping and order confirmations to customers.

OrderCreateOrderInput!required

The attributes of the new order.


Fields

Order

The order that was created.

[OrderCreateUserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Applies and saves staged changes to an order. Mutations are operating on OrderEdit. All order edits start with orderEditBegin, have any number of orderEdit* mutations made, and end with orderEditCommit.

Arguments

ID!required

The ID of the calculated order that will have its changes applied to the order.

Boolean

Whether to notify the customer or not.

String

Note for staff members.


Fields

Order

The order with changes applied.

[UserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Sends an email invoice for an order.

Arguments

EmailInput

The email input fields for the order invoice. The bcc and from fields should be store or staff account emails.

ID!required

The order associated with the invoice.


Fields

Order

The order associated with the invoice email.

[OrderInvoiceSendUserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Marks an order as paid. You can only mark an order as paid if it isn't already fully paid.

Arguments

OrderMarkAsPaidInput!required

The input for the mutation.


Fields

Order

The order marked as paid.

[UserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Opens a closed order.

Arguments

OrderOpenInput!required

The input for the mutation.


Fields

Order

The opened order.

[UserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Updates the attributes of an order, such as the customer's email, the shipping address for the order, tags, and metafields associated with the order.

If you need to make significant updates to an order, such as adding or removing line items, changing quantities, or modifying discounts, then use the orderEditBegin mutation instead. The orderEditBegin mutation initiates an order editing session, allowing you to make multiple changes before finalizing them. Learn more about using the orderEditBegin mutation to edit existing orders.

Learn how to build apps that integrate with order management and fulfillment processes.

Arguments

OrderInput!required

The attributes of the updated order.


Fields

Order

The updated order.

[UserError!]!non-null

The list of errors that occurred from executing the mutation.

mutation

Creates a refund for an order, allowing you to process returns and issue payments back to customers.

Use the refundCreate mutation to programmatically process refunds in scenarios where you need to return money to customers, such as when handling returns, processing chargebacks, or correcting order errors.

The refundCreate mutation supports various refund scenarios:

  • Refunding line items with optional restocking
  • Refunding shipping costs
  • Refunding duties and import taxes
  • Refunding additional fees
  • Processing refunds through different payment methods
  • Issuing store credit refunds (when enabled)

You can create both full and partial refunds, and optionally allow over-refunding in specific cases. The mutation also supports idempotent requests to safely retry failed refund attempts.

After creating a refund, you can track its status and details through the order's refunds field. The refund is associated with the order and can be used for reporting and reconciliation purposes.

Learn more about managing returns and refunding duties.


Note

The refunding behavior of the refundCreate mutation is similar to the refundReturn mutation. The key difference is that the refundCreate mutation lets you to specify restocking behavior for line items, whereas the returnRefund mutation focuses solely on handling the financial refund without any restocking input.


Arguments

RefundInput!required

The input fields that are used in the mutation for creating a refund.


Fields

Order

The order associated with the created refund.

Refund

The created refund.

[UserError!]!non-null

The list of errors that occurred from executing the mutation.


Was this section helpful?