Impossible to sync inventory with duplicate SKUs

Topic summary

A fulfillment service integration faces a critical inventory synchronization issue when Shopify stores contain duplicate SKUs.

The Problem:

  • Fulfillment services respond to Shopify’s fetch_stock callback with on-hand inventory amounts
  • Shopify subtracts “Committed” quantities separately for each duplicate SKU
  • The service can only return one inventory number, but Shopify applies different committed amounts to each duplicate
  • This creates incorrect “Available” inventory calculations across duplicate products

Example Scenario:

  • 100 physical units exist
  • Orders placed across duplicate SKUs create different committed amounts (e.g., 4 units for SKU A, 20 units for SKU B)
  • Current system calculates availability incorrectly because it treats duplicates as separate inventory pools

Proposed Solution:
Shopify should aggregate committed amounts across all duplicate SKUs when they share the same location, treating them as references to the same physical inventory.

Use Case for Duplicate SKUs:
One merchant uses duplicate SKUs to sell products both individually and in bundles, allocating separate inventory to each while maintaining the same SKU for accounting purposes. This ensures bundles remain available even when individual products sell out.

Supporting documentation provided via ClickUp link.

Summarized with AI on October 28. AI used: claude-sonnet-4-5-20250929.

According to Shopify docs a properly implemented fulfillment service integration should respond to the “fetch_stock.json” callback with the on-hand amount of the SKUs requested. Shopify then subtracts the “Committed” amount from this number to derive the “Available” amount. Therefore, we must return to Shopify the available amount plus an additional amount to represent the pending orders that have been submitted for fulfillment but not yet fulfilled. I’ll call this the “pending” amount.

For example: Consider there are 100 physical units in hand. Submit 2 orders for 2 units each. Available should be 96 units (100 - 4 committed).

When our fulfillment service receives a fulfillment request we accept the fulfillment order and allocate those units to the purchase order so our available amount is reduced. However, when we report availability to Shopify we add this “pending” amount back knowing that Shopify will be subtracting it. Problem solved.

However… If a shop owner has duplicate SKUs in their store this breaks down. I don’t know all of the reasons one would want to have duplicate SKUs, but it is quite common in my experience. Perhaps it has to do with multiple sales channels, brand propositions, etc..

When there are two or more SKUs in Shopify and “pending” orders are created for the various duplicates, Shopify stores a different “Committed” amount for each one. The problem is, my fulfillment service can only return one number, but Shopify is going to subtract different amounts from that number for each of the duplicate SKUs depending on how many of each were ordered. For example, if there are 100 physical units and 4 are reserved for duplicate SKU 1, 20 for duplicate SKU 2 and 3 for non-Shopify orders, there should be 73 available for sale in Shopify.

  • If the fulfillment service returns “73” I would get 69 for duplicate 1 and 53 for duplicate 2.
  • If the fulfillment service returns “97” I would get 101 for duplicate 1 and 77 for duplicate 2.

So as you can see, it is impossible to get both SKUs to be correct since I can only return one number and Shopify will subtract a different number from it for each of the duplicate products.

I propose that Shopify changes the behavior such that the code that processes the inventory should deduct the Committed amount for all duplicate SKUs together when the inventory levels are connected to the same locations. That is, if it is the same SKU and it is connected to the same Location then it is referencing the same physical product. A unit committed via one duplicate Shopify product is effectively committed to all other duplicate Shopify products as well, so it should be deducted from all. If it worked this way, then the fulfillment service could return the available amount plus the pending amount (97 in this example) and Shopify would subtract 24 (4 +20 committed) to arrive at the correct amount for both SKUs: 73.

Here is a document demonstrating proof that how I described it is how Shopify works: https://doc.clickup.com/2304761/d/h/26aqt-3094/9dac1fbe5d3a4a6

Thanks,

Colin

1 Like

While I can’t really comment on the reasons this is working as it is, I can give you the reason WE use duplicate SKUs.

Main example is this: We offer our products both individually and as bundles. Our owners want to make sure that even if we run out of a single product, we can still offer bundles that contain that product.

So, we created a “bundle” variant of each product that is a component of one of our bundles. Each Bundle is created using only the bundle variants from each product in the bundle and we allocate inventory to each variant separately. That way, when the new products run out, customers can still buy a bundle (until the inventory of one of the associated bundle products run out, of course)

However, both the New product and the Bundle product variants share the same SKU, since from an accounting perspective, they are all the same product.