Stock and buying

Dead Stock: 4,571 Frames, About 800 Orders a Year, and No Date to Prove Which Ones Are Dead

One Indian optical business has 4,571 frames and sunglasses in stock against roughly 800 orders a year. Half of them hold a fifth of the money. And the two dates that would say which ones are dead were never recorded - purchase records exist for 1.2% of the catalogue, and one product in 4,490 has a last-sale date.

Also available in: हिन्दी · मराठी

Every optical shop owner knows the frames that never move. They are on the top row, or the back of the second cabinet, and everybody who works there can point at them. What almost no shop can do is say how many there are, how long they have been there, or what share of the money on the shelf they represent.

I went looking for those three numbers in our own ERP. The first one was worse than I expected. The other two could not be answered at all, and the reason they could not be answered is the useful part of this article.

Disclosure and limits. I build Optocore, an optical ERP, and these figures come out of it. They describe one Indian optical business with two branches — its live catalogue as at 18 September 2026, and its order history since September 2022. It is a real shop, not a benchmark. The shape will be familiar; the decimal places are ours.

4,571 frames against about 800 orders a year

The catalogue holds 4,571 frames and sunglasses in stock right now — 4,032 frames and 539 sunglasses.

Now put that next to how fast they leave:

Year Orders
2023 891
2024 822
2025 753

Call it 800 orders a year. Not every order takes a frame — plenty are lens-only repeats, repairs and contact lenses — so 800 is the generous number. Even if every single order carried one frame off the shelf, the stock on hand is close to six years of cover.

Six years is not a stock level. It is an archive.

The trade talks about dead stock as though it were a corner of the shelf. At six years of cover it is not a corner; it is the shelf, with this year's buying sitting on top of it.

Almost every frame is one of a kind

Here is the structural fact that makes optical stock unlike any other retail stock, and it is why the usual software advice does not survive contact with a frame cabinet.

Those 4,571 units are spread across 4,490 separate products — about 1.02 units per product. Ninety-eight percent of what is on the shelf is a single piece: one colour, one size, one model, one of it.

That has two consequences most billing software gets wrong:

  • Reorder points are meaningless. "Minimum stock 2, reorder 5" describes a shop selling the same thing repeatedly. An optical shop mostly does not. When that frame sells, it is gone, and the decision is not "reorder" but "buy something like it".
  • So the unit of management is not the SKU. It is the group: brand, price band, shape, material, gender. You cannot ask "should I restock SKU 4412"; you can only ask "am I holding too much metal half-rim between two and three thousand rupees".

Any stock report that lists SKUs by quantity will therefore tell an optical shop nothing at all. Every line will read 1.

Half the units, a fifth of the money

Group the same stock by selling price and the picture reorganises itself immediately:

Price band Share of units Share of money tied up
Under 1,000 17.5% 4.4%
1,000–1,999 32.7% 15.4%
2,000–2,999 16.9% 13.0%
3,000–4,999 15.1% 18.6%
5,000–7,999 12.2% 23.8%
8,000 and above 5.7% 24.7%

Read the two columns against each other, because that is where the decision lives.

Half the frames on the shelf — everything under 2,000 rupees — hold under a fifth of the money. They are 50.2% of units and 19.8% of the capital. They are cheap to be wrong about.

The top two bands are the opposite: 17.9% of the units and 48.5% of the money. One frame in six, holding nearly half the capital.

That asymmetry decides where an audit should start. Counting the cheap wall is the comfortable job and it frees almost nothing. Forty premium frames that have not moved in two years are worth more than four hundred cheap ones — and they are also the ones most likely to be cleared at a discount later, which is the second bill for the same mistake.

615 brands, and 502 of them are five frames or fewer

One more cut, because it explains how a shelf gets to six years of cover without anybody deciding that it should.

The stock in this catalogue carries 615 different brand names. The top five account for 33.5% of the units and the top ten for 43.5% — so a third of the shelf is a handful of names somebody buys deliberately.

The rest is a very long tail. 502 of those 615 brands hold five frames or fewer.

