Two numbers that should match, and almost never do
The food cost you see on a dish's recipe sheet — calculated ingredient by ingredient, with exact recipe quantities — is a theoretical number. It tells you what that dish should cost if everything went exactly as planned: no waste, no oversized portions, nothing expired thrown away, no supplier price change slipping past unnoticed.
Actual food cost is a different number, and it comes from a different place: the month's real purchases, the warehouse stock value at the start and end of the period, the food revenue actually collected. It doesn't look at recipes — it looks at the money that actually went out and came in.
When the two numbers drift apart — and in nearly every restaurant, to some degree, they do — the difference isn't a calculation error. It's a signal. It means a gap has opened up between the kitchen imagined on the recipe sheet and the kitchen that runs every day, and that gap has a precise cost in euros.
The two formulas (and why they don't measure the same thing)
Theoretical food cost (the "recipe" number):
Theoretical food cost % = (Recipe ingredient cost / Selling price) × 100
Aggregated across the whole menu, this becomes the weighted theoretical food cost: the average of every dish's food cost, weighted by how many portions you actually sell (a dish selling 3 times a month barely matters; one selling 40 times a day matters a lot).
Actual food cost (the "accounting" number):
Actual food cost % = (Purchases + Opening stock − Closing stock) / Food revenue × 100
There are no recipes here: just the month's supplier invoices, the warehouse value at the start and end of the period, and food revenue for the period. This number automatically includes everything the recipe sheet can't see: waste, trim loss beyond what's expected, portions served more generously than written, unrecorded staff meals, theft.
The difference between the two — the gap — is the part of your food cost the recipe doesn't explain.
A full worked example
Take a trattoria doing 40 covers a day with an average food ticket of €35, open 30 days that month: monthly food revenue = 40 × 35 × 30 = €42,000.
Theoretical food cost: calculated dish by dish across the real menu mix (how many first courses, mains, pizzas sold), it comes out to 27%. The "expected" ingredient cost for the month is therefore 42,000 × 0.27 = €11,340.
Actual food cost, reconstructed from warehouse accounting:
- Opening stock (warehouse value at start of month): €3,100
- Ingredient and packaging purchases for the month (from supplier invoices): €13,200
- Closing stock (warehouse value at end of month): €2,400
Actual food cost = (3,100 + 13,200 − 2,400) / 42,000 × 100
= 13,900 / 42,000 × 100
= 33.1%
The gap: 33.1% − 27% = 6.1 percentage points. In euros, over a month, that's 42,000 × 0.061 = €2,562 leaving the P&L without a single recipe line explaining it. If it repeats every month, that's over €30,000 a year.
The 5 most common causes of the gap
1. Trim loss and cooking shrinkage not reflected in the recipe sheet. Beef tenderloin loses 15-20% in trimming, a roast loses weight while cooking. If the recipe doesn't account for this real yield, the theoretical cost is systematically lower than the real one — that's not waste, it's missing data.
2. Actual portions differing from what's written. The recipe says 30g of parmesan, the kitchen adds 45g by eye. Invisible on one plate; on 300 portions a month, it's a real cost no recipe sheet records.
3. Unrecorded waste and trim. Vegetables thrown out because they expired, a dish remade because it was wrong, opened ingredients not properly resealed: if none of it is logged anywhere, it disappears from the stockroom but not from the accounts — you simply don't know where it went.
4. Supplier prices that went up but haven't been updated on the recipe. Theoretical food cost is calculated with the ingredient price stored in the system. If that price is two months old and the supplier has since raised it, the recipe sheet is calculating a cost that no longer exists.
5. Staff meals, tastings, comped dishes that go unrecorded. A coffee on the house, a trial dish for a new customer, staff lunch cooked with the same ingredients as the dining room: all legitimate, but all raw material leaving the stockroom without a matching sale.
When to worry
A small gap is normal: no kitchen runs with laboratory precision, and some margin for trim, shrinkage and small mishaps is part of the job. The warning sign isn't having a gap — it's watching it grow month after month with no identified cause, or seeing it concentrated on the same dishes or the same suppliers: at that point it's not random noise, it's a specific problem worth isolating.
The reference point for what a "correct" theoretical food cost looks like varies a lot by venue type: according to the FIPE 2025 benchmarks, a pizzeria sits around 24-28%, a traditional trattoria around 30-32%, a fine-dining restaurant can exceed 35% because of higher-end ingredients. Comparing your own gap against your own corrected theoretical food cost, not against a generic average, is the first step to not chasing the wrong target.
Closing the gap: the monthly control cycle
Closing the gap completely isn't realistic — and it wouldn't even be useful, it would cost more time than it saves. But narrowing it is:
- Regular physical stock counts. Without a real count, "closing stock" is just a number on paper, never verified — and the resulting actual food cost can be as wrong as the theoretical one.
- Log waste the moment it happens, not from memory at the end of the week: waste logged immediately has a traceable cost, waste forgotten stays an unexplained hole in the accounts.
- Update the recipe sheet whenever a price changes meaningfully, not once a year: a theoretical food cost calculated on six-month-old prices isn't a control tool anymore, it's a historical document.
- Look at the gap dish by dish, not just on the total: a restaurant with an "in line" average food cost can still be hiding a dish that loses money every time it's served, offset by one that earns too much.
How BiteBase keeps the two numbers close
BiteBase calculates theoretical food cost directly from the recipe sheet and recalculates it automatically every time an ingredient's price changes — no need to update recipes by hand every time an invoice comes in. When a product's price moves more than 10% from its history, an alert flags it before that cost silently ends up in the next recipe calculation unnoticed.
Actual food cost, on the other side, is reconstructed from real recorded purchases (supplier invoices) and warehouse valuation, with the waste log keeping a separate trail of trim and spoilage so you don't have to guess at month-end.
And for every recipe, BiteBase also flags how much you can trust the theoretical food cost you're looking at: whether it's calculated on recent prices and complete data, or based on ingredients with no price on file, or on a price list that's weeks stale. A "verified" theoretical number and one "based on stale data" tell different stories, even if they show the exact same 27% on screen.
Frequently asked questions
Is actual food cost always higher than theoretical? Almost always, because actual by definition includes everything theoretical doesn't (waste, shrinkage, errors). It's rare — but not impossible — for actual to come out lower: that happens when theoretical food cost is calculated on old prices higher than current ones.
How often should actual food cost be calculated? Monthly is the minimum useful cadence: it requires a stock count at the start and end of the period. Some high-volume venues calculate it every two weeks to catch drift earlier.
What's the difference between food cost and prime cost? Food cost covers ingredients only. Prime cost adds kitchen labor cost: food cost + labor cost. It's the indicator many floor controllers look at first, since together they make up the largest share of a restaurant's variable costs.