Inventory

Inventory Discrepancy: 7 Causes and How Shopify Stores Fix Them

An inventory discrepancy is recorded stock that does not match sellable units

An inventory discrepancy is a gap between the quantity in your records and the quantity you can physically sell. On Shopify, that recorded number is not one field. On hand is the sum of Committed, Unavailable, and Available, according to Shopify's inventory states documentation.

Compare sellable units in the pick bin with Available at the location that fulfills orders. Compare every unit at the location, including damaged and held stock, with On hand. Mixing those two comparisons creates a fake gap.

A clean Available count and a messy shelf are different problems. Fix the comparison before you fix the number.

If Shopify's recorded quantity is higher than the physical stock, you may oversell or cancel orders, and you may reorder late because the system thinks you have more cover than you do. If physical stock is higher than Shopify's recorded quantity, the store may look low-stock and reorder too early, or sit on units the system does not know it can sell. Either gap throws off days of cover, so the next purchase order is built on a bad starting balance.

Seven causes that show up in Shopify stores

Most gaps come from a missed movement, not from a mysterious system bug. Work through these seven before you rewrite the quantity.

  1. Receiving did not match the purchase order. The supplier shorted or over-shipped, and nobody counted cartons before the receipt was marked complete.
  2. Units are in the building, but in the wrong location, bin, or variant. A size mix-up looks like one SKU is short and another is long.
  3. Returns were restocked in Shopify and not put back on the shelf, or the reverse. Refunded orders that were never restocked leave Available too high.
  4. Committed and Unavailable units were treated as missing. Unfulfilled orders, draft-order reservations, transfers marked ready to ship, damaged stock, quality control, and safety stock are still On hand.
  5. An app, sales channel, or external inventory system adjusted the same variant twice, or never adjusted it. The Created by column usually names the app.
  6. Damage, loss, or theft was never written off. The shelf is short, and adjustment history has no Damaged or Theft or loss activity.
  7. A manual edit or bulk edit changed the number without a movement you can audit. Shopify's bulk editor does not record origin and destination the way Adjust by does.

An additional pattern is easy to miss if you sell from more than one location. Stock at a location that does not fulfill online orders does not make the product purchasable on the online store. Shopify's out-of-stock guide says the item can still show as out of stock online even when another location has units.

How to investigate a discrepancy by SKU

Investigate one variant at one location. Product-level totals hide a short size inside a healthy color.

  1. Pause edits on that variant. Note open orders, draft orders, and incoming transfers before anyone receives, restocks, or adjusts.
  2. Write down Available, Committed, Unavailable, On hand, and Incoming for the fulfilling location. On hand should equal Committed plus Unavailable plus Available.
  3. Open View adjustment history on the variant. Shopify shows only the last 180 days there. Older changes sit in the Inventory adjustment changes report, which can filter by SKU, location, staff member, app, and reason.
  4. Read Activity and Created by. Look for Reservation created, Transfer created, a staff Set to, or an app name. A jump with no matching order is the first place to stop.
  5. Count sellable units only, then count damaged, quality-control, and safety-stock units separately. Have a second person spot-check any gap larger than one unit on a bestseller.
  6. Match the sellable count to Available, and the full physical count to On hand. If only one of those fails, the units are in the wrong state, not missing.
  7. Check unfulfilled orders against Committed, and open transfers against Incoming. Incoming is not sellable until it is received.

Adjustment history is per variant. Shopify does not show every variant of a product in one history view, so a parent-product glance will miss the size that is actually off. Details are in Shopify's adjustment history guide.

What you countedCompare it withWhat a gap usually means
Sellable units in the pick binAvailable at the fulfilling locationOversell risk, or a false stockout if Available is too low
Every unit at the location, including held stockOn handA missed receipt, write-off, or edit, not a state mix-up
Units on unfulfilled and reserved ordersCommittedA reservation was never created, or it was deleted
Units on a transfer not yet receivedIncomingReceiving was marked complete early, or the transfer never updated

How to reconcile Shopify inventory without hiding the cause

Write the gap, the location, and the suspected cause before you change a quantity. Then adjust in a way the next count can read.

