I’m testing Shopify’s Physical Inventory feature preview on a new development store.
The store has the Physical Inventory preview enabled, and I’m calling the Admin GraphQL API using the unstable version.
The query:
query {
inventoryPurchaseOrders(first: 10) {
nodes {
id
name
status
}
}
}
returns:
ACCESS_DENIED
Access denied for inventoryPurchaseOrders field.
Required access: `read_inventory_purchase_orders` access scope.
Also: The user must have permission to view purchase orders.
The shop must have access to the physical inventory feature preview.
I confirmed through currentAppInstallation { accessScopes { handle } } that read_inventory_purchase_orders is NOT granted.
The problem is that read_inventory_purchase_orders does NOT appear in the Admin API access-scope selector in the Shopify Dev Dashboard, so I have no way to request/grant that scope to the app installation.
The development store does have the Physical Inventory feature preview enabled.
Can you confirm how an app should obtain the read_inventory_purchase_orders access scope for the Physical Inventory preview, or enable/whitelist the scope for this development app/store?
Hey @Howard_Lee ,
You’re not missing a setting - there’s no self-service way to get this scope right now.
read_inventory_purchase_orders isn’t in the public access scopes reference at all: Shopify API access scopes - the neighbouring inventory scopes are there (read_inventory_shipments, read_inventory_transfers), purchase orders isn’t. And the preview docs only cover enabling the preview on a dev store, with nothing about required scopes. So its absence from the Dev Dashboard selector looks deliberate rather than a UI bug.
Also worth noting your error is three conditions ANDed together: app scope + staff permission to view POs + shop-level preview. You’ve cleared the last one; the scope is the blocker.
Worth one quick test: declare it in shopify.app.toml and run shopify app deploy. If it fails with an app_access validation error on scopes, that confirms the scope is gated at the platform level.
Otherwise this needs Shopify to enable it server-side. A related thread is useful precedent — different scope (write_inventory, which is public), but the same “preview enabled yet still access denied” situation, and a Shopify dev advocate fixed it manually on their end: Physical inventory not accessible
I’d post your shop domain and app client ID here and ask them to enable purchase order access for your dev app/store.
SHOPIFY_SHOP_DOMAIN=pulseshop-kcbl7ebn.myshopify.com, can you help enable the PO access
Just to be clear I’m a fellow developer, not Shopify staff, so I can’t enable anything on your store. Only Shopify can do that.
Add your app’s client ID next to the domain, since the domain alone isn’t enough for them to act on. For precedent you can point them to: Physical inventory not accessible
And one thing you can check yourself: does a Purchase orders section actually appear in that dev store’s admin? If not, the “permission to view purchase orders” part of the error is failing too, which is worth telling them.
Hey @Howard_Lee - thanks for flagging this, and thanks @Daily_Pulse for the digging. We’re looking into this on our end.
One thing I can confirm now: declaring the scope in shopify.app.toml isn’t a workaround currently. It passes config validation, but the deploy fails with an app_access validation error, so there’s no self-serve way to add read_inventory_purchase_orders right now.
I’m working with our internal team on the supported path here, and I’ll follow up in this thread as soon as I have an update.