It seems I can only update the ‘available’ inventory qty via the API.
I would like to update the ‘On Hand’ qty. If we have one unit of stock on order and we count 10 units in a stocktake, if we update this qty via API it will incorrectly lodge 10pc as being available (which equates to 11 onhand units).
Am I missing something simple here?
If not, does anyone have a simple solution they could suggest? I’m guessing it would require a check of on order units then subtracting that number from the available qty. . . seems a little messy and I am not sure how to do this through the API.
Although this is very similar to the response i received from Chatgpt and it isn’t very clear. In the shopify API docs I cannot find any reference to on_order_qty . . .
There is a new GraphQL mutation available as of Admin API version 2023-01 called [inventorySetOnHandQuantities] for setting inventory on-hand quantities using absolute values, which sounds like what you’re looking to do. There’s no equivalent to this new mutation in the REST Admin API.
Hello, i have the same problem in late 2025. Is there a solution yet for this? My external ERP does sync the stock at multiple times of the day and always re-sets the available quantity. At this point all open order (let’s say 50) will now added to the “on hand” Stock. This leads to dramatically overselling and hours of reaching out to costumers every few weeks. The link from the last reply does not work anymore in 2025. I am happy for any clue on this topic Best regards!
You can fix this by having your ERP push on hand stock instead of overwriting available stock. Shopify now supports this through the inventorySetOnHandQuantities mutation in the Admin GraphQL API. It lets you send the real physical quantity without touching committed inventory from open orders.
If your ERP keeps resetting available stock, you will keep overselling. The correct fix is to update the ERP connector so it uses the on hand mutation only. Once that is in place, Shopify will handle committed and available levels correctly.