The Math Behind Your Restaurant's Inventory Value
When it's time to close the books, most accountants don't actually ask for a precise inventory value — they'll take a percentage-of-sales estimate, or just carry over the number from the same quarter last year. That's not laziness. On a financial statement, the number usually isn't material enough to move anything that matters, and a defensible estimate satisfies the accounting standard about as well as an exact count would.
That's also exactly why so few restaurant owners ever learn how to calculate the real number. The one place that regularly asks for it has quietly trained everyone to treat "close enough" as correct. But the figure your accountant shrugs off is the same one your actual decisions run on — whether you're carrying too much of something, whether a supplier's price has crept up without you noticing, whether the cash sitting in your walk-in is doing you any good there. Wave it off as a bookkeeping formality and you lose the one version of it that's actually useful for running the store.
Here's what a real number takes: you bought $2,200 worth of chicken breast this month. A count on Sunday night found 60 pounds still on the shelf. Neither fact answers "what is this worth" on its own — and stapling them together the wrong way hands you an answer that's confidently wrong instead of honestly missing.
Inventory value isn't hard because the math is complicated. It's hard because getting it right needs two separate records that most restaurants keep in two separate places, and neither one works alone.
This is the core calculation in a longer chain — see Restaurant Inventory Valuation: The Complete Guide for how it fits with clean purchase records, FIFO, and count reconciliation.
TL;DR
- Purchase records tell you what you bought and at what price — they say nothing about what's actually left on the shelf today.
- A physical count tells you how many units are on hand — but a number like "60 units" has no dollar value until you know which purchase batches those units came from.
- Combine the two correctly and you get a weighted average across the batches still on hand — not the latest price, not the oldest price, and not a simple average of every price you've ever paid.
- This is the exact mechanism behind Dinezy's automatic inventory value tracking, and it produces the beginning and ending inventory numbers your COGS formula needs.
Purchase Records Alone: What You Bought, Not What's Left
Say you buy chicken breast twice in January:
- Jan 1: 50 lbs at $10/lb — $500
- Jan 15: 40 lbs at $20/lb — $800
Your purchase records now show 90 lbs bought and $1,300 spent. That's a complete, accurate record of what happened at the loading dock. It tells you nothing about what happened in the kitchen between those two dates.
Some of that chicken went into service. Some might have been trimmed, some might have spoiled, some might still be sitting in the walk-in untouched. Purchase records have no visibility into any of that — they only know what arrived, not what was used. Without a count, "90 lbs purchased" and "how much is left right now" are two completely different numbers, and purchase records can only answer the first one.
This is also why tracking supplier price changes is a separate discipline from valuing inventory. Watching prices move on invoices tells you what things cost as they come in the door. It doesn't tell you what's still sitting on the shelf, at what mix of those prices, on any given day.
A Physical Count Alone: How Much, Not What It's Worth
Now flip it around. Sunday night, a team member counts the walk-in and finds 60 lbs of chicken breast on the shelf. That's a real, useful number — it tells you exactly how much product you're holding, which is the foundation of any count-based inventory system.
But "60 lbs" has no dollar sign attached to it. What is that chicken worth? You can't answer that from the count alone, because a pound of chicken isn't a fixed-price object — it's whatever you paid for it, and you paid different amounts on different days. Multiply 60 lbs by the most recent price ($20/lb) and you get $1,200. Multiply it by the oldest price ($10/lb) and you get $600. Both are guesses dressed up as calculations, because the count itself doesn't say which lb came from which delivery.
A count answers "how much." It takes a purchase record to answer "at what price." You need both, tied together, to answer "what is it worth."
The Worked Example: Combining Purchases and a Count Into One Number
Here's where it gets concrete. Add a third delivery to the same item:
- Lot A — Jan 1: 50 units at $10/unit
- Lot B — Jan 15: 40 units at $20/unit
- Lot C — Jan 20: 30 units at $30/unit
On Jan 25, a count finds 60 units on the shelf.
The first step is figuring out which lots those 60 units actually came from. Restaurants consume inventory FIFO — first in, first out — so the oldest stock gets drawn down first:
- Lot A (50 units) gets used up completely.
- The next 10 units consumed come out of Lot B, leaving Lot B with 40 − 10 = 30 units.
- Lot C hasn't been touched yet — all 30 units remain.
Check the math against the count: 30 (remaining in Lot B) + 30 (all of Lot C) = 60 units. That matches what the count found, so this is the correct breakdown of where those 60 units came from.
Now value each remaining lot separately, using the price it was actually purchased at:
Lot B remaining: 30 units × $20/unit = $600
Lot C remaining: 30 units × $30/unit = $900
-----
Total inventory value: $1,500
Divide by the total units to get the weighted average cost per unit:
$1,500 ÷ 60 units = $25/unit
$1,500 is your inventory value. $25 is the weighted average unit cost. Neither number belongs to a single delivery — it's a blend of the two batches that are actually still sitting on the shelf.
Why This Isn't "Units × Latest Price"
It's worth seeing how far off the shortcuts land, because the gap is bigger than it looks.
- Units × latest price: 60 × $30 = $1,800. This overstates the value by $300, because 30 of those units were actually bought at $20, not $30.
- Units × oldest remaining price on record: 60 × $10 = $600. This is wrong in the other direction — it prices the shelf using Lot A, which is completely gone.
- Units × simple average of all three prices paid ($10 + $20 + $30) ÷ 3 = $20: 60 × $20 = $1,200. This is closer, but still wrong, because it ignores that FIFO already used up all of the cheapest lot — none of the 60 units on the shelf actually cost $10.
The only number that matches reality is the one built from the actual remaining batches: $1,500. Every shortcut either overcounts a lot that's gone or undercounts a lot that's still there in full.
Where Manual Tracking Breaks Down
Doing this once, for one ingredient, isn't bad. Doing it for every ingredient, every time you count, is where it stops being realistic by hand. A mid-size kitchen might carry 150–300 purchased items, each with its own delivery history and count date — getting an accurate inventory value means running the FIFO-and-weighted-average exercise above for every single one of them, every period, and re-running it correctly if a count comes up short and eats into an even older lot than expected.
There's also a case the arithmetic above doesn't cover: a count reporting more units than the purchase records can explain — say, 70 counted against only 60 accounted for across all known lots. That's not a math problem to solve by guessing at a price for the extra 10; it's a missing record, and the honest move is to flag the unexplained quantity rather than invent a cost for it.
How Dinezy Ties Purchases and Counts Together
Inventory value isn't just "units on hand times today's price." Dinezy calculates it from the weighted average of whatever's actually left in each batch — so a shelf with three deliveries at three different prices gets valued the way it actually was bought, not the way it was bought most recently. That's the same Lot A/B/C math above, run automatically every time a count is approved, across every item in your inventory.
When a stock count reports more units than your purchase records can account for, Dinezy flags the difference as a gap instead of guessing at a cost — you can see exactly how many units are unexplained and add the missing purchase record to resolve it. The quantity from the count stays trusted; only the value for that unexplained portion goes unanswered until the record is added.
That weighted-average inventory value is also exactly what feeds the food cost formula: beginning inventory value + purchases − ending inventory value = COGS. Dinezy automatically tracks your beginning and ending inventory values from every count — that's two of the three numbers the formula needs, calculated the same way as the Lot A/B/C example, without you re-running the FIFO math by hand each period.
Frequently Asked Questions
How does Dinezy calculate what my inventory is worth? Dinezy values each item from the weighted average cost of whatever's actually left in its purchase batches — so if you're holding stock from two or three deliveries at different prices, the value reflects that real mix rather than a single price. It's the same calculation as the Lot A/B/C example above: remaining quantity in each batch × that batch's price, added together and divided by total units.
Why doesn't Dinezy just use my most recent purchase price for inventory value? A shelf almost never holds stock from just one delivery — older batches are usually still being drawn down alongside newer ones. Valuing everything at the latest price overstates what's on hand whenever cheaper, older stock is still in the mix, so Dinezy uses the weighted average across the batches actually remaining instead.
What happens if a count doesn't match my purchase records? Dinezy flags the difference as a gap rather than guessing at a cost for it — the counted quantity stays trusted, but the value for the unexplained portion is left open until you add the purchase record it's missing. That keeps a bad guess from quietly working its way into your inventory value.
Does Dinezy calculate my restaurant's COGS automatically? Dinezy automatically tracks your beginning and ending inventory value from every stock count — that covers two of the three numbers the COGS formula needs. Dinezy also totals your purchase records for any date range you filter, so all three numbers the COGS formula needs are in one place.
Can I see how much an ingredient's inventory value has changed over time? Every stock count Dinezy records becomes part of that item's permanent history, so you can pull up its quantity, weighted average cost, and total value for any date range you've counted — useful for catching a slow price creep before it shows up as a surprise in your food cost.
Key Takeaways
- Purchase records alone tell you what you bought and at what price — they can't tell you what's left, because they have no visibility into what was used, wasted, or is still on the shelf.
- A physical count alone tells you how many units you have — but a quantity has no dollar value until it's tied to the purchase batches it came from.
- The correct inventory value is a weighted average across whatever batches remain after FIFO consumption, not the latest price, the oldest price, or a simple average of every price paid.
- In the worked example, 60 units split across two remaining lots ($20 and $30/unit) value out to $1,500 — not the $1,800, $600, or $1,200 you'd get from any of the common shortcuts.
- Beginning and ending inventory value calculated this way are two of the three inputs your COGS formula needs.
Dinezy calculates inventory value from the weighted average of whatever's actually left in each purchase batch — the same Lot A/B/C math above, run automatically every time a count is approved.
