Inventory

Inventory Shrinkage: Find Real SKU Loss Before You Reorder

What counts as inventory shrinkage

Inventory shrinkage, in the broad retail sense, is the gap between recorded inventory and actual inventory after sales, returns, and transfers are accounted for.

The National Retail Federation (NRF) defines shrinkage as the difference between recorded inventory and actual inventory, caused by internal theft, external theft, process and administrative errors, and unknown loss. In its 2023 report, NRF put the average retail shrink rate at 1.6% of sales in fiscal 2022, up from 1.4% in 2021, based on 177 retail brands. That 1.6% is a broad retail average on NRF's retail-loss basis, not the narrower unexplained-loss measure defined below, and not a Shopify benchmark. Use it as context, then measure your own SKUs.

Keep two labels. Broad inventory shrinkage is that full recorded-versus-actual gap, including theft, process and administrative errors, and unknown loss. Verified shrinkage is narrower: units a completed count and a finished movement review both confirm are physically missing, and that you cannot assign to a short receipt, damage, spoilage, expiry, sample, or internal use. Known losses still need an adjustment so on hand is honest. They do not enter the verified-loss numerator, and they are not sales.

A lower on-hand number is not shrinkage by itself. If the books and the shelf disagree and you have not yet proved the unit is gone, you have an inventory discrepancy. That post owns the full recount and movement match by SKU and location. This page sets the gate between a Shopify state mismatch and a real missing unit, then covers how to classify that loss, investigate it, correct the operation, and keep it out of the next purchase order.

What broad shrinkage includes

  • Theft by customers, staff, or third parties who had access to the goods. This can be verified shrinkage if the movement review supports it.
  • Damage, spoilage, or expiry that was never written off. Once identified, this is a known-loss adjustment, not verified shrinkage.
  • Receiving shortfalls that were booked as full receipts. Correct them against the purchase order. They are not verified shrinkage.
  • Mis-ships and unrecorded giveaways, samples, or internal use. Post them under their own reason. They are not verified shrinkage.
  • Units a recount cannot find at any location after movements are reconciled. This is unknown physical loss, and it counts as verified shrinkage.

Only theft and unknown physical loss go into verified shrinkage and the numerator of the custom cost-to-sales ratio later in this article. Damage, spoilage, expiry, receiving shortfalls, mis-ships, and unrecorded samples can create broad inventory shrinkage while they sit unrecorded. Once the reason is known, post that reason, exclude those units from the numerator, and still lower sellable stock so cover is not inflated.

What neither measure includes

  • A timing, location, or inventory-state mismatch that the discrepancy review has not closed. That is not a missing unit yet.
  • Orders that sold between your count snapshot and the adjustment.
  • Forecast error. Selling faster than expected is demand, not loss.
  • A supplier credit that has not been replaced with physical units. Money is not stock.

Close the Shopify state check before you call it loss

Do not label a gap as inventory shrinkage until Shopify's inventory states and recent movements are reconciled. According to Shopify Help, On hand at a location is the sum of Committed, Unavailable, and Available. Incoming is separate until it is received and becomes Available. A unit still in one of those states, or at another location, is not a missing unit. The inventory discrepancy guide owns the state-by-state recount. Use the checks below as the gate, then return here only for the residual.

  • Compare the shelf with On hand at that location, not only with Available. On hand still includes Committed and Unavailable units.
  • Do not treat Committed units as missing. Shopify uses Committed for units set aside for unfulfilled orders, draft-order reservations, and transfers marked ready to ship.
  • Check Unavailable before you write a unit off. Damaged, quality control, safety stock, and Other can still be at the location.
  • Do not expect Incoming units on the shelf. Incoming is not part of On hand until it is received.
  • Apply sales, returns, and transfers posted after the count snapshot.

If any check is still open, stop. You have a discrepancy, not verified shrinkage. Classification starts only after every check is closed and the unit is still gone.

Classify the residual before you call it loss

Start from a residual the discrepancy review already left behind: units that are not at any location after states and movements are reconciled. Do not rebuild that reconciliation here. The next job is classification. Every residual unit gets one label, and only two of those labels are verified shrinkage.

LabelCounts as verified shrinkage?How to record the unitsReorder treatment
External or internal theft, supported by the movement reviewYesRelieve inventory at cost. Whether that amount stays in cost of goods sold or is a separate expense depends on your accounting policy. Confirm it with your accountant.Do not add the units to sales velocity.
Unknown physical loss after a second lookYes, until a cause is foundSame cost relief, tagged unknown, until a cause is known. Use the presentation your accountant confirms.Do not add the units to sales velocity.
Damage, spoilage, or expiryNoKnown-loss adjustment at cost. Exclude from the verified-loss numerator. Confirm the expense line with your accountant.Remove from sellable stock. Do not buy them back as demand.
Receiving shortfall against a paid purchase orderNoCorrect the receipt and chase a credit or replacement. This is not a shrink write-down.Count only a confirmed replacement shipment as incoming.
Sample, giveaway, mis-ship, or internal useNoPost the known reason at cost. Exclude from the numerator. Confirm the expense line with your accountant.Do not treat the units as customer demand.

