Weighted Average Cost vs. Latest Price
Ask most restaurant owners what their flour is worth right now, and they'll do the same mental math: on-hand quantity times whatever they paid on the last invoice. It feels obvious, and it's wrong the moment more than one delivery is sitting on the shelf at different prices — which is the normal state for almost any ingredient you buy regularly. The gap between "latest price" and the actual value of what's on your shelf isn't rounding error. It's a real number that flows straight into your ending inventory and, from there, into your food cost.
This is the pricing step in a longer chain — see Restaurant Inventory Valuation: The Complete Guide for how it fits with clean purchase records, FIFO consumption order, and count reconciliation.
TL;DR
- "Units on hand × latest price" is wrong whenever more than one purchase lot is sitting on the shelf at once, which is common for any ingredient bought on a regular cycle.
- The correct value is a weighted average: each remaining lot's quantity times its own price, summed and divided by total units on hand.
- Using latest price overstates inventory value when prices are rising and understates it when they're falling — in both directions, it distorts the ending-inventory number that feeds your COGS formula.
- The error gets bigger the more volatile the ingredient's price and the more overlap there is between deliveries.
The Mental Model Almost Everyone Uses (And Why It's Wrong)
Here's the shortcut most people run in their head: you buy the same ingredient at different prices over time, and at any given moment, everything on the shelf is priced at whichever delivery you're "currently" working through — cleanly switching to the next price only once that batch is completely gone.
That mental model only holds when usage lines up exactly with lot boundaries — one delivery fully consumed before you ever touch the next. In practice that almost never happens. Deliveries arrive on a schedule while consumption happens continuously in between, so by the time delivery three shows up, you're usually partway through delivery two, not sitting on zero.
The moment that happens, you have two or more prices coexisting on the same shelf. Valuing all of it at the newest price overstates what's there. Valuing all of it at the oldest price understates it. The only number that's actually correct is a blend of both.
The Worked Example
Take a single ingredient with three purchase lots on record:
| Lot | Arrived | Quantity | Price |
|---|---|---|---|
| A | 1/1 | 50 | $10 |
| B | 1/15 | 40 | $20 |
| C | 1/20 | 30 | $30 |
A count on 1/25 shows 60 units physically on the shelf. Consumption follows FIFO — oldest lots get drawn down first — so working through the numbers: all 50 units of Lot A are gone, plus 10 units pulled from Lot B. That leaves 30 units remaining in Lot B and all 30 units of Lot C untouched. Thirty plus thirty is 60, which matches the count.
Now value it. The shelf isn't holding one price — it's holding two lots at two different prices simultaneously:
(30 × $20) + (30 × $30) = $600 + $900 = $1,500
$1,500 ÷ 60 units = $25/unit
That $25 is the accurate value of what's on the shelf. It's not $20 (Lot B's price), and it's not $30 (Lot C's price, and also the most recent price you paid). It's not "the latest price" and it's not "whichever lot you'd guess is current" — it's the number you get by weighting each remaining lot's price by how many units of it are actually left. (For a deeper look at how FIFO determines which lot gets drawn down first — including the food-safety and staff-rotation side of it — see FIFO in Restaurant Inventory.)
Why "Latest Price" Fails in Both Directions
The practical consequence of defaulting to latest price isn't a small rounding difference — it systematically pushes your inventory value the wrong way depending on which direction prices are moving.
When prices are rising, valuing the whole shelf at the newest, highest price overstates your inventory. Run the same Lot A/B/C example, but value all 60 remaining units at Lot C's $30 instead of the correct blend:
- Latest-price value: 60 × $30 = $1,800
- Correct weighted-average value: $1,500
- Overstatement: $300, on a single ingredient, in a single count
When prices are falling, the same shortcut runs the other way and understates inventory — because the "latest" delivery is now the cheap one, and applying that price to units that were actually bought at higher prices earlier undervalues what's genuinely on the shelf.
Either direction, the error isn't random noise that cancels out over time. It moves consistently with the price trend, which means the longer prices trend in one direction, the larger the gap between what your records say and what's actually true grows.
Why This Isn't Just a Rounding Issue — It Changes Your COGS
Ending inventory value isn't a number that sits off to the side — it's one of the three direct inputs to cost of goods sold: beginning inventory plus purchases minus ending inventory. Overstate ending inventory (the rising-price case above) and COGS comes out too low, so your food cost percentage looks better than it actually is, right up until someone corrects the number and the "improvement" evaporates. Understate ending inventory (the falling-price case) and COGS comes out too high, making a period look worse than it was. See Restaurant Food Cost Percentage for how the full COGS formula works and where these two inventory figures fit into it.
The size of the error scales with two things: how much prices move between deliveries, and how much overlap exists between lots at count time. A slow-moving dry good bought monthly has little exposure — the old delivery is usually gone before the next arrives. A price-volatile ingredient bought weekly or biweekly, where deliveries routinely overlap, is where the gap between "latest price" and actual weighted value gets large enough to matter: proteins, fresh produce, dairy, and anything else on volatile commodity pricing.
Why This Is Hard to Track by Hand
The math itself is arithmetic — what's hard is maintaining it. Valuing inventory correctly at any given moment means knowing, for every ingredient, how many purchase lots are still on hand, what quantity remains in each, and what price each was bought at — updated continuously as deliveries arrive and stock gets drawn down.
Most restaurants don't maintain that. They keep one price per ingredient in a spreadsheet, update it occasionally when someone remembers, and use that single number for every valuation going forward — regardless of how many lots at how many prices are actually sitting in the walk-in. It's not that owners don't understand the concept; it's that tracking multiple simultaneous lots per ingredient, by hand, across an entire inventory, isn't something a manual system holds up under for long. The moment two deliveries at different prices overlap — the normal case, not the exception — a single stored price can't represent what's actually there.
How Dinezy handles this. Dinezy's inventory counting follows FIFO principles for consumption order — when a count comes in short, the oldest purchase lots get drawn down first. The value of what remains is then calculated as the weighted average across whatever lots are still on hand, the same way the worked example above works out, rather than a single price that jumps each time one lot runs dry. That weighted-average value is what feeds into the ending inventory figure for your COGS formula. Recipe costing uses that same weighted-average cost: because recipe costs are built from your purchase records, a delivery recorded at a new price enters the blend right away and every recipe using that ingredient recalculates automatically, so a real price change doesn't sit stale for months.
Frequently Asked Questions
How do I calculate the weighted average cost of an ingredient with multiple purchase lots? Multiply each remaining lot's quantity by its own unit price, add those totals together, then divide by the total quantity on hand. If you're holding 30 units from a $20 lot and 30 units from a $30 lot, that's (30 × $20 + 30 × $30) ÷ 60 = $25 — the blended value of both lots together, not either price on its own.
Is weighted average cost the same as FIFO? No — weighted average cost and FIFO work together but answer different questions. FIFO determines the order units get consumed — oldest lot first — which decides which lots are still on hand after a count. Weighted average cost is how you value whatever remains once you know which lots and quantities are still on the shelf.
Does using the latest purchase price ever give the same answer as weighted average? Yes, in one specific case — when a delivery is fully consumed before the next one is touched, so only one lot is ever on the shelf at a time. Any time two or more lots overlap, which is the normal pattern for ingredients bought on a regular delivery cycle, latest price and weighted average diverge, and the gap grows with how much prices moved between those deliveries.
Which ingredients does this affect most? Proteins, fresh produce, and dairy typically see the most impact, since their prices move often and delivery cycles are frequent enough that lots regularly overlap. A slow-moving dry good purchased monthly carries much less exposure, since one delivery is usually gone before the next arrives.
How does Dinezy calculate what my inventory is actually worth? Inventory value is calculated from the weighted average cost of whatever's actually left in each purchase lot, following FIFO for which lots get drawn down first when a count comes in short — so a shelf holding stock from two or three deliveries at different prices gets valued as the blend it actually is, not the price of your most recent order alone.
Key Takeaways
- "Units on hand × latest price" only works when consumption lines up exactly with lot boundaries — the moment two lots overlap on the shelf, it's the wrong number.
- The correct value is a weighted average: each remaining lot's quantity times its price, summed and divided by total units on hand.
- Latest price overstates inventory when prices are rising and understates it when prices are falling — both directions distort your ending inventory figure.
- Ending inventory feeds directly into COGS, so a valuation error here isn't cosmetic — it shows up as a wrong food cost percentage.
- The ingredients most exposed to this gap are the price-volatile ones bought on frequent delivery cycles: proteins, produce, dairy.
Dinezy calculates inventory value as the weighted average across whatever purchase lots remain on hand, following FIFO for consumption order — so the number feeding your COGS formula reflects what your shelf is actually holding, not just your last invoice. Try Dinezy free at dinezytech.com.
