Restaurant COGS Calculation Mistakes: 8 Reasons Your Multi-Location Cost of Goods Sold Number Is Wrong

How a Multi-Location COGS Number Goes Wrong
A multi-location COGS number goes wrong when bad data reaches the calculation, not when the maths fails. Cost of goods sold (COGS) is opening stock, plus purchases received, minus closing stock, bounded by two counts, but across many sites every branch count, every transfer, and every recipe feeds that one figure. So a single unlogged transfer or mistimed count in one outlet quietly moves the whole group number.
That is why the reported number so often disagrees with itself. One multi-venue group traced a stubborn margin gap to stocktakes that never landed on month-end; once they bounded the calculation strictly between two count dates, their actual food cost came in at 39%, not the 41% the loose report had been showing. A large multi-site group found a single branch had logged producing 622 kg of a sauce base from only 470 kg of supply, a 152 kg gap, because a central-kitchen transfer was never recorded on the receiving end. In both cases the recipes were fine. The calculation was fed bad data.
The reliable figure is the actual-cost method: opening stock plus purchases minus closing stock, between two real counts. The recipe-driven theoretical figure is useful insight, but it can never be your actuals source, even with perfect recipes. If you have not separated the two, start with theoretical vs actual food cost variance before working through the list below.

8 Reasons Your COGS Number Is Wrong (and How to Catch Each One)
Each of the causes below came from a real multi-site operation, and each has a fast check you can run before you trust another month's number.
- A unit-entry typo inflates recipe cost. A quantity keyed in the wrong unit, grams entered as kilos, can turn a $6 recipe into $48 overnight with no other change. Add a sell price to every recipe so an implausible margin flags itself immediately.
- Unlogged transfers between central kitchen and branch. Stock recorded as sent but never confirmed received creates phantom stock on one side and unexplained variance on the other, the kind of gap that showed up as a 152 kg shortfall at one branch. Require receiver-accepted transfers so both ends agree before the movement posts.
- Duplicate items split one ingredient's cost in two. Case-sensitivity or naming variants create two records for what should be a single ingredient, so its true cost is never visible in one place. Keep one base item per ingredient.
- An uncontrolled price edit propagates group-wide. A single receiver correcting an invoice line can silently update that ingredient's cost across every location. Lock price-base edits to a named role with a specific permission.
- COGS calculated from purchase totals, not consumption. The figure then tracks buying patterns instead of what was actually used, masking whether items are hitting target for a full buying cycle. Switch to consumption-based costing tied to POS sales.
- Stocktakes not bounded to month-end. A count landing a few days early or late pulls stock from the wrong period into the figure - one operator's true 39% read as 41% until counts were bound strictly between two dates.
- Variable-weight items averaged into one recipe. Costing a whole steak cut as a single average understates some portions and overstates others. Split variable-weight items into size-specific recipes.
- Modifier and swap recipes duplicated instead of linked. Swapping an ingredient, gluten-free bread for standard, in a duplicated recipe never returns the removed item to stock, distorting margin at the dish level. Tie modifier recipes to POS modifiers so swaps update stock correctly.

How to Find Which Cause Is Hitting You
When a branch number looks wrong, you do not have to guess which of the eight it is. Work three reports in order. Start with the item's transaction history to find the exact entry where the balance first went negative. Then use a production report by ingredient to confirm whether logged consumption matches the size of the variance. Finally, compare theoretical against actual cost per location to see whether the gap is isolated to one site or spread across the group. In sequence, those three narrow a vague monthly discrepancy down to a single entry: a transfer, a recipe, or a count error.
This is where a purpose-built inventory platform earns its place. Supy keeps theoretical stock updated continuously from every goods-received note and recipe consumption event, captures the latest recipe cost per location on each count date so variance shows its food-cost impact per site, and flags a recipe breaching its target the moment a purchase or recipe change causes it, rather than a month later. Operators run these checks across live COGS and variance dashboards and reusable stock-counting templates that bound every period cleanly.

Before you sign off on next month's number, run the eight checks as a quick self-audit and mark which ones your operation cannot currently pass. Most groups find two or three. Fix the one that touches the most sites first, usually unlogged transfers or purchase-based costing, because it is corrupting every branch's figure at once. Get that single input clean and the group COGS number stops arguing with your finance report.


.jpg)