Unknown loss is a valid temporary bucket. It is not a label you should keep. Suggested operating rule of thumb: review unknown labels after two completed count cycles on the same SKUs. If unknown loss is still a large share of those adjustments, the record is incomplete, so tighten classification before you add security spend. Two cycles and "large share" are starting points you set for your own operation, not a published standard. Write the cutoff down before the first cycle, in units or at cost. A store that counts every week may use a shorter window. A store that counts once a quarter should not wait through two full quarters if the unknown cost is already material on that SKU.

Trace verified loss by SKU, not by a store average

Once a unit is classified as theft or unknown physical loss, trace it at SKU, variant, and location. A store-wide shrink percentage hides whether one hoodie size is walking out or every location is short the same carton.

Industry surveys often split broad shrink across external theft, employee theft, and process or control failures. Those shares are other retailers' results, not a split you should paste onto your catalog. Process and control failures in that kind of split are broad shrinkage, not automatically verified unexplained loss. Let the SKU record decide which label fits.

Build a loss-investigation record

For each residual, write a short investigation record a second person can audit. Keep the file even if the final label is a known loss, so you can see what was ruled out. The count method itself lives in the cycle counting guide. This record is the classification file, not a second reconciliation procedure.

  • SKU, variant, location, and the date the residual was confirmed.
  • Units missing, and the current label: theft, unknown physical loss, or a known-loss reason if you reclassified it.
  • Unit cost, so inventory value can be relieved. Use cost, not retail price, unless your accountant applies another inventory method.
  • State-check result: not still Committed, Unavailable, Incoming, or at another location.
  • Known-loss categories ruled out: short receipt, damage, spoilage, expiry, sample, or internal use.
  • Who did the confirming count, and the date of that second look.
  • Who confirmed the label, and the presentation your accountant approved: inside cost of goods sold, or a separate expense. Leave the presentation blank until they confirm it.

A unit that turns out to be a short receipt, a sample, or damage leaves the verified-shrinkage numerator. Reclassify it as a known adjustment. It still lowers sellable stock. It does not stay in verified shrinkage just because it was missing from the first pass.

Read the pattern across verified losses

One missing unit on a slow SKU can stay unknown. Repeating verified losses on the same SKU, the same location, or the same receiving week are a pattern. Sort verified losses from the last 90 days by SKU, location, and label, then apply one correction.

PatternWhat it usually meansOperational correction
Same high-value SKU, repeated unknown or theft labelsA loss problem, not a forecast problemRaise count frequency on that SKU. Do not add the missing units to sales velocity.
Loss clustered at one locationLocal access or local handlingFix that location. Do not add a catalog-wide buffer.
Loss that later reclassifies to short receiptsA supplier or receiving credit, not shrinkageStop calling it shrinkage. Chase the credit or a confirmed replacement shipment.
Loss flat and small across many SKUsNo concentrated leakDo not build a security project from it. Spend the hour on cover and reorder timing.

Book the loss so accounting and cover stay separate

Correct the quantity only after the label exists. Match the adjustment reason to that label. Damage, expiry, receiving shortfalls, and samples correct on hand and stay out of verified shrinkage. Book theft or unexplained loss only for units already confirmed missing. Only that last bucket enters the verified-loss cost-to-sales ratio. The ratio is an operating measure. It does not choose the financial-statement line.

  • Write off damaged or expired units as damage or expiry, and remove them from sellable stock so they stop inflating cover. Exclude that write-off from the cost-to-sales numerator.
  • Book a receiving shortfall against the purchase order, then decide whether the supplier owes a credit. Do not silently lower on hand and reorder the same short as if customers bought it.
  • Record theft or unexplained loss at cost so inventory quantity and inventory value both drop. Shrinkage may be included in cost of goods sold or shown as a separate expense, depending on your accounting policy and reporting framework. Have an accountant confirm the presentation, then use it consistently.
  • Do not raise on hand to match a wish. If the shelf is short, the record should be short. Inflating on hand hides the loss and sells units you cannot ship.

