Inventory is usually the largest asset an ecommerce business owns and the one it understands least precisely. A stock count answers "how many units exist". The questions that decide whether the business has money next quarter are different: how fast is each line moving, how long until it runs out, and how much capital is sitting in things that are not selling at all.

This guide covers the three calculations that answer those, the windows they depend on, and the reconciliation problem that makes all of them unreliable if it is ignored.

Margin without velocity is not a ranking Product A at 45% margin sells 2 units a month and earns $54 a quarter; Product B at 22% margin sells 40 and earns $528. Product A — 45% margin $54 / quarter Product B — 22% margin $528 / quarter
The higher-margin product earns a tenth as much. Ranking the catalogue on margin alone inverts this.

Sales velocity, and why the window is the whole argument

Velocity Sales velocity = units sold in the window ÷ days in the window

The arithmetic is trivial. The window is not, and it is where most inventory reporting goes wrong — not by being incorrect, but by being unstated.

  • Too short (7 days) and one good weekend makes a product look like it is about to stock out.
  • Too long (90 days) and a line that stopped selling six weeks ago still looks healthy.
  • Unstated and two screens in the same business report different days-of-stock for the same SKU, which destroys trust in both.

A trailing 30 days is a reasonable default for most catalogues: long enough to survive a slow week, short enough to react. Whatever you choose, publish it next to the number. "Days of stock" computed over different windows is two metrics sharing one name.

Days of stock

Runway Days of stock = units remaining ÷ sales velocity

This is the figure that turns inventory from an accounting item into an operational deadline. Eleven days of stock on a product with a six-week lead time is a stockout that has already happened — you just have not felt it yet.

Read it against lead time rather than against zero. The useful threshold is not "days of stock < 0" but "days of stock < reorder lead time + safety", and that threshold is different for a domestic supplier and a container from overseas.

Dead stock, and what it actually costs

A product with no sales in 90 days is dead stock by most definitions. The number worth reporting is not how many SKUs qualify — it is how much capital is in them, at cost.

"Fourteen dead SKUs" is a tidy-up task. "$38,000 of cash sitting in fourteen dead SKUs" is a decision about whether to discount, bundle or write off, and it competes directly with the reorder you were about to place on a line that is selling.

The second cost is the one that does not appear anywhere: dead stock occupies the working capital that a fast-moving product needs. A business can be simultaneously profitable, out of stock on its best seller, and unable to reorder.

The reconciliation problem

Most stores have inventory numbers in two places, and they disagree.

  • The storefront knows what a shopper can still buy. It decrements on every sale through every channel it knows about — including ones your analytics never saw.
  • Your own records know what you produced or purchased and what was defective.

When they disagree, the temptation is to average them or to pick one silently. Both destroy the signal. A produced count and a storefront count that differ materially is an operational fact — shrinkage, an unrecorded sales channel, a bad goods-in receipt — and it is usually the most valuable thing in the report.

The right handling is a stated precedence with the conflict shown: prefer the storefront for availability, because it accounts for sales you did not see; fall back to your own records; and where both exist and disagree, show both figures and flag it.

Empty is not zero

A variant that does not track inventory returns no value, and that is not the same as "out of stock". A catalogue of untracked variants rendered as a wall of zeros sends a business chasing stockouts that do not exist.

Unknown is a legitimate state to display. A report willing to say it does not know is worth more than one that guesses confidently.

Inventory is a profit question

The reason this belongs beside profitability rather than in a separate logistics tool is that margin without velocity is not a ranking.

Same margin, different businesses Product A 45% margin × 2 units/month = modest quarterly profit Product B 22% margin × 40 units/month = several times more

Ranking a catalogue on margin alone is how a business ends up proud of a product that earns almost nothing per quarter, while the line that actually funds the operation gets no reorder priority because its percentage looks unimpressive.

What to watch

  • Days of stock below lead time on anything with budget behind it. A stockout during a campaign you have already paid for is the most expensive version of this failure.
  • Dead stock in currency, tracked as a trend rather than a list.
  • Cover far above velocity — nine months of stock on a product selling three a week is a purchasing decision to revisit.
  • Reconciliation conflicts, which usually point at something operational rather than something numerical.

Reorder point, not reorder date

Most stores reorder on a rhythm — monthly, or when someone notices a gap. The arithmetic that replaces the noticing is small:

When to place the order Reorder point = (velocity × lead time in days) + safety stock Safety stock covers the variance: a slow supplier, a good week, a customs delay.

A product selling 6 a day with a 45-day lead time needs 270 units in the pipeline before it hits zero, plus whatever cover you want for variance. If you are holding 200, you are already late — and no stock report that shows only "200 in stock" will tell you that.

This is the single calculation that converts inventory reporting from description into decision, and it is why velocity matters more than the count.

Frequently asked questions

What window should I use for sales velocity?

A trailing 30 days suits most catalogues: long enough that one slow week does not distort it, short enough to react. Shorten it for fast-moving or seasonal lines and lengthen it for slow ones — but publish whichever you use next to the number, because days of stock computed over different windows on two screens is two different metrics sharing one name.

When is stock officially dead?

No sale in 90 days is the common threshold, and it is a starting point rather than a rule — a deliberately seasonal line is not dead in its off season. What matters more than the cutoff is reporting it in currency at cost rather than as a count of SKUs. "Fourteen dead SKUs" is a tidy-up; "$38,000 sitting in fourteen dead SKUs" is a decision.

Why do my storefront and my own stock counts disagree?

Usually shrinkage, an unrecorded sales channel, or a goods-in receipt that was never entered. The disagreement is the useful part: it is an operational fact with a cause. Averaging the two numbers or silently preferring one destroys the only signal that something is wrong.

Should I rank products by margin or by velocity?

Neither alone. Margin without velocity says a 45% product selling two a month beats a 22% product selling forty, which is wrong by a factor of ten in quarterly profit. Rank by contribution per unit multiplied by units sold, then look at days of stock to see which of those rankings you can actually keep supplying.