Order Edit Calculation API, Filter Update, Subscription Draft Deprecation

9/6/2026, 12:00:13 AM

Shopify GraphQL now exposes a requestedOrderEditCalculate query that returns the calculated financial outcome of a requested order edit, replacing the deprecated requestedEditCalculate. The orders and ordersCount queries have been updated: requested_edit_status has been renamed to requested_order_edit_status and added to the filter options. SubscriptionDraft functions and several subscriptionContract/SubscriptionDraft mutations are marked deprecated in favor of the SubscriptionContractCalculation API. New types—including BarcodeInput, BarcodeType, and calculation input objects—support barcodes on product variants and fine‑grained edit calculations. Developers should update queries to use requested_order_edit_status, migrate away from the legacy subscription draft flow, and adopt the new calculation and barcode types for their integrations.

Query Changes

➕ Added Queries (1)

requestedOrderEditCalculate

The calculated financial outcome of a requested order edit.

➖ Removed Queries (1)

requestedEditCalculate

The calculated financial outcome of a requested order edit.

🔄 Modified Queries (3)

orders

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.

~ Modified argument: query
ordersCount

Returns the number of orders in the shop. You can filter orders using search syntax or a SavedSearch, and set a maximum count limit to control query performance.

Use the query argument to filter the count by criteria like order status, financial state, or fulfillment status. The response includes both the count value and its precision, indicating whether the count is exact or an estimate.

Note:
The count is limited to 10,000 orders by default. Use the limit argument to adjust this value, or pass null for no limit. Limited to a maximum of 10000 by default.

~ Modified argument: query
subscriptionDraft

Returns a Subscription Draft resource by ID.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.

Mutation Changes

➕ Added Mutations (3)

requestedOrderEditCreate

Creates a requested edit on an order on behalf of a buyer.

requestedOrderEditDecline

Declines a requested edit on an order.

requestedOrderEditResolve

Resolves a requested edit on an order, marking it as completed.

➖ Removed Mutations (3)

requestedEditCreate

Creates a requested edit on an order on behalf of a buyer.

requestedEditDecline

Declines a requested edit on an order.

requestedEditResolve

Resolves a requested edit on an order, marking it as completed.

🔄 Modified Mutations (13)

subscriptionContractCreate

Creates a subscription contract draft, which is an intention to create a new subscription. The draft lets you incrementally build and modify subscription details before committing them to create the actual SubscriptionContract.

The mutation requires Customer information, billing details, and contract configuration including the SubscriptionBillingPolicy and SubscriptionDeliveryPolicy. You can specify the CustomerPaymentMethod, the MailingAddress for shipping, and subscription intervals.

After you create the draft, you can either modify it with the subscriptionDraftUpdate mutation or finalize and create the active subscription contract with subscriptionDraftCommit.

This mutation and the draft-based flow are deprecated in favor of the SubscriptionContractCalculation API.

Learn more about building subscription contracts.

