Akiba Tools › Guides
How to Find Slow-Moving, Non-Moving and Dead Stock in Your Stock Export
Most guides on dead stock are written for shops: they look at the last sale. In a store, a warehouse or a maintenance stockroom, items are issued, not sold, and a spare part can sit for years for good reason. This guide shows how to find slow-moving, non-moving and dead stock from a normal stock export, in Excel, with the checks that matter for stores.
Dead stock, non-moving, obsolete: what's the difference?
Different teams use different words for the same problem: money sitting on the shelf.
- Slow-moving stock: still used, but rarely.
- Non-moving stock: no issues for a long time. Common wording in stores and maintenance, and in many reports called a "non-moving inventory report".
- Dead stock: no issues for so long that it is unlikely ever to be used. The usual retail term.
- Obsolete stock: the finance and accounting term, often grouped as E&O (excess and obsolete) or SLOB (slow-moving and obsolete) when a write-off provision is calculated.
- FSN analysis (Fast, Slow, Non-moving) is the same idea as a classification method.
Whatever your company calls it, the method below works the same way.
Step 1: Get the right export
You need one file: the stock-on-hand list from your system or Excel, one row per item. Export all items, including those with zero stock, so you can also find codes that are never used.
Must have (5 columns): item code · description · quantity on hand · unit cost (or total value) · last issue date.
Very useful if you have them: quantity on order · reorder point · item creation date · last receipt date · category · location · a critical-spare flag.
Last issue, not last movement. Some systems only give a "last movement" date, which also changes when stock is received. A delivery of an item nobody uses would make it look active. Use the last issue date if you can; if your system shows yearly issue quantities, use those to double-check.
Step 2: Clean the file
- Delete title rows above the headers and any total or subtotal rows (a totals row can double your stock value).
- Make sure the dates are real Excel dates, not text. Select the column and check the format; dates like 31/12/2025 should right-align.
- Put aside lines with negative quantities or zero or missing costs. They are data problems to fix, not stock to value.
- Choose your stock date (the date of the export) and type it in a spare cell, for example
K1.
Step 3: Months since last issue, and value
With the last issue date in column E and the stock date in K1, add a column "Months since last issue":
=IF(E2="","",DATEDIF(E2,$K$1,"m"))
And a column "Stock value" (quantity in C, unit cost in D):
=C2*D2
Step 4: Put each item in an age band
Spares and consumables age at very different speeds, so use different cut-offs. A practical starting point:
| Band | Spares & maintenance | Trading stock & consumables |
|---|---|---|
| Active | 0–12 months | 0–3 months |
| Slow-moving | 12–24 months | 3–6 months |
| Non-moving | 24–36 months | 6–12 months |
| Dead / obsolescence risk | 36+ months | 12+ months |
| Never issued | no issue recorded | no issue recorded |
Adjust the cut-offs to how fast your items normally move.
For spares, with months in column F, the band formula is:
=IF(E2="","Never issued",IF(F2<12,"Active",IF(F2<24,"Slow-moving",IF(F2<36,"Non-moving","Dead"))))
For consumables, replace 12, 24 and 36 with 3, 6 and 12.
Step 5: Total the value by band
Insert a PivotTable: Rows = Age band, Values = Sum of Stock value. Add the value a second time and show it as % of column total. You now have the number that matters: how much cash is in each band, and what share of your stock it is.
A worked example
Eight lines from a made-up spares store, stock date 30 September 2026. The lines were chosen to show each case, so the dead share is far higher than you would expect in a real store.
| Code | Description | Qty | Unit cost | Last issue | Months | Band | Value | On order |
|---|---|---|---|---|---|---|---|---|
| BRG-6205 | Bearing 6205 2RS | 40 | 6.50 | 14 Aug 2026 | 1 | Active | 260 | 0 |
| FLT-HYD-10 | Hydraulic filter 10 micron | 30 | 18.40 | 02 Sep 2026 | 0 | Active | 552 | 0 |
| VBT-B52 | V-belt B52 | 12 | 9.80 | 02 Jun 2025 | 15 | Slow-moving | 118 | 0 |
| SEAL-45 | Mechanical seal 45 mm | 6 | 145.00 | 20 Mar 2024 | 30 | Non-moving | 870 | 0 |
| GBX-K90 | Gearbox assembly K90 | 1 | 4,850.00 | 05 Nov 2021 | 58 | Dead | 4,850 | 0 |
| VLV-BALL-2 | Ball valve 2" stainless | 14 | 62.00 | 18 Jul 2022 | 50 | Dead | 868 | 10 |
| CBL-4C16 | Cable 4-core 16 mm² (m) | 250 | 7.20 | 10 Jan 2023 | 44 | Dead | 1,800 | 0 |
| MTR-7K5 | Electric motor 7.5 kW | 2 | 980.00 | – | – | Never issued | 1,960 | 0 |
Made-up data. Total stock value 11,278: Active 812 · Slow-moving 118 · Non-moving 870 · Dead 7,518 · Never issued 1,960.
Three things stand out. The ball valve is dead and still on order. The motor has never been issued: it may be a critical spare, or a mistake. And the gearbox alone holds most of the dead value, so one decision there matters more than ten small ones.
Step 6: Four checks retail guides miss
1. Dead or slow items still on order
The cheapest saving is the money you haven't spent yet. Flag items in the Non-moving or Dead band that have a quantity on order or a reorder point above zero (band in G, on order in H):
=IF(AND(OR(G2="Non-moving",G2="Dead"),H2>0),"Stop or reduce order","")
Cancel what isn't needed, and set the reorder point to zero for items no longer used.
2. Critical spares
Some parts are held for breakdowns you hope never happen. They will always look slow. Mark them "Keep: critical spare", record why, and report them separately so they don't hide the real problem or get written off by mistake.
3. Duplicate codes
When one part sits under two codes, usage is split and both look slow. Sort by description and look for the same part numbers written differently (BEARING 6205 2RS and Bearing 6205-2RS). Check carefully before merging: 6205 2RS (sealed) and 6205 ZZ (shielded) look alike but are different parts.
4. Codes never used
Items with zero stock, never issued and never received, created more than a year ago, clutter your item master and make searching harder. List them and block them in your system.
Step 7: Decide, item by item
Finding dead stock is the start. For each item, choose one action and record it:
- Keep (with a reason, for example a critical spare)
- Return to the supplier, even with a restocking fee
- Transfer to another site that uses it
- Sell to other users, dealers or at auction
- Write off and dispose, recovering any scrap value
Start with the highest values. A handful of items usually hold most of the money.
Prefer not to build it in Excel?
The free Dead Stock Finder does all of the above from your stock export: age bands for spares and consumables, value by band, dead items still on order, codes never used and suspected duplicates, with an Excel report and an action column for every item. Your file is read in your browser and never uploaded.
Try the free Dead Stock FinderFrequently asked questions
What is non-moving inventory?
Stock that has had no issues (no use) for a set period. In maintenance and spare-parts stores, a common cut-off is 24 to 36 months without an issue; for fast-moving consumables it is much shorter, often 6 to 12 months.
How long before stock is considered dead or obsolete?
There is no universal rule. A common rule of thumb in spare-parts stores is 36 months or more without an issue; for trading stock and consumables, 12 months or more. Set cut-offs that fit how fast your items normally move.
Should I write off all dead stock?
No. Some slow items are critical or insurance spares held on purpose. Review each item and decide: keep, return to the supplier, transfer, sell or write off.
What is FSN analysis?
FSN analysis classifies items as Fast-moving, Slow-moving or Non-moving based on how often and how recently they are used. It is the same idea as the age bands in this guide.
What is the difference between dead stock and excess stock?
Dead stock is not being used at all. Excess stock is still used, but you hold more of it than you need. Both tie up cash; they need different actions.