Ankeshan

Dead-Stock / Slow-Moving Report in Excel

Last updated: 27 June 2026

Dead stock is inventory that has not moved (no sales or issues) for a defined period — typically 180 days (90 days for stricter cycles). In Excel, identify it by calculating "days since last movement" using MAXIFS on your transactions log and comparing it against TODAY(). This guide builds a complete slow-moving and dead-stock report: classification by movement age, value at risk, suggested actions, and a GST ITC reversal calculator for written-off stock.

Key takeaways

  • Dead stock = no movement for 180+ days (adjust threshold to your business cycle).
  • Slow-moving stock = movement, but less than your defined minimum in the last 90 days.
  • Use MAXIFS to find the last transaction date per SKU, then =TODAY()-MAXIFS(...) to get days since last movement.
  • Classify items into: Active, Slow-Moving (30–90 days), Very Slow (91–180 days), Dead (180+ days).
  • For written-off stock, reverse the ITC claimed on the original purchase — record this in GSTR-3B Table 4(B)(2).
  • Act on dead stock before the financial year end: write-offs affect closing stock value and taxable profit.

Fact box. Dead and slow-moving inventory typically represents 20–30% of the stock value in an Indian SMB that has been trading for 3+ years without a systematic review. The carrying cost (storage, insurance, capital cost) of this stock runs at 15–25% of its value per year — so ₹5 lakh of dead stock costs ₹75,000–₹1.25 lakh per year just to hold, before any write-off loss.


How do I identify dead stock in Excel?

Step 1 — Find the last movement date per SKU

Using your transactions table (Trans), the MAXIFS function returns the most recent date for each item:

=IFERROR(MAXIFS(Trans[Date], Trans[Item Code], [@[Item Code]]), [@[Date First Received]])
  • If the item has transactions, this returns the latest transaction date.
  • If there are no transactions (a newly added SKU never sold), use the date it was first received.

Add this as a "Last Movement Date" column on your Stock Summary sheet.

Step 2 — Calculate days since last movement

=TODAY() - [@[Last Movement Date]]

Format this column as Number (not Date). A value of 200 means the item has not moved for 200 days.

Step 3 — Classify items

Add a "Movement Class" column:

=IF([@[Closing Stock]]<=0, "ZERO STOCK",
  IF([@[Days Since Last Move]]<=30, "ACTIVE",
    IF([@[Days Since Last Move]]<=90, "SLOW",
      IF([@[Days Since Last Move]]<=180, "VERY SLOW", "DEAD"))))

This gives five classes:

  • ZERO STOCK — nothing on hand; no action needed.
  • ACTIVE — moved within 30 days.
  • SLOW — 31–90 days since last movement.
  • VERY SLOW — 91–180 days.
  • DEAD — no movement for more than 180 days.

Adjust the 30/90/180 thresholds to match your business cycle. A seasonal business may use 120/270/365 instead.

Fact box. The 90-day and 180-day thresholds above are practical starting points, not statutory standards. The Income Tax Act does not define "slow-moving" stock for valuation purposes — your auditor or CA will apply judgment. Choose thresholds that reflect your normal order-to-sale cycle, and document the logic in your policy note.


How do I calculate the value at risk?

Add a "Stock Value" column to your summary (Closing Stock × Weighted Avg Cost or last purchase price):

=[@[Closing Stock]] * [@[Avg Cost per Unit]]

Then add a "Value at Risk" column that shows value only for non-active items:

=IF([@[Movement Class]]="ACTIVE", 0, [@[Stock Value]])

Summary statistics at the top of the report:

Total value of dead stock:

=SUMIF(Summary[Movement Class], "DEAD", Summary[Stock Value])

Total value of very slow stock:

=SUMIF(Summary[Movement Class], "VERY SLOW", Summary[Stock Value])

Count of dead SKUs:

=COUNTIF(Summary[Movement Class], "DEAD")

Dead stock as % of total stock value:

=SUMIF(Summary[Movement Class],"DEAD",Summary[Stock Value]) / SUM(Summary[Stock Value])

How do I build the full slow-moving report?

Report structure

Create a SlowMoveReport sheet with these columns:

Item Code Item Name HSN Code Closing Stock Last Movement Date Days Since Move Movement Class Avg Cost Stock Value Suggested Action

Pull data from Stock Summary using XLOOKUP or FILTER.

Suggested action logic

=IF([@[Movement Class]]="DEAD",
  IF([@[Stock Value]]>50000, "Write-off / Return to Supplier — high value, escalate",
    "Write-off or discount-sell"),
  IF([@[Movement Class]]="VERY SLOW", "Bundle offer or discount within 30 days",
    IF([@[Movement Class]]="SLOW", "Monitor — reorder suspended", "")))

