Measuring the value
Sellable stock is not stock on hand: the ROI of an "actual stock" row that answers the right question
On the dispatch grid, "actual stock" stops adding every warehouse and no longer counts the salvage warehouse, with an optional row for stock elsewhere: the money comes from selling salvage before it spoils and from no longer promising stock that cannot be sold — how to measure each, and how far to trust it.
What is separating sellable stock from stock on hand worth?
All it needs is delivery notes per day, the average cost of one note and the share of goods customers return. Every money figure follows from those — and every one is editable.
Derived from the four numbers above
Assumptions — open to see and edit every number
Salvage sales
Allocating stock that cannot be sold
Time and cost
This is an estimate, not a promise. Stream B is the softest — set it to 0 and read the total again. Set the return share to 0 and every stream goes to 0 with it, as an honest model should.
On the dispatch grid, the "Actual stock" row is the number the dispatcher looks at most in a day: whatever is left is what gets allocated. The question this piece asks sounds like a matter of words — stock of what? — but at a fresh-goods distributor it is a matter of money.
1. Two numbers with one name
Stock on hand is everything the company holds. Sellable stock is the part of it that can be promised to a customer today. The two agree when every kilo in the warehouse is sound. With fresh fruit they never agree.
Before the change, "Actual stock" on the grid added every warehouse in the company into one number. Once customer returns started being recorded on the dispatch grid and received into a salvage warehouse, that bruised and near-date fruit immediately became part of the number the dispatcher allocates from — as if it were sound.
Measured over the last 60 days at a business running about a hundred delivery notes a day: returned quantity is about 0.47% of delivered quantity, and 13% of customers returned something at least once. Small — but it piles up on exactly the most perishable items, where the dispatcher has the least room for error.
2. What the change is
- "Actual stock" no longer counts the salvage warehouse. The number the dispatcher allocates from is sellable stock.
- An optional "Stock in other warehouses" row. The user picks which warehouses to show; each cell is the total of the warehouses picked, and a hover over the cell shows each one.
The goods go nowhere. They stay in the warehouse, stay on the books, stay counted — they are simply no longer promised to customers. And for the first time whoever sells off salvage has one place to look each morning: what the salvage warehouse holds, and how much.
3. First stream: sold as salvage before it spoils
Value the extra sales at the salvage price, not at cost. Returns are bruised and near their date — selling them recovers only part of what they cost. Valued at cost, the same stream reads 6.3 million: two and a half times the real figure.
How to measure it. From now on the salvage warehouse's ledger holds receipts, sales and write-offs per item — the "after" measures itself. The "before" has to be taken by hand for one week before switching on: how much came back, how much was sold off, how much was thrown away.
How far to trust it: medium. Seeing the number does not sell the fruit; somebody has to have the job of calling salvage buyers every morning. If nobody does, set the two shares equal and this stream goes to zero.
4. Second stream: no more promising stock that cannot be sold
How to measure it. Count short-delivered lines whose reason is "goods not up to standard", and same-day top-up purchases, for one month before and one month after. If the chain penalises fill rate, add the penalty to the margin.
How far to trust it: lowest. 20% is an assumption, not a measurement. Set it to zero and read the total again — what is left still pays back.
The calculator counts returns only. Before the change, "Actual stock" also added the company's other warehouses — goods in transit, a branch's stock. That part is not in the model, so the figure here is the low side.
5. Adding it up
| Stream | Per month | Per year |
|---|---|---|
| Sold as salvage before it spoils | 2.54 M | 30.5 M |
| No more promising stock that cannot be sold | 0.74 M | 8.9 M |
| Total at full run | 3.28 M | 39.3 M |
The calculator puts the cost of the change at 8 million VND. Benefits ramp over the first 2 months, because whoever sells off salvage needs a few weeks to trust the salvage warehouse's numbers. On that assumption payback comes in about month 2.9 (month 2.4 if you pretended it ran at full from day one), with a first-year benefit of about 37.7 million VND.
The diagram in the calculator draws the same month of returns twice, on one scale: the upper panel when it counts as sellable stock, the lower one when the salvage warehouse is shown apart. Band width is cost of goods.
6. What this ROI stands on
Two assumptions decide almost all of it: the extra share sold as salvage (over three quarters of the total) and the share of returns handed out as sound (the softest). Lower both — salvage sales rise only from 30% to 45%, only 10% of returns are misallocated — and 1.64 million VND a month is left, payback in about month 5.4, or month 6.4 if it takes 4 months to reach full run.
And set the return share to zero and every stream goes to zero with it: if there is no unsellable stock in the warehouse, separating it is worth nothing. A model that cannot collapse is a prejudice in arithmetic costume.
7. Measuring it in your own business
- Baseline (one to two weeks, before switching on). Track returns by hand: how much was sold off, how much thrown away. Count lines delivered short for "goods not up to standard" and the hurried top-up purchases.
- Switch it on in the dispatch grid. Decide in advance which warehouses the dispatcher needs to see in the "Stock in other warehouses" row.
- Re-measure after two months, against the same season. Fruit is seasonal: a month of fast-ripening fruit returns more than a cool one, and comparing across seasons measures the weather, not the change.
8. The thing to remember
A number is right only when it answers the question of the person reading it. "Actual stock" was never wrong — it added up every kilo the company holds, correctly. The dispatcher simply was not asking "how much do we hold" but "how much can we promise".
Stock you cannot sell is still stock. Do not hide it from the books — just do not promise it to a customer.
The ratios in this piece were measured on a real distributor's system and anonymised; costs, salvage prices and every assumption in the calculator are illustrative. Replace them with your own.
Read next
-
Never invoice twice: ask the accounting ledger before creating — 199 of 209 invoices were already there
When invoicing moves from the accounting package into the ERP, there is a stretch when both create invoices. If the ERP asks the accounting ledger before it creates one, how many duplicates does a cutover avoid — and what is each duplicate you never clean up worth?
-
Sharing an estimate by one link: what the mailed-Excel loop costs, and "which version is the latest?"
An estimate passes through 2–4 people as Excel files sent by mail, so someone always asks "which version is the latest?". When the whole set — drawings, quantity table, where every number comes from — sits behind one shared project, with people invited by email or sent a view-only link that needs no account, how many hours a month does the review loop get back?
-
Invoicing at the original PO price: the delivery note says 21,000, the chain's PO says 30,000
A retail chain pays the price on its own PO, not the price on the supplier's delivery note. When a machine reads the PO price, invoices at it when the gap is plausible and corrects the price list for next time, what is that worth a month — and which lines still need a person?