Inventory API Frequently Asked Questions

What happens if I don't make any changes and continue using the deprecated APIs?

After a Shopify merchant enables multi-location on their shop and begins allocating inventory across multiple locations, apps that perform any of the following deprecated actions are at high risk of causing inventory discrepancies. This can impact merchant workflows and might ultimately result in negative reviews, uninstalls, reduced app store rankings, and in rare cases, suspension of API keys:

  • setting inventory_quantity on the product variant via the Product API or Product Variant API
  • updating inventory using inventory_quantity_adjustment on the product variant via the Product Variant API
  • fulfilling orders without specifying a location using location_id (see Migrating to multi-location fulfillment for more details)
  • issuing refunds and restocking items without specifying a location using location_id

Does the Inventory API have webhook events?

Yes. You can use the following webhook events to stay in sync with inventory changes across multiple locations.

How does multi-location work with the online store?

Merchants have to ability prioritize and rank locations from which they'd like to fulfill online orders. All locations are eligible to fulfill online orders.

During checkout Shopify will attempt to fulfill the order sequentially from the list of prioritized locations that has available stock to fulfill all items on an order. If none of the locations have enough stock to fulfil the entire order, Shopify will split the order across multiple locations.

The Shipping cost of the order is calculated based on the shipping origin location (defaults to the current location in shipping settings).

What will happen if I don’t move to using the inventory API and continue using legacy inventory APIs?

Legacy Inventory APIs will be backward-compatible during the deprecation phase, however we highly recommend using the Inventory API to manage inventory going forward since setting and adjusting inventory using the legacy Inventory APIs might not behave as expected on stores that have multiple locations. See affected APIs for more information.

What permissions do I need to use the Inventory API? Will my users need to re-authenticate to accept the new permissions?

To use the new Inventory API, your app must request either the read_inventory or write_inventory permission during the Ask for permission step of OAuth.

This step includes displaying a prompt by redirecting the user to this URL:

https://{shop}.myshopify.com/admin/oauth/authorize?client_id={api_key}&scope={scopes}&redirect_uri={redirect_uri}&state={nonce}&grant_options[]={option}

where {scopes} would include either read_inventory or write_inventory. Once accepted, your app can make authenticated requests to the Inventory API.

It is possible for Shopify to automatically grant your existing users with the new permissions. To request this, please contact deprecations@shopify.com.

Can I update inventory levels in bulk?

No. Single Inventory levels can be updated via the adjust endpoint endpoint. If you run into API request limits as a result of this change, then contact deprecations@shopify.com with your use case.

Will I be able to create new Locations with the API?

No. Currently, the Location API is read only.

How do I determine whether a shop tracks inventory across multiple locations?

Query the Shop endpoint. If a shop is multi-location enabled, then the multi_location_enabled property returns true.

How do we determine if a shop has multiple locations?

To determine if a shop has multiple locations, use the Location API.

Do I have to use the connect endpoint each time I need to allocate inventory to a location?

No. The connect endpoint initializes an inventory level at a location for an inventory item. Once the inventory level has been created, the inventory level endpoints can be used to modify inventory.

How many locations can a single Shopify store have?

Standard Shopify plans can have 6 locations. Plus stores will be able to have more (talk to your MSM).

If a product variant is deleted, will it's associated inventory item be automatically destroyed as well?

Yes.

What is the difference between a fulfillment service location and a location?

A fulfillment service location is a Location that has a 1:1 relationship with a third-party FulfillmentService. For example, when an app registers a new FulfillmentService, Shopify automatically creates a new Location associated to that FulfillmentService.

Important

If a variant is associated with a fulfillment service, then its inventory can only be tracked by that fulfillment service location.

I’m receiving a 403 Forbidden error response code?

The server is refusing to respond to the request. This is generally because you have not included the inventory scopes for this action. Please ensure you have the required read/write_inventory permissions.

For more information: Migration Guide - Authentication

Sign up for a Partner account to get started.

Sign up