Skip to content
← Back to blog

Menu engineering template: contribution margin per dish, in Excel

By Trolevo · Published · 12 min read

Menu engineering puts two figures side by side for every dish: how often it sold and how much contribution margin one plate brings in. This template works out both from the menu price, the food cost and the till’s item report, and sorts every dish into one of four fields. It comes prefilled with a worked week.

The template as XLSX, direct download, no login, no email address: Download the menu engineering template

What is menu engineering?

A comparison of every dish with the average of the menu, in two figures: the portions sold in a period and the contribution margin per plate. Depending on whether a dish is above the line on both, below it on both, or above on one and below on the other, it lands in one of four fields:

FieldPortions soldContribution margin per plate
Starabove the lineabove the line
Plowhorseabove the linebelow the line
Puzzlebelow the lineabove the line
Dogbelow the linebelow the line

A plowhorse sells well and brings in little per plate; a puzzle is the other way round: it brings in a lot per plate and is rarely ordered. In German the method is called “Renner-Penner-Analyse”.

The contribution margin is the net price minus food cost, the amount left per plate for staff, rent and everything else. Why it says more than the food cost percentage is shown with two dishes in the article on a good food cost percentage. Menu engineering does the same for the whole menu and adds the volume.

How do you do menu engineering in Excel?

With two sheets to fill in: “Dishes” with the menu price and the food cost per plate, and “Sales” with the till’s item report for a period. The “Analysis” and “Matrix” sheets do the rest; “Portions” comes later. The figures in the template are example values: one week of main courses at a VAT-registered business that uses the effective method, all five dishes dine-in at 8.1%, the food cost per plate excluding VAT. The sheet works out the net price itself, dine-in as menu price ÷ 1.081.

DishMenu priceFood cost (CHF)Contribution margin per platePortions soldField
Rib-eye steakCHF 44.00CHF 12.30CHF 28.4060Puzzle
Pasta dishCHF 24.00CHF 3.60CHF 18.60200Plowhorse
Zurich-style sliced veal with röstiCHF 42.00CHF 11.20CHF 27.65140Star
Cordon bleu with chipsCHF 36.00CHF 8.70CHF 24.60170Star
Vegetable curry with riceCHF 27.00CHF 4.60CHF 20.3850Dog

The rib-eye steak and the pasta dish are the two dishes from that article, with the same prices and the same food cost; the other three are new.

You bring the food cost per plate from your own costing. If you do not have one yet, you can work it out with the recipe costing template.

To start, the main courses of one period are enough, the last week for example: the till’s item report and the food cost of the dishes already costed. A dish without a food cost shows a note and stays out of the analysis. The lines and totals then work only with the remaining dishes; how many portions sold are not analysed is shown on the “Analysis” sheet. The longer the period, the less a single evening counts. All dishes should, however, have been on the menu for the whole period; a dish offered for only part of it had fewer days to sell. Drinks and desserts are analysed on their own, in a separate copy of the file.

The names on the “Sales” sheet must be written as on the “Dishes” sheet; capitals and spaces at the start and end do not count. Every row without a matching dish shows a note, and the top of the sheet says how many portions are not assigned. Several rows of the same dish add up, so daily reports can be pasted one below the other.

The “Analysis” sheet also shows the week’s totals, among them the contribution margin, CHF 14,496.00, and the menu ratio, revenue-weighted as in the article on a good food cost percentage:

Menu ratio: food cost 4,735.00 ÷ net revenue 19,231.00 = 24.6%

Enter only the two dishes and the evening from there, 12 rib-eye steaks and 40 pasta dishes, and the template shows the same CHF 1,084.80 contribution margin and 21.2% as that article. On that evening too, the pasta is the plowhorse and the rib-eye the puzzle.

On the “Dishes” sheet you choose “dine-in” or “take-away” for each row, and with it the rate; an empty field counts as dine-in. Food consumed on the premises is a restaurant supply and is subject to the standard rate of 8.1% (as of 2026). For take-away or delivery the reduced rate of 2.6% applies, but only if “suitable organisational measures are taken to differentiate these supplies from restaurant supplies; if this is not the case, the standard rate applies” (Art. 25 para. 3 VAT Act). Such a measure is, under Art. 56 of the VAT Ordinance, “in particular the issue of receipts that indicate whether a restaurant supply, a delivery of food or a supply of goods for takeaway was provided”. Alcoholic beverages are excluded from the reduced rate and are always taxed at the standard rate of 8.1%, whether consumed on the premises or taken away.

A dish sold dine-in and take-away, separated by receipts, goes on two rows with different names. The template then analyses the two rows as two dishes, each with only its own sales. If you sell a large part of the menu both ways, it is better to analyse the channels separately, each in its own copy of the file.

