Last updated June 2026 · Shopify Admin REST API 2025-01
https://yourstore.myshopify.com
yourstore)
or the full domain (yourstore.myshopify.com) — EcomCentral accepts both.
https://admin.shopify.com/store/yourstore/settings/locations/12345678901
Copy the numeric ID at the end of the URL.
| Field | Where to find it | Example |
|---|---|---|
shop |
Your .myshopify.com URL | yourstore.myshopify.com |
access_token |
Custom App → API credentials (revealed once) | shpat_abc123… |
api_version (optional) |
Leave blank for default (2025-01) |
2025-01 |
location_id (optional) |
Settings → Locations → URL | 12345678901 |
| Permission Scope | Used For | Required? |
|---|---|---|
read_orders |
View order list and order details | Required |
write_orders |
Cancel orders | Optional |
read_products |
View product list, variants, stock levels | Required |
write_inventory |
Update stock quantities | Optional |
read_fulfillments |
Check fulfillment status | Required |
write_fulfillments |
Create fulfillments (add tracking info) | Required |
read_customers |
Show customer name / email on orders | Optional |
read_locations |
Fetch store locations for stock updates | Optional |
read_shipping |
Show shipping line costs on orders | Optional |
| Status | Meaning | Next State |
|---|---|---|
| Pending | Payment not yet received | → Authorized or Paid |
| Authorized | Card authorized, not yet captured | → Paid or Voided |
| Paid | Payment fully captured | → Partially Refunded or Refunded |
| Partially Refunded | Partial refund issued | → Refunded |
| Refunded | Fully refunded | — |
| Voided | Authorization voided before capture | — |
| Status | Meaning |
|---|---|
| Unfulfilled | No items shipped yet — the default state for new orders |
| Partial | Some but not all line items have been fulfilled |
| Fulfilled | All items have been shipped with tracking |
| Restocked | Items were returned and restocked |
Unlike WooCommerce which has a simple status field, Shopify's fulfillment model is more structured:
fulfilled or partialShopify manages stock by variant (not product) and by location. To update stock via the API:
location_id configuredwrite_inventory must be enabled50, the stock is set to exactly 50 — not increased by 50.
The connection is missing the shop or access_token credential.
Go to Connections → Edit and add both fields.
The access token is invalid or has been revoked. Re-install the Custom App in Shopify admin to generate a new token and update the connection.
The API scope for that operation is not enabled. Go to Shopify Admin → Settings → Apps → Your App → Configuration → Admin API and add the missing scope, then reinstall the app.
The order is already fully fulfilled, cancelled, or has no shippable line items. Check the order's fulfillment status in Shopify Admin.
Add your store's Location ID to the connection credentials. See Step 6 above for how to find it.
The SKU must match exactly what is set on the variant in Shopify Admin (Products → your product → variant → SKU field). Check for extra spaces or case mismatches.
EcomCentral · Shopify Admin REST API 2025-01 · Official Shopify Docs