Adjust the ₹50,000 threshold to your policy.


How do I analyse slow-moving stock by category or supplier?

A pivot table on the Transactions sheet gives a movement analysis:

  1. Insert → PivotTable on Transactions sheet.
  2. Rows: Item Code (or Category if you have a category column).
  3. Values: Sum of Qty (for IN/OUT separately, or net).
  4. Filter: Date — filter to the last 90 days.

This shows which items had zero movement in the last 90 days. Cross-reference with the Movement Class column on your summary.

For supplier analysis: pivot by Supplier Name in rows — suppliers whose items have the most dead stock are worth reviewing for minimum-order-quantity terms or return policies.


How do I handle GST for written-off dead stock?

When you write off dead stock (destroy, donate without consideration, or dispose of at a loss), the ITC you claimed on the original purchase must be reversed:

  1. Identify the original purchase: Use the GRN number and purchase date from your stock register.
  2. Calculate ITC to reverse: Write-off Qty × Purchase Unit Cost × GST Rate%.
  3. Record in GSTR-3B: Reverse in Table 4(B)(2) — "Reversal of ITC on goods destroyed/lost/written off".
  4. Interest: Interest applies at 24% p.a. on wrongly availed/reversed ITC under Section 50 of the CGST Act, from the month the ITC was originally claimed to the month of reversal.

Add a "GST ITC to Reverse" column to your write-off log:

=[@[Write-off Qty]] * [@[Original Unit Cost]] * [@[GST Rate%]] / 100

Group these by GST rate to fill in GSTR-3B accurately.


Free dead-stock analysis template

The free Excel template includes:

  • Stock Summary sheet with Last Movement Date, Days Since Move, and Movement Class columns.
  • SlowMoveReport sheet with value-at-risk calculations and suggested action logic.
  • Summary dashboard with dead-stock value and count.
  • GST ITC reversal calculator for write-offs.
  • Pivot table setup instructions.

Free to download, no sign-up.

Download the Dead-Stock Analysis Excel Template »


How Ankeshan helps: Ankeshan automatically flags slow-moving and dead-stock items in your inventory dashboard inside Excel — updated from your transaction log without any manual pivot table work — and calculates the ITC reversal amount for write-offs. It's launching soon; join the waitlist.


Frequently asked questions

What is the difference between slow-moving and dead stock? Slow-moving stock still moves, just infrequently — less often than your defined threshold. Dead stock has had zero movement for the entire review period (typically 180 days or more). Both tie up capital, but dead stock is far more urgent because it may become unsaleable.

Do I need to write off dead stock at the financial year end? Not automatically, but it is good practice to review and write off stock that is genuinely unsaleable before you close your accounts. If you do not write it off, it overstates your closing stock value and understates your cost of goods sold, leading to higher reported profit and higher tax. Your auditor may require write-off for damaged or obsolete stock.

How do I value stock for write-off — at cost or current market value? Under AS-2, inventories must be valued at the lower of cost or net realisable value (NRV). If dead stock's NRV is zero (it cannot be sold), the write-off amount is the full cost. If it can be sold at a reduced price, the NRV is the expected selling price minus selling costs.

Can I return dead stock to the supplier and get a GST credit note? Yes, if the supplier agrees. A purchase return triggers a debit note (or credit note from the supplier). The GST on the return flows back through IMS and GSTR-2B. Record the return in your purchase register as a negative receipt. No ITC reversal is needed if the return is documented with a valid credit note.

How often should I run a dead-stock report? Monthly is ideal. At minimum, run it at each quarter-end and before year-end. Early identification allows time for discounting, returning to suppliers, or bundling — all of which are less costly than a full write-off.


Sources

  • AS-2 Inventories — valuation at lower of cost or NRV — Institute of Chartered Accountants of India (icai.org).
  • CGST Act 2017, Section 17(5)(h) — ITC blocked on goods lost, destroyed or given as gifts.
  • CGST Act 2017, Section 50 — Interest on late payment and wrongly availed ITC (cbic.gov.in).
  • CBIC GST rate notifications effective 22 September 2025 (56th GST Council).

General information, not professional advice. Verify on the official portal for your case. Reviewed by a Chartered Accountant; last updated 27 June 2026.


Related: Inventory Management pillar » · Stock Register / Inventory Template » · FIFO & Weighted-Average Valuation » · Batch & Expiry Tracking in Excel »