The template works for a business that uses the effective method. Anyone using the net tax rate method multiplies their takings, including tax, by the net tax rate the FTA has approved (Art. 37 para. 2 VAT Act); for them, ÷ 1.081 and ÷ 1.026 is not the calculation. Nor does the template fit them on food cost: it expects it excluding VAT, and the net tax rates “take into account the input tax amounts usual in the relevant branch of the industry” (Art. 37 para. 3 VAT Act). For small snack bars the FTA also has a simplified method (VAT sector info 08, para. 1.3.4) under which the VAT does not depend on the channel; its conditions are set out in the article Pizza food cost.

This section explains costing and is not tax advice; what is authoritative is the VAT Act, the VAT Ordinance and guidance from the Federal Tax Administration (FTA). English is not an official Swiss language: the English texts of the Act and the Ordinance on fedlex are translations for information only and have no legal force; the German, French and Italian versions are binding.

Where is the line between high and low?

At the menu’s own averages. The template sets two lines by default: the average portions sold per dish and the contribution margin the average plate sold brings in. In the example week:

Portions: 620 ÷ 5 dishes = 124 portions Contribution margin: CHF 14,496.00 ÷ 620 portions = CHF 23.38

The second line is the contribution margin of the plate sold, not the average of the five contribution margins, for the same reason the menu ratio is revenue-weighted: a plain average would count the 50 curries as much as the 200 pasta dishes.

Both lines are on the “Analysis” sheet, each with a field beside it for a figure of your own. Guides set the lines differently, some for example put the sales line below the average. If you want a different line, enter it there as a figure, in portions for the chosen period or in francs per plate, not as a percentage. A dish exactly on the line counts as above.

Because the measure is an average, some dishes sit below it even on a good menu. And a dish close to the line changes field with a small change: the cordon bleu, at CHF 24.60, is just above the CHF 23.38. The field shows where to look. It is not a verdict.

What do you do with stars, plowhorses, puzzles and dogs?

Check the figures first, then look at each field with its question; what follows is the business’s decision. The analysis is only as good as the food cost per plate, calculated net and complete, with side, sauce and garnish.

  • Stars sell and earn. You do not change recipe, portion or price here without a reason, and they stay clearly visible on the menu.
  • Plowhorses sell and earn little per plate. Here it pays to look at the portion and the food cost, then at the price; how to recalculate it is in the article How to price a dish.
  • Puzzles earn a lot per plate and are rarely ordered. Here it pays to give them more room on the menu and in what the service staff recommend. In the example, every rib-eye sold instead of a pasta dish brings in CHF 9.80 more contribution margin, 28.40 against 18.60.
  • Dogs do not sell and earn little. They are the candidates for reworking or taking off, unless there is a reason outside the figures: in the example, the vegetable curry is the only main course without meat.

Two caveats. The contribution margin knows only the food cost, so a dish with a lot of hand work looks better here than it is. And the comparison only works within one product group, main courses with main courses.

What does an oversized portion cost?

What the extra costs, times the number of portions sold. And the analysis does not see it, because it works with the food cost as costed, not with what is on the plate.

The Zurich-style veal’s food cost of CHF 11.20 includes 170 g of raw veal at CHF 48.00 a kilo, so CHF 8.16. Weighed when portioning, it is 200 g:

30 g × CHF 48.00 a kilo = CHF 1.44 per plate 140 portions × CHF 1.44 = CHF 201.60 in the week Contribution margin per plate: CHF 26.21 instead of CHF 27.65

The veal stays a star. The CHF 201.60 are missing all the same, and no row of the analysis shows them. The extra costs most on dishes that sell often and carry an expensive ingredient, because the volume multiplies it.

To start, one portion is enough: for a dish that sells a lot, weigh the expensive ingredient once, when portioning during normal service. The “Portions” sheet works out the difference, the francs per plate and the francs in the period, with the portions from the “Sales” sheet.

The recipe quantity, the weighed quantity and the price per kilo must refer to the same state: raw or cooked, trimmed or not. How the price changes after trimming and cooking is in the article on yield and waste.

Which of these figures does Trolevo know, and which not?

Trolevo can work out the food cost per dish; the app does not know the sales. So the analysis stays in the spreadsheet.

Trolevo works out a dish’s food cost from its ingredients and sub-recipes; you enter it into this template by hand. The app does not know sales figures: it is not connected to a till and does not take in any sales. It does no menu engineering, and it shows no contribution margin in francs.

The app keeps one selling price per recipe, with no VAT rate and no channel. It shows what share of the selling price the food cost and the labour cost take and what is left, worked out on the price as entered, without taking VAT off. The free food cost calculator checks the food cost percentage and contribution margin of a dish, with either 8.1% or 2.6%.

When you save a new ingredient price in Trolevo, the app recalculates, as part of that save, the food cost of every recipe that uses the ingredient, directly or through a sub-recipe. This helps keep the costing current; the pricing and menu decisions stay with the business.

Trolevo is in development – get early access.


Sources

The figures in the examples are illustrative and not an industry statistic. This article explains costing and is not tax advice.

Get early access to Trolevo

Be first in the kitchen when we launch.

Launch updates only. No spam, unsubscribe anytime. Privacy policy

Join before launch: Business at CHF 19.90 instead of 29.90, locked for 12 months.