After a physical count, use Set to and choose the reason Count. Shopify lists Count for a discrepancy between the physical quantity and the recorded quantity. Use Received for a supplier receipt, Return restock for a resellable return, Damaged for broken units, and Theft or loss for missing units. Correction is the default when no other reason is selected, so it is a weak audit trail. The reason list is in Shopify's adjusting inventory quantities guide.

Do not Set to Available just to make a low-stock alert go away. Editing Available changes On hand by the same amount, and editing On hand changes Available by the same amount. That edit does not reclassify damaged stock. To move units into Damaged, Quality control, Safety stock, or Other, use Adjust by, pick the location as the origin, and pick the unavailable state as the destination.

Leave Continue selling when out of stock off unless you intend to take preorders or backorders. By default, customers cannot buy a tracked item at zero. With that option on, Available can go to zero and below, and a negative balance is not the same thing as a count error. Shopify POS is separate: staff can still sell at zero, and POS warns them first.

If an external system is the source of truth, stop correcting the same SKU in two places. A Shopify edit that an app overwrites on the next sync will reappear as the same discrepancy next week.

How a bad count creates stockout and reorder risk

Available is what the storefront can sell. If Available is higher than the pick bin, you can take an order you cannot fulfill. If it is lower, the product looks sold out while units sit in a return tote or at the wrong location.

Reorder math inherits the same error. Days of cover built on an inflated On hand delays the purchase order. Days of cover built on a deflated On hand orders stock you already have. Clean the count before you trust a reorder formula. A false low-stock alert has the same root: the alert is only as good as Available at the fulfilling location. How those alerts should be read is covered in Shopify inventory alerts.

Safety stock held as Unavailable is not a discrepancy if you meant to hold it. It becomes one when a forecasting tool treats On hand as sellable and a merchandiser treats Available as the truth. Pick one state for replenishment, and make every app read that state.

Stock monitoring does not replace the count. Skymetrics stock intelligence can flag a bestseller trending toward zero from the quantities Shopify already has. If those quantities are wrong, the flag fires early, late, or not at all. Fix the variant, then let the monitor watch the corrected Available balance.

A weekly inventory-accuracy checklist

You do not need a full-store shutdown every week. Cycle-count the SKUs that can hurt revenue this month, and keep the same steps so gaps are comparable.

  • Count bestsellers and any SKU that stocked out, oversold, or was adjusted in the last seven days.
  • Count by variant and fulfilling location, not by product title.
  • Compare sellable units with Available, and all units with On hand.
  • Review adjustment history for app edits, unlabeled Correction reasons, and negative Available you did not plan.
  • Confirm yesterday's receipts against the purchase order before they are put away.
  • Confirm restocked returns are on the shelf and in Return restock history.
  • Move damaged units to Unavailable instead of leaving them in the pick bin.
  • Record the gap before you adjust, then use Count, Damaged, or Theft or loss, not a blank edit.
  • Recheck any SKU that was off last week. A repeat gap is a process problem.
  • Keep units that have not moved in a separate aging review so dead stock is not counted as healthy cover.

A simple accuracy check for the week is matching units divided by units you counted. Track it for bestsellers separately from the long tail. One wrong hero SKU costs more than ten wrong slow sellers. Broader replenishment habits belong in inventory optimization, after the record is trustworthy.

When to escalate to a warehouse, app, or process owner

Escalate when a second count still disagrees, or when the history points at someone else's system. A one-unit miss on a slow SKU can wait for the next cycle count. A bestseller that is off by more than a day of sales should not.

  • Send a receiving miss to the supplier or 3PL with the purchase order, carton count, and photos. Do not absorb it as Correction.
  • Send a repeat bin or pick error to whoever owns putaway and picking. The SKU is being moved without a scan or a bin label.
  • Send an app-named adjustment that has no matching order to the app owner. Pause that app's inventory sync on the variant until the duplicate write is explained.
  • Send negative Available you did not enable to whoever controls Continue selling when out of stock. Confirm whether those orders are real backorders.
  • Send a location mismatch to whoever assigns fulfillment locations. Online availability follows the location that fulfills online orders, not the location with the most units.

Hand off a short note, not a screenshot of the whole inventory page: variant SKU, location, Available, On hand, physical sellable count, physical held count, and the adjustment activity that does not match. That is enough for a warehouse lead or app vendor to reproduce the gap without recounting the store.