Start free

Recipe cards: ingredients, yield, cost and versions

Set up a per-portion recipe, account for processing losses, check costs, save recipe versions and work with semi-finished goods.

18 min read Admin panel demo
On this page 16

Recipe cards: ingredients, yield, cost and versions

A recipe card connects a sale item to its inventory components. In cenaly.ge, the recipe helps you check portion cost and ingredient consumption, while versions retain changes to the recipe over time. For food service, this is the dish recipe; a service uses the “Consumables” tab instead.

What you need to get started#

Prepare Purpose
Product cards in inventory Supply the components you can select
A menu item Holds the recipe
Raw material quantities for one portion Align consumption with the sale
Purchase data and average inventory costs Allow cost calculations
A selected location Supplies average costs from its warehouse
Access to edit menu and inventory Allows recipe and semi-finished product changes

Step 1. Build the per-portion recipe#

Open the menu item card and its “Recipe” tab. For a service, open “Consumables” to enter materials for one service delivery.

  1. Choose “Add component” and select an inventory product.
  2. Fill in “Per portion” using the unit shown next to the product.
  3. Repeat for the other components.
  4. Mark an ingredient as “critical” if the item cannot be prepared without it.
  5. Save the item card.

The available units are g, kg, ml, l and pcs. For example, 120 g is 0.12 kg when the inventory card uses kilograms. Do not enter 120 in a row whose unit is kg.

A critical component links the item's availability to stock. When it runs out, the item is automatically taken off sale; automation does not clear a manual sale block.

Result: the recipe describes one portion, and “Portion cost” shows the known component cost. If the total is partial, check purchase prices: a missing price does not mean a free ingredient.

Step 2. Set yield and losses#

Open “Yield and losses” below the recipe. Use this to distinguish raw material consumption from the quantity remaining after processing.

Field Meaning
“Gross” Quantity taken from inventory
“Net” Quantity remaining in the dish
“Processing” The component's processing-loss profile
“Loss norm, %” A custom norm for the line
  1. Check each component's gross quantity.
  2. Select “No processing loss”, “Cold processing” or “Heat treatment”.
  3. If needed, enter your own “Loss norm, %” or “Net (optional)”.
  4. If you know the required yield, use “Gross from net”.
  5. Apply the changes and save the item.

When net quantity is not entered, it is calculated from the loss norm. A line-specific norm takes precedence over the profile norm. Cold and heat processing profiles start with a 10% norm; replace it with the actual norm for your recipe.

Example: 200 g gross with 10% loss gives 180 g net. Inventory consumption is 200 g; the processing loss is already included in that quantity.

For 250 g net with 15% loss, gross = 250 / (1 − 0.15) ≈ 294 g. Enter the net quantity and loss norm, then choose “Gross from net”.

If consumption looks too high: check whether you added gross quantity on top of a quantity that already included losses.

Step 3. Check the cost#

Open “Cost card” below the recipe.

  1. Select “Date” to inspect the applicable recipe.
  2. Check “Price for calculation” and the calculation's tax settings.
  3. Review ingredient costs and any missing-average-cost messages.
  4. Compare “Food cost” and “Gross margin”.
Measure How to read it
“Net revenue” Revenue after extracting tax when tax is included in the price
“Cost” Total component cost
“Food cost” Cost as a share of net revenue
“Gross margin” Net revenue minus cost; the percentage is relative to net revenue
“Markup” Gross margin as a percentage of cost

For example, net revenue of 500 and cost of 150 give 30% food cost and a gross margin of 350. This illustrates the calculation; it is not a target for your business.

Try a different price for borscht. Ingredients cost ₽90 per portion and the menu price is ₽450. Set “Tax in price, %” to 20 and enable “Tax is included in the price”. This is an example assumption, not a recommended tax rate.

Measure Price ₽450 Calculation price ₽390
Net revenue ₽375 ₽325
Cost ₽90 ₽90
Food cost 24% 27.69%
Gross margin ₽285 · 76% ₽235 · 72.31%
Markup 316.67% 261.11%

Enter 390 in “Price for calculation” and compare the results. The hint “For this calculation only, not saved to the menu” means the selling price stays at ₽450. Margin measures the difference between net revenue and cost as a share of revenue after extracting included tax: 285 / 375 × 100 = 76%. Markup compares the same difference with cost: 285 / 90 × 100 = 316.67%. Thus “margin as a percentage of price” and “markup as a percentage of cost” have different bases; this card uses the price excluding included tax for margin. Markup is not calculated when cost is zero.

