Somewhere in your warehouse right now, there are pallets of product that haven’t moved in six months. You know exactly which ones they are. You’ve talked about them in at least two planning meetings. Someone said “let’s revisit after Q4” and then Q4 came and went and nobody revisited anything.

Those pallets are depreciating. Every month they sit there, they cost you rent, tie up capital you could deploy on winners, and occupy bin space that a faster-moving SKU needs. The longer you wait to act, the fewer options you have and the worse each option gets.

Most brands know this intellectually. They still don’t move. The reason is almost always emotional: marking down product feels like admitting a mistake. Writing it off feels like throwing money away. So instead, they do the most expensive thing possible — nothing — and call it patience.

The Holding Cost Most Brands Don’t Calculate

Ask an operator what their dead stock costs and they’ll tell you the original purchase price. That’s the wrong number. The purchase price is already spent. What dead stock costs you is what it takes to keep it around, compounding monthly.

Cost ComponentMonthly Cost per PalletAnnual Cost per Pallet
Storage (3PL or owned)$25–$65$300–$780
Insurance and shrinkage$8–$20$96–$240
Capital cost (opportunity)0.8–1.5% of inventory value10–18% of inventory value
Handling (cycle counts, moves, re-slotting)$10–$30$120–$360
Systems overhead (catalog maintenance, sync)$5–$15$60–$180

A pallet of product worth $3,000 at cost is burning $75–$160 per month in holding costs alone, before you account for the capital locked up in it. Add the opportunity cost of that capital — money that could be buying inventory you’d turn four or five times a year — and the true monthly cost climbs to $100–$200.

Now multiply that by 40 pallets of dead stock, which is a conservative number for a brand doing $15M–$30M. That’s $4,000–$8,000 per month evaporating. $48,000–$96,000 per year. On product that is actively losing market value while it sits there.

Dead stock holding cost (annual):

  Storage:           40 pallets × $45/mo      = $21,600
  Insurance/shrink:  40 pallets × $14/mo      =  $6,720
  Handling:          40 pallets × $18/mo      =  $8,640
  Systems:           40 pallets × $10/mo      =  $4,800
  Subtotal (hard costs):                       $41,760

  Capital tied up:   40 pallets × $3,000 avg  = $120,000
  Opportunity cost:  $120,000 × 14% WACC      =  $16,800

  Total annual cost of doing nothing:          $58,560

That $58,560 is what “let’s revisit after Q4” costs. And it assumes the product holds its value, which it almost certainly doesn’t. Seasonal goods can lose 30–50% of their market value within one season of their intended sell window. Trend-driven products lose even more. Products with expiration dates — food, supplements, beauty — can go from “discountable” to “dumpster” in a matter of months.

The Aging Curve Nobody Wants to Look At

Inventory doesn’t go from “sellable” to “dead” overnight. It follows a predictable depreciation curve, and the window for each action gets smaller as the product ages.

Age (Days Since Last Sale)StatusTypical Recovery RateAvailable Actions
0–30Active100%Normal selling
31–90Slow-moving85–100%Promotion, bundle, featured placement
91–180At-risk60–85%Markdown 15–30%, channel shift, flash sale
181–365Dead25–60%Liquidation, off-price, donation
365+Obsolete5–25%Write-off, donation for tax benefit, recycling

The most expensive mistake on this chart is waiting until the 181-day line to take the action you should have taken at 90 days. At 90 days, a 20% markdown moves the product and you recover 80 cents on the dollar. At 181 days, you’re looking at liquidation at 30–40 cents, and the holding costs you’ve accumulated in the interim have already consumed another 10–15% of the original value.

Here’s where the sunk cost fallacy kicks in hardest. At the 90-day mark, a brand with $50,000 of at-risk inventory has two choices:

Option A — mark down 20% now, recover $40,000, free up the space and capital.

Option B — hold for six more months hoping for full-price sell-through, pay $6,000–$10,000 in holding costs, then liquidate at 35% recovery for $17,500.

Option A: Act at 90 days
  Recovery:    $50,000 × 0.80         = $40,000
  Holding:     0 (moved immediately)  =      $0
  Net return:                           $40,000

Option B: Hold until 270 days
  Recovery:    $50,000 × 0.35         = $17,500
  Holding:     6 months × $1,200/mo   = −$7,200
  Net return:                           $10,300

Cost of waiting:  $40,000 − $10,300   = $29,700

That $29,700 gap is the price of optimism. And this is for a single batch of at-risk inventory. Multiply it across every aging pocket in your warehouse and the number gets uncomfortable quickly.

Why Brands Freeze

If the math is this clear, why does anyone hold dead stock? Three reasons surface in almost every conversation with an operator who’s sitting on aging inventory.

The sunk cost anchor. “We paid $50,000 for this product, so selling it for $35,000 feels like losing $15,000.” It isn’t. The $50,000 is gone regardless. The question is whether you want to recover $35,000 now or $12,000 in six months. Framing it as a loss against the original purchase price instead of a gain against the alternative (holding) is the single most expensive cognitive bias in inventory management.

