The short answer: To keep GP on target across sites, cost every recipe at current supplier prices, compare each site's actual food cost with its theoretical food cost every week, and investigate the biggest gaps by product. When an invoice price changes, update recipe costs straight away, then decide whether to re-price, re-portion or re-source.
Most groups set a target GP, cost the menu once, and then watch the real number drift. Not because anyone is careless, but because prices, portions and sales mix all move at once, and they move differently at each site. This guide explains the mechanism behind that drift and a weekly routine that keeps it in check.
What is the difference between theoretical and actual food cost?
Theoretical food cost is what your food should have cost, based on what you sold and what each recipe uses. Take POS sales, multiply each item by its recipe cost, and add it up.
Actual food cost is what you really used. For a period, it's:
Opening stock + purchases + transfers in, minus transfers out, minus closing stock
Variance is the gap between the two. A small, steady gap is normal. A gap that grows, or one site that sits well above the others on the same menu, is telling you something.
Both figures are usually shown as a percentage of net sales (excluding VAT). GP is the other side of the same coin: if food cost is 28% of net sales, GP is 72%.
Our post on how AI reporting improves restaurant stock control covers variance from the stock side. Here we focus on the recipe and pricing side.
Why does GP drift between sites on the same menu?
Four things move GP, and each can differ by site:
- Supplier prices. An ingredient goes up on an invoice, but the recipe still uses last quarter's price.
- Portioning and yield. One kitchen trims more, or portions more generously.
- Waste. Overprep, short shelf life, or unlogged waste that turns up as unexplained variance.
- Sales mix. A site that sells more low-margin items will have a lower GP even with perfect execution.
Group averages hide all four. A group GP on target can sit on top of one site that's well below it.
How does a supplier price change flow into recipe costs?
This is the mechanism most spreadsheets break. The chain should work like this:
- A supplier invoice arrives with a new unit price.
- The invoice is matched to the purchase order and the delivery, so you know the price is real and the quantity was received.
- The new price updates the product cost.
- Every recipe and sub-recipe using that product is re-costed.
- Theoretical food cost and menu GP update for every site that sells those items.
If any link is manual, there's a lag. During that lag, your theoretical figures look fine while your actual cost has already moved, and the variance report blames the kitchen for a price rise.
A worked example: one menu item, two sites
All figures below are hypothetical, for illustration only.
The recipe. A halloumi wrap sells for £9.00 including VAT, which is £7.50 net. The recipe costs:
| Component | Cost |
|---|---|
| Tortilla | £0.32 |
| Halloumi, 80g at £11.25/kg | £0.90 |
| Salad and pickles | £0.38 |
| Sauce | £0.15 |
| Packaging | £0.20 |
| Total recipe cost | £1.95 |
Theoretical GP: (£7.50 minus £1.95) ÷ £7.50 = 74.0%.
The price change. The halloumi supplier's invoice moves to £13.50/kg. The 80g portion now costs £1.08, so the recipe costs £2.13. Theoretical GP falls to 71.6% at every site. Nothing changed in the kitchen.
The site difference. Site B's variance report shows halloumi usage running high. A spot check finds portions averaging 95g. At £13.50/kg that's £1.28 of halloumi, a recipe cost of £2.33 and an effective GP of 68.9%. If Site B sells 400 wraps a week, the extra 15g per wrap is 6kg, or £81 a week, on one item.
The options. The group now has three levers, and can see what each is worth:
- Re-price to £9.50 (£7.92 net): GP at standard portion returns to about 73.1%.
- Re-portion to 70g across all sites: recipe cost £2.00, GP about 73.4%.
- Re-source halloumi, or accept the lower margin on a menu star that drives footfall.
And separately, fix Site B's portioning, which is a training conversation, not a pricing one.
How do you keep GP on target, step by step?
Step 1: Build recipes with yields and sub-recipes
Cost what the kitchen actually makes. Include trim and cooking yield, and build sauces, doughs and prep items as sub-recipes so a price change flows through. Include packaging for takeaway items.
Step 2: Use the price on the latest matched invoice
Don't cost from price lists or memory. Use the price you actually paid, once the invoice has been checked against the order and delivery. Raise credit requests for shorts and damages at delivery, so they don't inflate your cost.
Step 3: Map every POS item to a recipe
Theoretical cost is only as good as this mapping. Modifiers, meal deals and site-specific items are where gaps hide.
Step 4: Count regularly and log waste with a reason
You need two stocktakes to measure actual usage. Waste logged with a reason separates "we threw it away" from "we don't know where it went".
Step 5: Review variance weekly, biggest gaps first
Sort by cash value, not percentage. Start with the three or four products that explain most of the gap, then compare the same products across sites.
Step 6: Run menu engineering quarterly
Plot each item by popularity and cash margin. Keep and protect the popular, high-margin items; re-price or re-cost popular low-margin ones; promote or rework the high-margin items that don't sell; and question the rest. Do it per site as well as for the group, because mix differs.
Step 7: Decide, then act at the right level
A price rise is a group decision. Portioning is a site decision. Keep those conversations separate, and record what you changed so next month's numbers make sense.
Where does software help with recipe costing and COGS?
Spreadsheets can do the maths. Where they struggle is keeping it current across many sites. Software helps when it:
- re-costs recipes automatically when an invoice price changes;
- matches invoices to orders and deliveries, so the price is trustworthy;
- calculates actual vs theoretical by product and by site, without anyone building it;
- shows menu profitability by item per site, not just for the group;
- alerts you when something moves, rather than waiting for month-end.
If you're shortlisting tools, our UK buyer's guide to multi-site inventory software lists the questions to ask.
How does Edify handle recipe costing and COGS?
Edify is an operating intelligence platform for multi-site cafés, coffee chains, QSR and restaurant groups. For recipe costing and COGS, here's how Edify works:
- Recipes are costed, yielded and allergen-tagged, built from your products and sub-recipes, with allergens pulled in from products.
- Supplier price changes flow into recipe costs wherever that product is used. Set a supplier to update prices automatically and there's nothing to re-key.
- Three-way invoice matching helps you check emailed invoices against the purchase order and goods received note, flagging variances for approval. Credit requests are raised at delivery and sent straight to the supplier.
- Actual vs theoretical COGS is compared product by product, biggest gaps first, across sites.
- POS item matching: Edify suggests the matches and your team confirms them.
- Menu profitability by item is shown per site and compared across sites, alongside daily COGS dashboards.
- Ask Edify lets you ask questions about your operation in plain English and get answers instantly: sales, margin, COGS variance, site performance, waste and supplier spend.
- Custom AI Insights push issues to your dashboard and inbox.
See pricing for what each plan includes and features for details, or our platform comparisons if you're weighing up options.
Frequently asked questions
How do you calculate theoretical food cost?
Multiply the number of each menu item sold by its current recipe cost, add the totals together, and divide by net sales (excluding VAT). It shows what your food should have cost if every recipe was followed exactly and nothing was wasted.
How do you calculate actual food cost?
Actual food cost is opening stock plus purchases plus transfers in, minus transfers out, minus closing stock, for the same period. Divide it by net sales to get a percentage. You need two stocktakes to calculate it.
What causes food cost variance in restaurants?
The main causes are supplier price changes not yet reflected in recipes, over-portioning, poor yields, unlogged waste, unrecorded transfers, POS items not mapped to recipes, and theft. Comparing variance by product and by site shows which cause to look at first.
How often should multi-site restaurants update recipe costs?
Recipe costs should update whenever a supplier price changes. In practice that means linking costs to matched invoices rather than updating them on a schedule. Review variance weekly and menu engineering quarterly.
Why does GP differ between sites on the same menu?
Sites differ in sales mix, portioning, waste, deliveries and sometimes supplier pricing. A site selling more low-margin items will show lower GP even with perfect execution, so compare variance by product as well as headline GP.
Does Edify update recipe costs when supplier prices change?
Yes. Set a supplier to update prices automatically and Edify re-costs the recipes that use that product, across your sites. Three-way invoice matching helps you check invoice lines against the purchase order and goods received note.
Want to see your recipe costs at today's prices?