← All articles

October 30, 2026 · Muhammad Rehan · More by Muhammad Rehan

Shopify's Purchase Order Read API Goes Public

Shopify's new Purchase Order Read API ships in 2026-10, but read_inventory alone no longer authorizes the reads your preview integration relied on.

Shopify's Purchase Order Read API Goes Public — ASSOSIATIX Journal

What Changed in API Version 2026-10

Shopify released a public, read-only Purchase Order Read API in GraphQL Admin API version 2026-10, effective September 17, 2026. The inventoryPurchaseOrder and inventoryPurchaseOrders queries now return purchase order details, line items, supplier snapshots, and a paginated transfers connection — without enrolling the shop in the physical inventory feature preview. Previously, the only way to read a purchase order through the GraphQL Admin API was the unstable preview, gated behind the broad read_inventory scope that also covers bins and counts.

That broad scope is exactly what stops working. Shopify's changelog is explicit: read_inventory alone no longer authorizes purchase order reads, including on the unstable version. Apps built against the preview need to request read_inventory_purchase_orders specifically, and read_inventory_transfers if they also read the linked transfers connection. read_inventory keeps working for every other inventory resource — it's only purchase orders that moved behind the narrower scope.

The One Field That Doesn't Survive the Move

If your preview-era queries select InventoryPurchaseOrder.referenceName, that field isn't part of the public 2026-10 schema. Shopify's docs don't explain what it was used for or why it was dropped — only that selecting it against 2026-10 will fail. Strip it from any query before you target the new API version.

Everything else in the shape of a purchase order read carries over cleanly: id, name, status, origin.supplierName, and paginated lineItems and transfers connections all match what the preview already exposed.

What to Actually Change

Three steps, in order:

  • Add read_inventory_purchase_orders to shopify.app.toml's scopes, plus read_inventory_transfers if you read transfers. Merge into the existing scope list — don't replace it.
  • Re-run the scope approval flow for every existing installation. Editing shopify.app.toml doesn't grant anything by itself; existing installs have to go through approval again before the new scope takes effect.
  • Verify what actually landed. Query currentAppInstallation.accessScopes before assuming the new reads will succeed, and if a query still returns an access error, check both the granted scopes and the acting user's permissions — they're checked separately.

One shortcut: if your app already holds read_inventory_purchase_orders or write_inventory_purchase_orders from an earlier integration, you're done — the write scope already includes read access, and no further scope request is needed.

This is also strictly a read release. inventoryPurchaseOrder and inventoryPurchaseOrders exist, but there are no purchase order mutations in 2026-10. If your ERP or 3PL integration needs to write purchase orders, that workflow still runs through whatever path it used before — this release doesn't change that.

Sources

Operations & Fulfillment

ASSOSIATIX works on this every day. See our Shopify Operations Automation service

$./start-project.sh

READY TO BUILD
WHAT'S NEXT?

Tell us where you are and where you want to go. We'll help you choose the right path—storefront, system, product, or a focused growth sprint.