The comeback fantasy. “This product will sell in Q4” or “once we get the new packaging” or “when we launch the marketing campaign.” Sometimes this is true. Usually it isn’t. A product that stopped selling didn’t stop because of the calendar — it stopped because demand dried up. New packaging on a product nobody wants is just more expensive packaging on a product nobody wants. The test: if you wouldn’t buy this inventory today at its current cost, you shouldn’t be holding it.

Channel conflict fear. “If we liquidate this at 40% off, it’ll show up on Amazon at a lower price than our DTC site.” This is a real concern, but it has solutions — liquidation channels that don’t compete with your primary channels, MAP enforcement on liquidated goods, or selling to off-price retailers who serve a different customer entirely. The fear of channel conflict is valid; using it as a reason to hold aging inventory indefinitely is not.

The Clearing Hierarchy

Not all dead stock needs the same exit. The right channel depends on the product’s age, condition, margin position, and brand sensitivity. Work down this list in order — each step is a lower recovery but a faster exit.

Tier 1: Internal promotion (recovery 70–90%). Bundle it with a bestseller. Run a flash sale on your DTC site. Offer it as a gift-with-purchase above a spend threshold. Feature it in an email to your most engaged segment. This works when the product is still current and the demand problem is awareness, not product-market fit. Best window: 60–120 days of slow movement.

Tier 2: Channel shift (recovery 60–80%). Move it to a channel where it might have better velocity. Product sitting in your DTC warehouse might sell through a wholesale partner’s liquidation rack. Amazon FBA units can be enrolled in outlet deals or Lightning Deals. International markets — particularly off-season markets in the opposite hemisphere — can absorb seasonal product at near full price. Best window: 90–180 days.

Tier 3: Markdown and off-price (recovery 30–60%). Sell to a liquidation buyer or a regional off-price chain. List on B2B liquidation marketplaces. Offer to your wholesale accounts at deep discount for their own clearance sections. At this tier, you’re recovering cents on the dollar, but you’re also freeing capital and space immediately. Best window: 150–270 days.

Tier 4: Donation (recovery via tax benefit, 15–40% effective). Donate to a qualified 501(c)(3) organization and take the enhanced tax deduction under IRC Section 170(e)(3), which allows C-corps to deduct up to twice the cost basis of donated inventory. For an S-corp or LLC, the deduction is limited to cost basis, but it still converts a dead asset into a tax benefit. Work with donation logistics platforms that handle pickup, documentation, and fair market value assessment. Best window: 180–365 days.

Tier 5: Write-off and disposal (recovery 0–10%). When the product is expired, damaged, or worth less than the cost to ship it, write it off. Take the inventory write-down, clean the books, and reclaim the warehouse space. The write-off itself generates a tax benefit — you’re deducting the remaining book value as a loss. For products with environmental disposal requirements (electronics, chemicals, certain plastics), disposal costs add up, so don’t wait until this is the only option. Best window: 365+ days, or immediately for expired/damaged goods.

Building Triggers That Force the Decision

The reason dead stock accumulates is that nobody is forced to decide. The inventory exists in a gray zone — not selling well enough to celebrate, not dead enough to write off — and every planning meeting produces the same conclusion: “let’s give it another month.”

The fix is automated triggers that escalate aging inventory into a decision workflow. No committee. No “let’s revisit.” A flag fires, an action is required, and someone is accountable for the outcome.

Here’s a trigger framework that maps to the aging curve:

TriggerConditionRequired ActionOwner
Yellow flag60 days without a sale, or velocity drops below 50% of 90-day averageReview pricing, run promotion, reallocate across channelsDemand planner
Orange flag120 days without a sale, or on-hand exceeds 6 months of forward demandMandatory markdown or channel shift; document the plan within 5 business daysOps lead
Red flag180 days without a saleLiquidation, donation, or write-off decision required within 10 business daysVP of operations or finance
Black flag365 days without a saleAutomatic write-off review; CFO sign-off required to continue holdingCFO

The critical word in each row is “required.” A yellow flag is a suggestion. Everything after it is a mandate. The person named in the Owner column doesn’t have to choose a specific action, but they do have to choose an action and document it. “Hold and monitor” does not count.

Most ERP and inventory management systems can generate aging reports. The data exists. What doesn’t exist is a rule that says “when inventory ages past this threshold, someone must act within this window, and their decision is recorded.”

The Seasonal Trap

Seasonal products deserve their own section because they’re where the “it’ll come back” logic is most seductive — and most expensive.

A summer product that didn’t sell through by August has roughly a six-week window before it becomes next year’s problem. The temptation is to warehouse it for eleven months and try again. The math rarely supports this.

Hold seasonal inventory for next year:

  Cost of product:               $30,000
  11 months storage:             $5,940  (40 pallets × $13.50/mo avg)
  Capital cost (11 months):      $3,850  (14% annual, $30K base)
  Insurance and handling:        $2,640
  Obsolescence risk (20%):       $6,000  (style/trend shift, packaging updates)
  Total cost to hold:           $18,430

  Expected recovery next season: $24,000  (assuming 80% sell-through at full price)
  Net return:                     $5,570

