Developer / API 2026-10

A buyer's "remove this item"
is now a resource you can handle via the API

Buyers can now request to remove unfulfilled items from an order. Those requests are exposed as RequestedOrderEdit through the GraphQL Admin API, the Customer Account API, and three new webhooks. Merchants and apps can review them and either mark them as handled or decline them.

On this page
  1. What's actually changing (30-second overview)
  2. Lifecycle diagram: from request to resolution
  3. Additions to the GraphQL Admin API
  4. Additions to the Customer Account API and webhooks
  5. Comparing 2026-07 and 2026-10
  6. Affected apps and required scopes
  7. Do you need to take action?
  8. 5 key points for developers
  9. 3 practical use cases
  10. One-line summary for proposals

1What's actually changing

Until now, even if a buyer wanted to change an order after purchase,no record of it was visible through the API. Buyers contacted merchants outside the API (outside Shopify's systems), and merchants edited orders by hand.
Starting with API version 2026-10, a buyer's edit request appears in the API as RequestedOrderEdit , a standalone resource.
?

Through 2026-07: trackable only by hand

Requests are exchanged entirely outside the API. Apps can't see or process them, and pending changes can't be reflected in an ERP or WMS before fulfillment.

From 2026-10: a resource in the API

Requests can be created, calculated, marked as handled, and declined via the API. Progress is delivered through webhooks. Apps can surface pending requests in their own workflows and make decisions automatically.

What buyers can request is described as removing unfulfilled line items from the order. Nothing is stated about adding quantities or swapping products.

2Lifecycle diagram: from request to resolution

Buyer Customer Account API Review the amount via calculation orderRequestEdit RequestedOrderEdit REQUESTED status · requested changes Created / handled / declined timestamps Apps can also create one with requestedOrderEditCreate webhook: requested_order_edit/created Merchant / App Review and decide (fulfillment can be put on hold) Resolved (resolved) requestedOrderEditResolve → requested_order_edit/resolved Declined (declined) requestedOrderEditDecline → requested_order_edit/declined
Order edits made through requests are built on top of the existing order editing model. What's new is a layer that lets you view and handle the requests themselves through the API.
requestedOrderEditResolve is described as "Manually mark a request as resolved." The docs don't say whether calling this mutation automatically changes the order's contents.

3Additions to the GraphQL Admin API

Object

RequestedOrderEdit

An object representing a single buyer request. It includes the status, the requested changes, and the timestamps for when the request was created, resolved, or declined.

New fields on Order
  • connection
    requestedOrderEdits
    List of requests associated with the order
  • field
    displayRequestedEditStatus
    A summary of the order's overall request status, intended for display in the UI
Mutation
  • Create
    requestedOrderEditCreate
    Create a request (apps can do this on behalf of the merchant or buyer)
  • Resolved
    requestedOrderEditResolve
    Manually mark a request as resolved
  • Decline
    requestedOrderEditDecline
    Decline a request
Query / Search
  • query
    requestedOrderEditCalculate
    Calculates and returns the financial outcome before a request is created
  • filter
    requested_order_edit_status
    Search filter for the orders query. Use it to find orders with requests awaiting merchant action

4Additions to the Customer Account API and webhooks

Customer Account API (buyer side)

  • mutation
    orderRequestEdit
    Buyer submits an edit request
  • query
    requestedOrderEditCalculate
    Preview the financial outcome
  • Idempotency
    @idempotent directive lets you optionally attach an idempotency key
    Retries won't create duplicates; the object created first is returned

New webhook topics (3)

  • created
    requested_order_edit/created
  • resolved
    requested_order_edit/resolved
  • declined
    requested_order_edit/declined

Payload contents: the request status,order_id, and the requested line item changes (with confirmed quantities).

52026-07 vs. 2026-10

ItemAPI 2026-07API 2026-10
Buyer requests Outside the API Contact the merchant directly Handled via the API orderRequestEdit to submit
Record visible via the API None Yes RequestedOrderEdit
App handling Can't view or process requests Create, resolve, or decline via mutations
Sync with external systems Pending pre-fulfillment changes can't be reflected in ERP or WMS Receive progress updates via 3 webhooks
Find orders awaiting action — requested_order_edit_status Filter
Preview financial impact — requestedOrderEditCalculate(both Admin and Customer)

6Affected apps and required scopes

Order management & ERP

Apps that read or manage orders.

Fulfillment & 3PL

Apps that integrate with fulfillment.

Customer account experience

Apps that build buyer-facing account pages.

Queries

read_orders

Required to read requests and orders via the GraphQL Admin API.

Mutations

write_orders

Required to create, resolve, and decline requests via the GraphQL Admin API.

The article doesn't specify the scopes required on the Customer Account API side, supported plans, or supported countries.

7Do I need to take action?

No action is required.To support buyer-requested order edits, upgrade the GraphQL Admin API, Customer Account API, and webhooks your app uses to the latest version (2026-10).

85 key points for developers

REQUESTED

1. Hold fulfillment on REQUESTED

The article lists holding fulfillment for orders with a REQUESTED status as a use case. You can design a gate that checks this status before handing orders off to a 3PL or WMS.

2. Buyers can retry safely with @idempotent

orderRequestEdit accepts an idempotency key: if a network error triggers a retry, the original object is returned and no duplicate request is created. It's a safe default for account pages, where many buyers are on mobile connections.

¥

3. Check amounts first with Calculate

requestedOrderEditCalculate is available in both the Admin and Customer Account APIs and returns the financial outcome before a request is created. Use it for buyer confirmation screens or internal approval decisions.

4. Both a polling search filter and webhooks are available

Use the 3 webhooks for real-time processing, and the orders query's requested_order_edit_status filter for catch-up and batch processing.

?

5. Verify what "resolved" means and covers

Edits made through a request go through the existing order editing model, andrequestedOrderEditResolve is described as "manually marking as resolved." The article doesn't say whether calling Resolve changes the order automatically or whether you need to call the order editing API separately. Scope is also limited to removing unfulfilled items. Verify the actual behavior on a development store before adopting it.

93 practical use cases for your business

HOLD
USE CASE 1

Prevent shipping items the buyer asked to cancel with 3PL/WMS integrations

Problem
Even after a buyer asks to remove an item, the warehouse still has the original order data and ships it as is.
Solution
requested_order_edit/created is received, put that order's fulfillment on hold in the WMS. When the resolved/declined webhook arrives, release the hold.
Impact
Fewer mis-shipments, returns, and refunds. No more phone calls or emails between CS and the warehouse.
Tech notes
To guard against missed webhooks, right before shipping, use requested_order_edit_status to check again for orders with pending requests. Required scope: read_orders.
Shopify ERP
USE CASE 2

Run an approval flow for edit requests in your ERP

Problem
Order data lives in the ERP, but order change decisions are made separately in the Shopify admin and over email, with no record kept.
Solution
Pull requests into the ERP via webhook and show them on the approver's screen. Return the decision via requestedOrderEditResolve/requestedOrderEditDecline to Shopify.
Impact
Every change request, from intake to resolution, is recorded in one place. Prevents missed or duplicate handling.
Tech notes
The mutations require write_orders . Showing the price change calculated with requestedOrderEditCalculate on the approval screen makes decisions easier.
Submit
USE CASE 3

Add a self-service "Remove item" option to the account page

Problem
Right after ordering, requests to "cancel just one item" pile up in CS and are handled manually over email.
Solution
Add a UI to the customer account page where buyers can select unfulfilled items and request their removal.requestedOrderEditCalculate shows the price change first, then orderRequestEdit submits the request.
Impact
Request intake and verification are automated, so CS only has to decide on each request. Buyers no longer need to reach out either.
Tech notes
@idempotent idempotency key prevents duplicates from repeated clicks or retries. Only removal of unfulfilled items is supported.

10One-line summary for proposals

"Starting with API 2026-10, a buyer's 'please remove this item' shows up in the API and webhooks as a RequestedOrderEdit.
From holding fulfillment to ERP approvals to self-service on the account page, apps can now automate order changes that used to be manual.
No action is required; just upgrade the apps that want to use it to 2026-10."