Review losses monthly by label, in units and at cost. If you want one store figure, calculate a custom verified-loss cost-to-sales ratio, not a retail shrink rate. The numerator is verified unexplained loss at cost (theft and unknown physical loss only). The denominator is net sales at retail for the same period. Report the excluded known adjustments beside it so they stay visible. Do not compare this ratio with NRF's 1.6% retail shrink rate. NRF reports shrink as a percentage of sales on a retail-loss basis across surveyed brands. A cost numerator over retail net sales uses a different value basis, and NRF's figure also mixes causes this numerator excludes. Treat 1.6% as industry context, not a target and not proof that your store is fine or failing.

Correct the operation in the same pass

The quantity fix and the floor fix should happen together. According to Shopify Help on adjusting inventory, you can remove damaged, lost, or expired items, and you can move units into unavailable states such as Damaged, quality control, or safety stock. On desktop, an adjustment can include a reason. The listed reasons include Correction, Count, Received, Return restock, Damaged, Theft or loss, and Promotion or donation. The Add reason option is not available in the Shopify mobile app, so the investigation file has to carry the label if you adjust from the app.

  1. If a state-check item is still open, stop and finish the discrepancy review. Do not post a shrink adjustment.
  2. Match the desktop reason to the label. Use Theft or loss only for confirmed theft or unknown physical loss. Use Damaged for damage. Use Promotion or donation for samples and giveaways. Use Received or a receipt correction for a short receipt, not Theft or loss.
  3. For units that are physically gone, set the counted location to the confirmed quantity or remove the lost quantity. For damaged units you are keeping, move them to an unavailable state such as Damaged so they are not sellable.
  4. Assign one owner from the pattern: a tighter count on that SKU, a local access or handling check, or a supplier credit. Do not add safety stock across the catalog to cover one location's loss.
  5. Recalculate cover from corrected on hand and real orders before you issue a purchase order.

The Shopify reason records why the quantity changed. It does not choose the financial-statement line. Confirm with your accountant whether the cost relief stays in cost of goods sold or is presented as a separate expense.

Recheck stock cover before you issue a purchase order

Shrinkage changes two inputs at once. On-hand stock is lower than the system said, so cover is shorter than you thought. Sales history is also dirty if missing units were never orders. A reorder that treats the write-off as demand will buy the loss back.

  1. Post the adjustment so on hand matches the confirmed quantity at that location.
  2. Leave sales velocity alone unless you can point to orders. Stolen, short-received, or spoiled units are not demand. Do not add them to units sold.
  3. Recompute days of cover from the corrected on hand and recent real sales. Cover is on hand divided by average daily units sold, using a window that matches how the SKU actually moves.
  4. Compare that cover to supplier lead time plus your safety buffer. The reorder point formula lives in its own post. Use it rather than rebuilding the math here.
  5. Order only the gap between corrected stock plus incoming, and the quantity you need to cover lead time. If incoming purchase orders already cover that window, do not place a panic order because the shrink alert felt urgent.
  6. If the same SKU has verified loss more than once, raise the count frequency. Do not automatically raise safety stock to hide an unresolved loss. Extra buffer covers theft with cash.

When corrected cover is inside lead time, calculate the buy quantity with the reorder point formula instead of rebuilding that math in the shrink review.

Example, labeled as hypothetical. A serum showed 40 on hand before the loss was classified. It sells 2 units a day, so cover looked like 20 days. Lead time is 14 days. After classification, 4 units are a receiving shortfall, 4 are verified unknown loss, and 4 damaged samples were found and written off as a known loss. Corrected sellable on hand is 28, so cover is 14 days, equal to lead time, with no buffer. A supplier credit for the 4 short units is money, not replacement inventory. Count only a confirmed replacement shipment as incoming. Do not put the shortfall, the damage write-off, or the 4 verified-loss units into sales velocity, and do not reorder all 12 as if customers bought them. Buy from corrected on hand plus actual incoming only.

Priority follows revenue exposure, not the size of the unit gap. A 2-unit verified loss on a bestseller with 5 days of cover and a 21-day lead time outranks a 20-unit loss on a SKU with 90 days of cover. Stock levels, sales velocity, and days of cover are enough to rank which purchase orders happen this week. Inventory replenishment is the weekly plan for which SKUs get cash once the quantities are trustworthy.

When shrink should change the forecast

Most of the time it should not. Remove the loss from the demand series and forecast from orders. Change the forecast only when the loss changes what you can sell later in a way orders will reflect, such as a permanently smaller pack size or a SKU you will stop receiving because theft or spoilage makes it unprofitable.

Before the next purchase order on a SKU that was just adjusted, pause until the loss label is set and cover is recalculated from the corrected on hand. Once that is done, place the order if the corrected stock position requires it. Skip the order only when corrected on hand plus incoming already covers lead time and your buffer.