Two stores with stock sync and issue with commited inventory

We run two separate stores (same brand, different geographies) selling the same products using the same SKUs. We use the Fulfillment API to sync orders to our in-house system. Our in-house WMS is the source of truth and syncs inventory levels back to both stores every hour.

Here’s the issue:

  1. We start with 100 units of a product.

  2. An order is placed on STORE1 for one unit.

  3. Shopify moves 1 unit to “Committed” and deducts it from “Available.”

  4. The order is synced to our WMS, which correctly updates the stock level from 100 to 99.

  5. The WMS syncs the updated stock level (-1) back to both Shopify stores.

  6. STORE2 now shows the correct stock level of 99, but STORE1 shows 98, as one unit is still “Committed”.

  7. Only when the order is marked as fulfilled in Shopify does the “Committed” status clear, and both the WMS and Shopify are synced to the correct level—until another order comes in.

This is causing major issues, especially over the weekend when hundreds of orders remain unfulfilled until Monday. Our WMS shows available stock, but one or both stores are marked as sold out because the inventory is effectively double-counted: once in “Committed” and again as an actual deduction.

Is there a workaround for this? Our WMS is custom-built, and we coded the integration ourselves. However, there seems to be no process to address this, and it appears to be the default behavior in Shopify.

Are you using REST or GraphQL API?

REST API is limited and does not allow to fetch/set quantities by name.

GraphQL, on the other hand, allows you to set/adjust other quantities.
https://shopify.dev/docs/apps/build/orders-fulfillment/inventory-management-apps#graphql-queries-and-mutations

It seams there is a mix-up between “on_hand” and “available” quantities.

What you’re describing looks like you’re fetching “available”, but setting “on_hand”.

For “5 . The WMS syncs the updated stock level (-1) back to both Shopify stores.”, I’m assuming you’re reducing the current “Available” quantity in Shopify by 1 instead of overwriting?

I’m wondering whether it would make more sense to simply overwrite/set the “Available” quantity in Shopify based on the available quantity from your WMS?

For example, if you overwrite the “Available” quantity in Shopify to 99, both stores will then have “Available” of 99, but the “On Hand” for Store1 will be 100 because of 1 committed. After fulfillment, On Hand will then be 99, and Available is still 99.