I once ran the numbers for a 3PL running tens of thousands of square feet, and the warehouse manager went quiet. A dozen-odd lots had been sitting for over six months without a single unit moving — hundreds of thousands of dollars on the books. The painful part wasn't the inventory value. It was the pallet positions those goods were occupying, burning storage fees month after month, for over a year. Nothing sold. Plenty spent.

In twenty years working US warehouses, I've seen this movie at least ten times. Dead stock doesn't bite, but it picks your pocket every single day. Nobody plans for it, either. It piles up quietly: a buyer over-orders to hit a vendor MOQ, a forecast misses, a SKU gets discontinued and everyone assumes "we'll deal with it later." Later turns into eighteen months. Today: how to read an inventory aging report, where the red line is, and — once the red light is on — how to deal with it lot by lot.

Bucket It First — Don't Obsess Over the Cutoffs

Step one is aging buckets. The common industry practice looks like this: 0-30 days, 31-60, 61-90, 90-180, and 180+. Tune it to your own turnover rhythm, but don't open with "what's the real difference between 61 and 62 days." Buckets exist to trigger actions, not to write a thesis.

The trickier question is where the clock starts — and this is where people get burned. The start date should be the last movement date, not the receiving date. In 2023 I visited a 3PL in Ontario whose aging report ran off receiving dates, flagging perfectly healthy safety stock as red. The ops manager nearly took that glowing-red report into a clearance negotiation with the client and almost torpedoed a good account. If the goods are moving, they're not old. Goods with expiration dates — food, supplements — get a separate lot-expiry report. Don't mix that into aging.

Pull the report from your system with four fields: last outbound date, receiving date, lot number, on-hand quantity. Plenty of systems default their aging report to the receiving date — change it to last movement, or your safety stock lights up red and the report becomes useless. Get this one table running smoothly before adding fancy dimensions.

Here's the punch list — just run it. Pull the aging report. Look only at 90 days and up; ignore everything younger for now. Write one disposition behind every line: promote, return to vendor, move to a clearance channel, donate, destroy — or "keep selling, with a reason." Every disposition gets an owner and a deadline. A line with a blank disposition doesn't get to show up at next month's meeting. Either there's an action, or there's an explanation.

Why draw the line at 90 days? Anything untouched for a full quarter is almost certainly not normal turnover — it's genuinely not selling. Past 180 days, calling it dead stock needs no apology. One exception: seasonal goods. Christmas decor only moves two months a year; nine quiet months is normal. Pull seasonal items out before you bucket, or you'll "kill" healthy inventory.

Aging Alone Lies — Cross It With ABC

An aging-only report is half a report. The old trick is crossing aging with ABC classification: A items are high-velocity, high-value; C items are low on both. Four quadrants, four treatments — never one blanket rule.

Aged A items go to promotion first. They have value and they have buyers; a discount or a bundle usually moves them, and the goal is getting cash back. In 2022 a home-goods seller I know sat on an A lot for the better part of half a year, then ran a buy-two-get-one-free and cleared seventy percent in two weeks — cash flow saved first. The real danger with aged A items isn't the discount. It's refusing the discount while the lot quietly slides from A to C.

Aged B items: call the vendor about returns before anything else. Plenty of purchasing contracts carry return clauses; if they've expired, so be it, but the phone call costs almost nothing. What can't go back goes to discount channels and liquidators — take the haircut and free the space. The judgment call on B items is a straightforward one: lose ten percent selling it off, or keep paying storage for another year. Not a hard math problem.

Aged C items: don't hesitate — donate or destroy. Unit values are low, and the labor cost of running a promotion exceeds the goods themselves; the more you fuss, the more you lose. On donations, ask your tax advisor what the deduction looks like — it varies by state and by company, and I'm not getting into tax code details here.

Close-up of pallet cartons on rack shelves with barcode labels

If you're a 3PL, there's an extra layer of pain: the goods belong to the client, and you can't unilaterally mark them down or scrap them. My approach is three clauses, written into the contract up front: escalating long-term storage rates — the older the inventory, the higher the rate, so the client feels it; a monthly aging report pushed to the client, with everything past 90 days flagged red and a disposition demanded; and a default path for unanswered lots — return or destroy — agreed at signing, so there's no argument later.

Building the table takes half a day. The hard part is doing it every month with someone empowered to make the call. So the last step is turning this into a standing meeting.

Same day each month. The ops manager chairs it; purchasing, sales, and warehouse all in the room; one table on the screen — everything aged 90 days and up. Three decisions per lot: what's the disposition, who owns it, by when. Action items go on a tracker; next month, unfinished ones get questioned. Without the meeting, the aging report is just a spreadsheet nobody opens.

One more number worth putting in front of the boss at that meeting. The industry's rule of thumb for inventory carrying cost runs 20-30% of inventory value per year: storage, tied-up capital, insurance, obsolescence risk, all in. Run your own numbers through it: a C lot worth $100,000 sitting for 18 months costs you twenty to thirty thousand dollars a year by that measure — before counting the opportunity cost of the slots it occupies, slots that could hold bestsellers. Put the number on the table and most of the "let's wait and see" evaporates.

One thing you can do tomorrow: pull everything aged 180 days and up, total the value, multiply by your own storage rate and cost of capital, and figure out exactly how much that pile burned over the past year. Bring that sheet to the next meeting. Dead stock only starts getting managed the day somebody does the math.