Liquidate now at 45% recovery:

  Recovery:                      $13,500
  Holding costs:                      $0
  Net return:                    $13,500

In this example, liquidating now at 45 cents on the dollar returns more than holding for a full year and selling at 80% of retail. The break-even point — where holding makes more sense than liquidating — only works if you expect 90%+ sell-through at full price next season, with no product changes, no packaging updates, and no shift in consumer preference. For most CPG products, that’s a bet, not a plan.

The exception is products with genuine year-over-year demand stability and no obsolescence risk: basic consumables, evergreen home goods, products with multi-year shelf lives and no trend dependency. If your product fits that profile and you have cheap storage, holding can work. For everything else, the calendar is not your friend.

Markdown Discipline: Doing It Without Wrecking Your Brand

The biggest objection to markdowns is about brand rather than money. “If we put our product on sale for 40% off, what does that say about our brand?” It’s a fair question, and it has practical answers.

Segment the channel. Your clearance sale doesn’t have to happen where your full-price customers shop. Use a dedicated clearance section on your site (separate from the main catalog), sell through a different Amazon listing or a separate seller account, or move product to off-price channels that your core customer doesn’t frequent. The goal is to separate the clearance transaction from the brand experience.

Control the narrative. A “warehouse sale” or “sample sale” positioned as a limited event carries different brand weight than a permanent price cut. DTC brands have been running these effectively for years — Everlane’s “Choose What You Pay” events and Away’s warehouse sales among them. The product moves, the brand stays intact, and customers who buy at a discount often become full-price customers later.

Set a floor. Decide in advance the lowest price you’ll accept for each product tier. For premium products, that floor might be 50% of retail. For commodity products, it might be landed cost plus shipping. Having the number pre-set prevents emotional negotiation when a liquidation buyer calls with an offer and you’re desperate to clear space before holiday receiving starts.

Accounting for the Exit: What Goes Where

The financial mechanics of clearing dead stock matter because they determine how much of the loss hits your P&L — and when.

A markdown is straightforward: you sell the product for less than you planned, and the lower margin flows through COGS and revenue like any other sale. Your gross margin percentage drops for that period, but you’ve converted inventory to cash and the balance sheet gets lighter.

A write-off is an inventory adjustment. You’re removing the product from your books at its current carrying value, and that value hits the P&L as a cost of goods sold adjustment or an inventory write-down expense, depending on how your accountant categorizes it. The tax benefit is immediate — you’re deducting the remaining basis in the period you take the write-down. For a brand in a 25% effective tax bracket, a $50,000 write-off generates $12,500 in tax savings, bringing the real cash cost of the write-off down to $37,500.

A donation gets more interesting. Under IRC Section 170(e)(3), C-corporations can deduct the lesser of twice the product’s cost basis or the cost basis plus half the appreciation. If you donated $50,000 of product (at cost) with a fair market value of $80,000, the deduction would be the lesser of $100,000 (twice basis) or $65,000 (basis plus half the $30,000 appreciation) — so $65,000. At a 21% corporate rate, that’s $13,650 in tax benefit on product that was generating zero revenue and costing you storage every month.

Exit MethodCash RecoveryTax BenefitNet Financial Impact
Markdown (40% of retail)Direct cashNormal margin deductionBest if recovery > liquidation + holding cost
Liquidation (20–40% of wholesale)Direct cashNormal margin deductionBest when speed matters more than recovery rate
Donation (C-corp)NoneUp to 2× basis deductionBest for product with high FMV relative to basis
Write-offNoneBasis deductionLast resort when product has no resale or donation value

The right exit depends on your entity structure, your tax position, and the fair market value of the product. Talk to your accountant before your first major clearing event — the difference between a well-structured donation and a simple write-off can be five figures.

What to Do Monday

If you’ve read this far and you’re thinking about specific pallets in your warehouse, here’s where to start.

  1. Pull an aging report from your inventory system. Sort by days since last sale, descending. Everything over 180 days goes on a list.
  2. For each SKU on that list, calculate the monthly holding cost using the table at the top of this article, then calculate what you’d recover today at 40% of wholesale cost. If the holding cost over the next six months exceeds the difference between 40% recovery and your hoped-for recovery, the decision is already made — you’re paying more to hope than you’d lose by acting.
  3. Set the triggers. Put an automated flag on any SKU that goes 90 days without a sale. Make it visible. Make it someone’s job.
  4. Pick the three highest-value aging SKUs and schedule the clearance action this week. Not next quarter. This week. The decision gets harder with time, not easier.
  5. Build the aging review into your monthly ops meeting agenda as a standing item, with an owner and a required update every time.

The inventory that kills your working capital is the inventory that nobody is watching. Dead stock is a solvable problem, but only if you treat it like one. A markdown is a recovery. A write-off ends a larger loss. The worst thing you can do with inventory that isn’t selling is keep pretending it will.

If your current systems can’t generate aging reports or trigger workflows based on inventory velocity, that’s the kind of operational gap CommerceOS was built to close.

Commerce is chaos.

Tame your tech stack with one system that brings it all together—and actually works.

Get a Demo

Share this post