Select “Expand semi-finished products down to raw materials” to inspect nested components. If some raw materials have no average cost, the total includes only the known part. For food cost over a period, open dish statistics from the menu; see menu engineering.

Step 4. Save a recipe change#

Editing a recipe starts a new version from the current day. This separates the previous composition from the new one.

  1. Save the item first if it is new.
  2. Open the recipe versions below the composition.
  3. Check effective periods and use “Show” to inspect a version's components.
  4. If the recipe changed earlier, use “Recipe in the editor as a version from a date”.
  5. Enter “Effective from” and select “Save version”.

You can select today or a past date. To move an existing version's start, use “Change start date”. Read the confirmation: planned cost for the affected dates will use a different version.

Result: the recipe has an effective period. If versions are unavailable, save the item first; if a date is rejected, check that it is not in the future.

Step 5. Prepare a semi-finished product#

A sauce or dough can be a separate inventory product with its own recipe.

  1. Open inventory, the stock tab and the product card.
  2. Complete the semi-finished recipe for one unit.
  3. Enter raw material consumption per unit of that product and save the card.
  4. Record production when you prepare a batch.
  5. Use the semi-finished product as a dish component.

If the product's unit is kg, inventory keeps the recipe per 1 kg. It is easier to enter a whole-batch recipe in “Batch & yield…” (see below) — it converts the recipe to 1 kg for you. The actual batch size is entered when recording production.

The production dialog includes “Auto-produce semi-finished goods on shortage”. When enabled, the missing amount is produced at sale: the semi-finished product is received and raw materials are deducted according to its recipe. When disabled, the shortage remains as negative stock until production is recorded manually.

If production gives an unexpected cost: check the per-unit recipe and raw material prices. Do not include a semi-finished product in its own recipe, even through another semi-finished product: that creates a cycle.

Batch recipe: yield, portions and draft#

Kitchens write recipes per batch: “5 kg of meat plus marinade — yield 5 kg, 20 portions of 250 g”. You can enter such a recipe as is, without converting it to one unit by hand.

  1. Open inventory, the stock tab and the semi-finished product card.
  2. Below the recipe, click “Batch & yield…”.
  3. Enter the “Batch yield” — how much finished product the batch gives after cooking — and its unit (g, kg, ml, l, pcs).
  4. Enter “Portions per batch” if you split the batch into portions. The portion size appears below the field.
  5. Fill in the ingredients “Per batch”. The “Per 1 kg” column (or per product unit) shows what will be saved to inventory.
  6. Check the summary: “Ingredients total”, “Yield” and “Recipe loss”.
  7. Click “Apply to recipe” and save the product card.

Recipe loss = 1 − yield ÷ weight of ingredients. Example: 5 kg of meat and 1055 g of marinade weigh 6.055 kg; with a 5 kg yield the loss is 17.4%, and with 20 portions each portion is 250 g. If the yield exceeds the ingredients (grain absorbed water), the summary shows “Recipe gain”. Liquids are counted as 1 ml = 1 g. Ingredients in pieces (eggs, sheets) are not part of the weight — the summary lists them separately.

Scale. Enter a number of portions in “Scale to” and click “Scale”: ingredients, yield and portions are recalculated proportionally. The calculation uses exact fractions, so 50 → 1 → 50 portions returns the original quantities with no accumulated rounding errors. Scaling only changes the batch view: the per-unit recipe does not depend on batch size.

Draft — calculation only. Tick “Draft — calculation only” and click “Save draft” to try a new recipe without changing the working one. The draft is stored separately in the card: production, auto-production at sale and deductions keep using the approved recipe. The product card marks it with a “Draft” badge. To approve it, open the dialog again, clear the box and click “Apply to recipe”.

Producing a batch. For a semi-finished product with a batch yield, the “Production” dialog shows a “Batch: 5 kg” button under the quantity — it fills in the yield of one batch.

Step 6. Find dishes using an ingredient#

Open the inventory product and “Used in dishes”. This is a useful starting point when replacing an ingredient or finding which dishes depend on it.

“AI suggest” helps prepare suggestions for using the product. Check suggested quantities before applying them: they need to match your recipe.

For a replacement, open “Replace in recipes” and review the proposed changes before confirming. After replacement, check the affected items' recipes and costs.

Drink portions and combos#

A cocktail is a dish with inventory components in ml or l. A drink variant's “Portion volume (ml)” scales consumption relative to the base variant. The base is the default variant with a volume; if there is none, the first variant with a volume is used. For example, a 400 ml variant consumes twice the weight- and volume-based components of a base 200 ml variant. Components counted in pieces, such as a straw, are not multiplied.