⚠️ Deprecated: Use [`subscriptionContractCreateCalculate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionContractCreateCalculate) instead.
subscriptionContractUpdate

Creates a draft of an existing SubscriptionContract. The draft captures the current state of the contract and allows incremental modifications through draft mutations such as subscriptionDraftLineAdd, subscriptionDraftDiscountAdd, and subscriptionDraftUpdate.

Changes remain in draft state and don't affect the live contract until committed. After you've made all necessary changes to the draft, commit it using subscriptionDraftCommit to apply the updates to the original contract.

This mutation and the draft-based edit flow are deprecated in favor of the SubscriptionContractCalculation API.

Learn more about updating subscription contracts.

⚠️ Deprecated: Use [`subscriptionContractUpdateCalculate`](https://shopify.dev/docs/api/admin-graphql/latest/mutations/subscriptionContractUpdateCalculate) instead.
subscriptionDraftCommit

Commits the updates of a Subscription Contract draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftDiscountAdd

Adds a subscription discount to a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftDiscountCodeApply

Applies a code discount on the subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftDiscountRemove

Removes a subscription discount from a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftDiscountUpdate

Updates a subscription discount on a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftFreeShippingDiscountAdd

Adds a subscription free shipping discount to a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftFreeShippingDiscountUpdate

Updates a subscription free shipping discount on a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftLineAdd

Adds a subscription line to a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftLineRemove

Removes a subscription line from a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftLineUpdate

Updates a subscription line on a subscription draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.
subscriptionDraftUpdate

Updates a Subscription Draft.

⚠️ Deprecated: Use the [SubscriptionContractCalculation API](https://shopify.dev/docs/apps/build/purchase-options/subscriptions/contracts/migrate-to-subscription-calculation-api) instead.

Type Changes

➕ Added Types (37)

📥BarcodeInput➕ AddedINPUT_OBJECT

The input fields for barcodes that are associated with a product variant. A variant accepts up to
20 barcodes, and a given variant input can't
set both barcode and barcodes. Refer to the
ProductVariantBarcode
object for how these barcodes are returned.

📋BarcodeType➕ AddedENUM

The identifier standard that a barcode value conforms to. A single value can satisfy more than one
standard, so declare the standard that the merchant or supplier assigned. If no BarcodeType is provided,
then no standard was declared and the value is stored as entered.

Values: UPC, EAN, ISBN, GTIN, ASIN
📥CalculateRequestedOrderEditInput➕ AddedINPUT_OBJECT

The input fields to calculate the financial outcome of a requested order edit.

📥CalculateRequestedOrderEditLineItemRemovalInput➕ AddedINPUT_OBJECT

The input fields for a line item removal on a calculated edit.

📥CalculateRequestedOrderEditLineItemsInput➕ AddedINPUT_OBJECT

The input fields for the line item changes in an edit calculation, grouped by the type of change.

🏗️CalculatedRequestedOrderEdit➕ AddedOBJECT

The calculated financial outcome of an edit based on the line items requested for editing.

Fields: financialSummary, lineItems
🏗️CalculatedRequestedOrderEditLineItem➕ AddedOBJECT

The line item being processed for an edit and its calculated monetary values.

Fields: lineItem, quantity, subtotalSet, totalTaxSet
🏗️CalculatedRequestedOrderEditLineItemConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple CalculatedRequestedOrderEditLineItems.

Fields: edges, nodes, pageInfo
🏗️CalculatedRequestedOrderEditLineItemEdge➕ AddedOBJECT

An auto-generated type which holds one CalculatedRequestedOrderEditLineItem and a cursor during pagination.

Fields: cursor, node
🏗️CalculatedRequestedOrderEditLineItems➕ AddedOBJECT

The line item changes on a calculated edit, grouped by the type of change.

Fields: removals
📋OrderDisplayRequestedEditStatus➕ AddedENUM

The order's aggregated requested edit status that's used for display purposes.
An order might have multiple requested edits, so this field communicates the prioritized status.
The OrderDisplayRequestedEditStatus enum is a supported filter parameter in the orders query.

Values: NONE, REQUESTED, RESOLVED, DENIED
🏗️ProductVariantBarcode➕ AddedOBJECT

A barcode associated with a product variant.

A variant supports up to 20 barcodes, each of
which can have a
type.
Barcode types are validated against their respective format standards.

Fields: type, value
🏗️ProductVariantBarcodeConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple ProductVariantBarcodes.

Fields: edges, nodes, pageInfo
🏗️ProductVariantBarcodeEdge➕ AddedOBJECT

An auto-generated type which holds one ProductVariantBarcode and a cursor during pagination.

Fields: cursor, node
🏗️RequestedOrderEdit➕ AddedOBJECT

A buyer-initiated request to edit unfulfilled line items on an order.

Fields: createdAt, id, lineItems, order, requestApprovedAt ... +4 more
🏗️RequestedOrderEditConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple RequestedOrderEdits.

Fields: edges, nodes, pageInfo
📥RequestedOrderEditCreateInput➕ AddedINPUT_OBJECT

The input fields for creating a requested edit.

🏗️RequestedOrderEditCreatePayload➕ AddedOBJECT

Return type for requestedOrderEditCreate mutation.

Fields: requestedOrderEdit, userErrors
🏗️RequestedOrderEditCreateUserError➕ AddedOBJECT

Errors related to creating a requested edit.

Fields: code, field, message
📋RequestedOrderEditCreateUserErrorCode➕ AddedENUM

Possible error codes that can be returned by RequestedOrderEditCreateUserError.

Values: NOT_FOUND, INVALID, INTERNAL_ERROR, BLANK
📥RequestedOrderEditDeclineInput➕ AddedINPUT_OBJECT

The input fields for declining a requested edit.

🏗️RequestedOrderEditDeclinePayload➕ AddedOBJECT

Return type for requestedOrderEditDecline mutation.

Fields: requestedOrderEdit, userErrors
🏗️RequestedOrderEditDeclineUserError➕ AddedOBJECT

Errors related to declining a requested edit.

Fields: code, field, message
📋RequestedOrderEditDeclineUserErrorCode➕ AddedENUM

Possible error codes that can be returned by RequestedOrderEditDeclineUserError.

Values: NOT_FOUND, INVALID
🏗️RequestedOrderEditEdge➕ AddedOBJECT

An auto-generated type which holds one RequestedOrderEdit and a cursor during pagination.

Fields: cursor, node
🏗️RequestedOrderEditFinancialSummary➕ AddedOBJECT

The financial breakdown of the edit.

Fields: editOrderLevelDiscountSubtotalSet, editSubtotalBeforeTargetAllDiscountsSet, editSubtotalSet, editSubtotalWithCartDiscountSet, editTotalSet ... +1 more
🏗️RequestedOrderEditLineItem➕ AddedOBJECT

A line item included in a buyer-initiated requested edit.

Fields: id, lineItem, quantity, resolvedQuantity
🏗️RequestedOrderEditLineItemConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple RequestedOrderEditLineItems.

Fields: edges, nodes, pageInfo
🏗️RequestedOrderEditLineItemEdge➕ AddedOBJECT

An auto-generated type which holds one RequestedOrderEditLineItem and a cursor during pagination.

Fields: cursor, node
📥RequestedOrderEditLineItemRemovalInput➕ AddedINPUT_OBJECT

The input fields for a line item requested for removal in a requested edit.

🏗️RequestedOrderEditLineItems➕ AddedOBJECT

The line item changes on a requested edit, grouped by the type of change.

Fields: removals
📥RequestedOrderEditLineItemsInput➕ AddedINPUT_OBJECT

The input fields for the line item changes in a requested edit, grouped by the type of change.

📥RequestedOrderEditResolveInput➕ AddedINPUT_OBJECT

The input fields for resolving a requested edit.

🏗️RequestedOrderEditResolvePayload➕ AddedOBJECT

Return type for requestedOrderEditResolve mutation.

Fields: requestedOrderEdit, userErrors
🏗️RequestedOrderEditResolveUserError➕ AddedOBJECT

Errors related to resolving a requested edit.

Fields: code, field, message
📋RequestedOrderEditResolveUserErrorCode➕ AddedENUM

Possible error codes that can be returned by RequestedOrderEditResolveUserError.

Values: NOT_FOUND, INVALID
📋RequestedOrderEditStatus➕ AddedENUM

The status of a buyer-initiated requested edit.

Values: REQUESTED, RESOLVED, DENIED

➖ Removed Types (32)

📥CalculateRequestedEditInput➖ RemovedINPUT_OBJECT

The input fields to calculate the financial outcome of a requested order edit.

📥CalculateRequestedEditLineItemRemovalInput➖ RemovedINPUT_OBJECT

The input fields for a line item removal on a calculated edit.

📥CalculateRequestedEditLineItemsInput➖ RemovedINPUT_OBJECT

The input fields for the line item changes in an edit calculation, grouped by the type of change.

🏗️CalculatedRequestedEdit➖ RemovedOBJECT

The calculated financial outcome of an edit based on the line items requested for editing.

Fields: financialSummary, lineItems
🏗️CalculatedRequestedEditLineItem➖ RemovedOBJECT

The line item being processed for an edit and its calculated monetary values.

Fields: lineItem, quantity, subtotalSet, totalTaxSet
🏗️CalculatedRequestedEditLineItemConnection➖ RemovedOBJECT

An auto-generated type for paginating through multiple CalculatedRequestedEditLineItems.

Fields: edges, nodes, pageInfo
🏗️CalculatedRequestedEditLineItemEdge➖ RemovedOBJECT

An auto-generated type which holds one CalculatedRequestedEditLineItem and a cursor during pagination.

Fields: cursor, node
🏗️CalculatedRequestedEditLineItems➖ RemovedOBJECT

The line item changes on a calculated edit, grouped by the type of change.

Fields: removals
📋OrderRequestedEditStatus➖ RemovedENUM

The order's aggregated requested edit status that's used for display purposes.
An order might have multiple requested edits, so this field communicates the prioritized status.
The OrderRequestedEditStatus enum is a supported filter parameter in the orders query.

Values: NONE, REQUESTED, RESOLVED, DENIED
🏗️RequestedEdit➖ RemovedOBJECT

A buyer-initiated request to edit unfulfilled line items on an order.

Fields: createdAt, id, lineItems, order, requestApprovedAt ... +4 more
🏗️RequestedEditConnection➖ RemovedOBJECT

An auto-generated type for paginating through multiple RequestedEdits.

Fields: edges, nodes, pageInfo
📥RequestedEditCreateInput➖ RemovedINPUT_OBJECT

The input fields for creating a requested edit.

🏗️RequestedEditCreatePayload➖ RemovedOBJECT

Return type for requestedEditCreate mutation.

Fields: requestedEdit, userErrors
🏗️RequestedEditCreateUserError➖ RemovedOBJECT

Errors related to creating a requested edit.

Fields: code, field, message
📋RequestedEditCreateUserErrorCode➖ RemovedENUM

Possible error codes that can be returned by RequestedEditCreateUserError.

Values: NOT_FOUND, INVALID, INTERNAL_ERROR, BLANK
📥RequestedEditDeclineInput➖ RemovedINPUT_OBJECT

The input fields for declining a requested edit.

🏗️RequestedEditDeclinePayload➖ RemovedOBJECT

Return type for requestedEditDecline mutation.

Fields: requestedEdit, userErrors
🏗️RequestedEditDeclineUserError➖ RemovedOBJECT

Errors related to declining a requested edit.

Fields: code, field, message
📋RequestedEditDeclineUserErrorCode➖ RemovedENUM

Possible error codes that can be returned by RequestedEditDeclineUserError.

Values: NOT_FOUND, INVALID
🏗️RequestedEditEdge➖ RemovedOBJECT

An auto-generated type which holds one RequestedEdit and a cursor during pagination.

Fields: cursor, node
🏗️RequestedEditFinancialSummary➖ RemovedOBJECT

The financial breakdown of the edit.

Fields: editOrderLevelDiscountSubtotalSet, editSubtotalBeforeTargetAllDiscountsSet, editSubtotalSet, editSubtotalWithCartDiscountSet, editTotalSet ... +1 more
🏗️RequestedEditLineItem➖ RemovedOBJECT

A line item included in a buyer-initiated requested edit.

Fields: id, lineItem, quantity, resolvedQuantity
🏗️RequestedEditLineItemConnection➖ RemovedOBJECT

An auto-generated type for paginating through multiple RequestedEditLineItems.

Fields: edges, nodes, pageInfo
🏗️RequestedEditLineItemEdge➖ RemovedOBJECT

An auto-generated type which holds one RequestedEditLineItem and a cursor during pagination.

Fields: cursor, node
📥RequestedEditLineItemRemovalInput➖ RemovedINPUT_OBJECT

The input fields for a line item requested for removal in a requested edit.

🏗️RequestedEditLineItems➖ RemovedOBJECT

The line item changes on a requested edit, grouped by the type of change.

Fields: removals
📥RequestedEditLineItemsInput➖ RemovedINPUT_OBJECT

The input fields for the line item changes in a requested edit, grouped by the type of change.

📥RequestedEditResolveInput➖ RemovedINPUT_OBJECT

The input fields for resolving a requested edit.

🏗️RequestedEditResolvePayload➖ RemovedOBJECT

Return type for requestedEditResolve mutation.

Fields: requestedEdit, userErrors
🏗️RequestedEditResolveUserError➖ RemovedOBJECT

Errors related to resolving a requested edit.

Fields: code, field, message
📋RequestedEditResolveUserErrorCode➖ RemovedENUM

Possible error codes that can be returned by RequestedEditResolveUserError.

Values: NOT_FOUND, INVALID
📋RequestedEditStatus➖ RemovedENUM

The status of a buyer-initiated requested edit.

Values: REQUESTED, RESOLVED, DENIED

🔄 Modified Types (10)

🏗️Company🔄 Modified
🔄 Field modified: orders
🏗️Customer🔄 Modified
🔄 Field modified: orders
🏗️GiftCardProductSetUserErrorCode🔄 Modified
Enum value added: INCOMPATIBLE_BARCODE_FIELDS
Enum value added: BLANK_BARCODE_VALUE
Enum value added: TOO_MANY_BARCODES
Enum value added: BARCODE_VALUE_TOO_LONG
Enum value added: DUPLICATE_BARCODE_VALUE
Enum value added: INVALID_BARCODE_TYPE
Enum value added: INVALID_BARCODE_SEPARATORS
Enum value added: INVALID_BARCODE_LENGTH
Enum value added: INVALID_BARCODE_PREFIX
Enum value added: INVALID_BARCODE_CHARACTERS
Enum value added: BARCODE_CHECKSUM_VALIDATION_FAILED
🏗️Order🔄 Modified
Field removed: requestedEditStatus
Field removed: requestedEdits
Field added: displayRequestedEditStatus

The order's aggregated requested edit status for display purposes.
Indicates the overall state of buyer-initiated requested edits for the order,
helping merchants track and manage pending requests.

Field added: requestedOrderEdits

The buyer-initiated requested edits on unfulfilled line items for this order.

🏗️ProductSetUserErrorCode🔄 Modified
Enum value added: INCOMPATIBLE_BARCODE_FIELDS
Enum value added: BLANK_BARCODE_VALUE
Enum value added: TOO_MANY_BARCODES
Enum value added: BARCODE_VALUE_TOO_LONG
Enum value added: DUPLICATE_BARCODE_VALUE
Enum value added: INVALID_BARCODE_TYPE
Enum value added: INVALID_BARCODE_SEPARATORS
Enum value added: INVALID_BARCODE_LENGTH
Enum value added: INVALID_BARCODE_PREFIX
Enum value added: INVALID_BARCODE_CHARACTERS
Enum value added: BARCODE_CHECKSUM_VALIDATION_FAILED
🏗️ProductVariant🔄 Modified
Field added: barcodes

The barcodes associated with the product variant.

A variant supports up to 20 barcodes, each of
which can have a
type.
Barcode types are validated against their respective format standards.

🏗️ProductVariantsBulkCreateUserErrorCode🔄 Modified
Enum value added: INCOMPATIBLE_BARCODE_FIELDS
Enum value added: BLANK_BARCODE_VALUE
Enum value added: TOO_MANY_BARCODES
Enum value added: BARCODE_VALUE_TOO_LONG
Enum value added: DUPLICATE_BARCODE_VALUE
Enum value added: INVALID_BARCODE_TYPE
Enum value added: INVALID_BARCODE_SEPARATORS
Enum value added: INVALID_BARCODE_LENGTH
Enum value added: INVALID_BARCODE_PREFIX
Enum value added: INVALID_BARCODE_CHARACTERS
Enum value added: BARCODE_CHECKSUM_VALIDATION_FAILED
🏗️ProductVariantsBulkUpdateUserErrorCode🔄 Modified
Enum value added: INCOMPATIBLE_BARCODE_FIELDS
Enum value added: BLANK_BARCODE_VALUE
Enum value added: TOO_MANY_BARCODES
Enum value added: BARCODE_VALUE_TOO_LONG
Enum value added: DUPLICATE_BARCODE_VALUE
Enum value added: INVALID_BARCODE_TYPE
Enum value added: INVALID_BARCODE_SEPARATORS
Enum value added: INVALID_BARCODE_LENGTH
Enum value added: INVALID_BARCODE_PREFIX
Enum value added: INVALID_BARCODE_CHARACTERS
Enum value added: BARCODE_CHECKSUM_VALIDATION_FAILED
🏗️Shop🔄 Modified
🔄 Field modified: orders
🏗️WebhookSubscriptionTopic🔄 Modified
Enum value removed: REQUESTED_EDITS_CREATE
Enum value removed: REQUESTED_EDITS_RESOLVE
Enum value removed: REQUESTED_EDITS_DENY
Enum value added: REQUESTED_ORDER_EDIT_CREATED
Enum value added: REQUESTED_ORDER_EDIT_RESOLVED
Enum value added: REQUESTED_ORDER_EDIT_DENIED