Some of that is a migration artefact and I will say so plainly: when a catalogue is typed up over years, model names and supplier names end up in the brand column alongside real brands, so 615 is an overstatement of how many brands the shop really buys. But even allowing generously for that, the shape is unmistakable — a small deliberate core, and a tail of ones and twos that arrived because a rep was standing there.

The tail is where dead stock is manufactured. Not in a bad decision, but in a hundred small ones that were never reviewed together, because nothing in the shop ever grouped them and showed the owner the total.

The two dates nobody records

So which of those 4,571 are actually dead?

I could not tell you. Not because the query is hard, but because the shop never wrote down the two dates that would answer it:

  • When did this frame arrive? There are purchase records for 54 of the 4,490 products — 1.2%. The rest came in on supplier bills that were entered as totals, or on no bill at all. Nothing in the system knows the difference between a frame bought last month and one bought in 2021.
  • When did one last sell? Exactly one product in 4,490 carries a last-sale date. The catalogue was migrated into the ERP this July and the counter has been billing through it since late June, so product-level sales history is about three months old. Before that, bills recorded an amount, not which frame left the shelf.

Without those two dates, "dead stock" is not a number. It is a feeling that someone at the counter has, and the whole point of an ERP is to stop running a shop on feelings.

This is the honest finding, and it is not flattering. We have a live ERP, a clean catalogue and a full order history — and we still cannot age our own stock, because the two fields that matter were never part of anyone's habit. Software does not fix that on its own. The first month of a new system is the moment to make those two entries compulsory, before another 4,000 pieces arrive with no date on them.

What dead stock actually costs

Owners usually think of it as money sitting idle. It is worse than idle, in four ways:

  1. It is capital you already paid for, at the cost price, not the selling price. In this shop nearly half of it sits in frames above 5,000 rupees.
  2. It displaces the frame that would have sold. A cabinet holds what a cabinet holds. Every slot given to a 2021 model is a slot this season's rep cannot fill.
  3. It ends up discounted, and discount comes straight off margin. In our own margin figures the average discount consumed about 85% of what the frame earned. Clearing old stock at 40% off is not a recovery; it is the second payment on the original buying decision.
  4. It hides in a number that looks healthy. Stock value on a balance sheet reads as an asset. Six years of cover is not an asset — it is last year's cash, in a cabinet.

How to start measuring from today

You cannot recover the dates you never recorded. You can stop adding to the pile, and you can get a first honest reading within a season. In order:

1. Two compulsory fields, from today. Received-on, and cost. Every frame, no exception, at the moment it is unpacked — not at month end. From that day you have an ageing report, and in six months it will be telling you something true.

2. Bill by the piece, not by the amount. If the counter picks the actual frame on the bill, last-sold takes care of itself. This is the single habit that turns a billing system into a stock system, and it costs about three seconds per sale.

3. Audit by band, not by shelf. Start with everything above 5,000 rupees, because that is where half the money is and there are only a few hundred of them. Two people, one afternoon.

4. Use a 90-day rule for groups, not pieces. Since almost every frame is unique, ageing a single piece tells you little. Ageing a group — this brand, this band, this shape — tells you what to stop buying.

5. Decide the exit before you buy. The useful discipline is not "what will I clear it at", it is: if this group has not moved in a year, what happens to it? Return to the supplier, transfer to the other branch, a bundle, or a write-down. A shop that answers that question at purchase time stops accumulating quietly.

What we are doing with it

We are doing exactly the list above, in a shop that has just admitted it cannot age its own stock. Received-on and cost are now entered when a box is opened; the counter picks the product on the bill; and the first real ageing report will be worth reading around March 2027. That is slower than anyone would like, and it is the actual timeline — anybody promising an ageing analysis of stock that was never dated is selling you a guess with a chart on it.

The uncomfortable part is not the six years of cover. It is that the shop had to be asked before anyone counted.


Counts from the live catalogue of one Indian optical business with two branches as at 18 September 2026: 4,571 frame and sunglass units in stock across 4,490 products, purchase line items for 54 products, one product carrying a last-sale date. Order counts are that business's full order history, 2022-2026. Price bands use each product's current selling price and money tied up uses recorded cost price. No order values, customer records or branch identities are published.