Sizes without a volume. If a large portion of fries equals two small ones, set “Deduction ratio” to 2 on the variant. The whole recipe then leaves stock multiplied by it, piece-counted packaging included. On a variant with both a volume and a ratio, the ratio applies. For a dish-as-product item without a recipe, two units of the item itself are deducted. The cost per such size appears below the recipe.

For “Build-your-combo (storefront)”, see QR menu. Sale deductions and unexpected consumption are covered in inventory documents.

Takeaway and delivery packaging: composition by order type#

Task: deduct a delivery container only for delivery orders, a bag for takeaway and delivery, and nothing for dine-in.

  1. On the dish card open “Composition” and add the packaging lines as ordinary stock products.
  2. Next to the quantity, pick “Which orders”: “all orders” (default), “dine-in only”, “takeaway only”, “delivery only” or “takeaway + delivery”.
  3. Save the dish. Changing the condition is a recipe change too: a new version applies from today, past sales are not recalculated.

Result: a sale deducts the common composition plus the lines of its order type. An order without a type (old receipts, POS without a choice) counts as dine-in. The main cost figure is for dine-in; when lines have conditions, the takeaway and delivery costs are shown below it.

Linking a dish to inventory: variants, add-ons and the deduction warehouse#

Task: check which ingredients leave stock when a dish is sold with selected options.

  1. In the dish card, check the per-portion recipe: sales deduct gross quantities multiplied by the number of portions.
  2. For drink variants, set “Portion volume (ml)”. The selected volume divided by the base volume scales components in g, kg, ml and l; components counted in pieces do not scale. Selected combo dishes and add-ons are accounted for separately.
  3. For an add-on or modifier option, expand “Stock & tax” and set its stock components per portion. For example, “Extra cheese” deducts another 30 g of cheese on top of the dish’s recipe. See option groups.
  4. For a “no onion” request, add onion to the option’s stock components with a negative quantity, such as −15 g: the deduction shrinks by that amount. An option with no stock components only passes the request to the kitchen. See “no …” in stock.
  5. In Inventory, check the relevant location’s sales warehouse. “Set as sales” selects the warehouse used for that location’s sales deductions.
  6. If part of the recipe is stored in another warehouse of the location, pick it in the line’s “Warehouse” field: a lemon can come from “Bar” while the bun comes from the sales warehouse. The field appears once the location has a second warehouse. Changing the warehouse is a recipe change too: a new version applies from today.

A combo deducts its member dishes’ components according to their quantities. Guest-selected dishes add their components to the combo’s own recipe, such as packaging. If a component is a semi-finished product, the sale deducts that product itself. Its ingredients are deducted during production; with automatic production enabled, production covers the missing quantity. Expanding a semi-finished product down to raw materials in the cost card is a calculation view, not another raw-material deduction on every sale.

Across locations: an item’s recipe is shared across the account. The sales location determines the deduction warehouse: a line set to another location’s warehouse, or to an archived one, goes from the sales warehouse there. For costing, select the required location in the menu page’s location selector: the card uses current average costs from its sales warehouse, falling back to the last receipt price if an average is unavailable. The same dish with the same recipe can therefore have different costs at two locations.

Service consumables: from inventory card to deduction#

Task: a salon or another service business wants dye, gloves and other materials deducted from stock every time a service is delivered.

You need the Inventory section and an item of type Service. A beauty salon has inventory switched on from the start. For "Booking services" inventory is off by default: switch it on in the App Store.

1. Add the consumable to inventory.

  1. Open Inventory and click + Add Product.
  2. Fill in Product Name, for example "Hair dye 7.1".
  3. In Unit, choose the unit you want to count usage in: dye and shampoo in ml or g, gloves in pcs. For packaging you can add your own unit — see Your own units.
  4. In Category, choose, for example, Non-food / packaging or Other. The category is used for filters and reports and does not affect deductions.
  5. Save the card.

The card has no purchase price field. The price comes from a receipt: the 📥 Receive Goods button in the item's row, with the Qty and Price fields — the price per card unit. The receipt also gives you the opening stock. Without a receipt usage is still deducted, but stock goes negative and the service cost stays incomplete.

2. Set usage norms on the service.

  1. Open Menu → the service card. Check that Item type is set to Service.
  2. Open the Consumables tab.
  3. Click Add component and pick an inventory product. If it does not exist yet, click + Create product, enter a name, choose a unit and click Create product: the card appears in inventory, and you can set its price and category later in Inventory.
  4. In Per portion, enter the usage for one delivery of the service in the product's unit: for example, 60 ml of dye and 2 pcs of gloves.
  5. The card saves on its own.

3. Check the deduction.

Consumables are deducted when an order with the service is completed or paid: for example, after you settle a visit at the till with Check out in the appointments journal. The button is visible with access to the till; for "Booking services" the till is off by default. Two delivered services deduct 120 ml of dye and 4 gloves. The deduction shows in the product's movement history as Order deduction.

  • Marking a visit in the appointments journal without an order does not deduct consumables. If the client pays outside the till, write the materials off manually: Inventory → write-off.
  • If a service has consumables and also tracks its own stock, only the consumables are deducted: the service itself is not.
  • The service cost at average inventory prices is shown right on the Consumables tab, as for a dish.

Limitations#

  • Batch yield, portions, scaling and draft are available for inventory semi-finished products only. A menu dish recipe is per portion and has no draft; “Price for calculation” tries another dish price.
  • A batch draft is not included in bulk ingredient replacement across recipes: replace the ingredient in it manually.
  • Recipe loss is based on weight and volume (1 ml = 1 g); ingredients in pieces are not counted in the percentage.
  • A negative quantity works only in add-on and option stock components: such a line is not saved in the dish recipe. You cannot subtract more than the recipe holds: the product simply is not deducted.
  • A receipt refund returns only sales-warehouse lines to stock; lines with their own warehouse stay deducted. Cancelling the order returns all warehouses.
  • Waste on voiding a line after it was sent to the kitchen is written off entirely from the sales warehouse.
  • The recipe editor has no recipe import from a file.
  • Inventory stores a semi-finished recipe per one unit; the batch is calculated from it.
  • Units such as “shot” or “slice” and packaging conversion factors are not available here: use g, kg, ml, l or pcs.
  • Nutrition values and allergens are not calculated from the recipe: enter them manually on the item. See allergens.
  • A separate composition for the same item at each location cannot be set here.
  • These dialogs do not provide a printable recipe or costing sheet.
  • The interface cannot assign a version to a future date.
  • The cost card uses current average costs even when a past date is selected.

Troubleshooting#

Symptom Cause What to do
No inventory products are available Components have not been created Create inventory product cards
The cost total is partial Some components have no price Check purchase data and average costs
“Product not found in the inventory” The recipe references a missing card Select an existing component
A component is marked “archived” Archived products are not deducted Replace it with an active ingredient
No version exists for the selected date Versions do not cover that period Check their effective dates
A semi-finished recipe cycle is reported Recipes reference one another Break the cycle in the inventory cards
A future effective date cannot be selected The interface caps the date at today Save the change on its effective day
Consumption after a sale is unexpectedly high Units, gross quantities or variant volumes are wrong Compare the recipe with its deduction document

Frequently asked questions#

Is net quantity the amount deducted?#

No. The order deducts gross quantity; net quantity shows the yield after processing.

Does the cost card date restore old purchase prices?#

No. It selects the composition for that date; average costs remain current.

Can I enter the whole batch in a semi-finished recipe?#

Yes: open “Batch & yield…”, enter the ingredients per batch and the yield. The dialog converts the recipe to one inventory unit. The production quantity is entered in “Production” — the “Batch: …” button fills in one batch.

Does a recipe draft deduct anything?#

No. The draft is stored separately from the approved recipe: production, auto-production and deductions ignore it until you approve it.

Where can I inspect consumption for a particular sale?#

In its inventory deduction document. The linked document guide explains the steps.

How does markup differ from margin?#

Both use the same amount — net revenue minus cost — but divide it by different bases. With ₽375 net revenue and ₽90 cost, margin is 76% of revenue while markup is 316.67% of cost.

Why does the same dish have different costs at different locations?#

The recipe is shared, but ingredient costs come from the selected location’s sales warehouse. Different purchasing costs produce different dish costs; check the selected location and its warehouse costs.

How do I deduct packaging only for takeaway orders?#

On the composition line pick “Which orders” → “takeaway only” (or “takeaway + delivery”): see Takeaway and delivery packaging. A separate “Packaging” add-on still fits when the guest chooses the packaging.

How do I make the bar deduct from its own warehouse?#

Create a “Bar” warehouse at the same location and pick it in the “Warehouse” field of the relevant recipe lines: see linking a dish to inventory. The order deducts those lines from “Bar” in a separate document, and a cancellation returns them there.