Home / Help Center / pos-app-restaurant / rest-bar / Cocktail Recipe Book
🍸 rest-bar

Cocktail Recipe Book

Cocktail Recipe Book standardizes every house cocktail — ingredients with quantities and per-unit cost, method, glass, ice, garnish, and dietary flags — and automatically calculates pour cost and gross profit margin against the selling price, so you can spot underpriced drinks before they eat into your margin.

📍 Menu path: Bar & Beverage → Cocktail Recipe Book
👤 Who uses it: All roles with the Billing feature enabled

Overview

Each recipe has a Category (Classic Cocktails, Signature, Mocktails, Shots, Beer & Cider, Wine Cocktails, Hot Drinks, Seasonal), a Status (Active, Seasonal, Archived), Method (Shaken, Stirred, Built, etc.), Glass type, Ice type, and Garnish.

Ingredients are line items with Name, Qty, Unit (ml, cl, oz, dash, splash, tsp, tbsp, barspoon, leaves, wedge, slice, piece, pinch, whole, top up), Cost Per Unit, and Notes.

Pour Cost = sum of (Qty × Cost Per Unit) across all ingredients; Gross Profit Margin = (Selling Price − Pour Cost) ÷ Selling Price × 100 — both recalculate live as you edit ingredients or the selling price.

Margin is colour-coded: green at 70%+ , amber 55–69%, red under 55% — recipes under 55% margin are called out in a "Low margin" alert banner on the main list (Active recipes only).

Dietary flags (Vegan, Gluten-Free, Nut-Free, Dairy-Free, Egg-Free) can be tagged per recipe for guest-facing allergen awareness.

Two print options: a single recipe card (with full method/ingredients/cost breakdown, for bartender training) and "Print All" (a condensed recipe book of every non-Archived recipe).

Before You Start

Step-by-Step Guide

1 Create a standardized recipe

  1. Open Bar & Beverage → Cocktail Recipe Book and click "New Recipe".
  2. On the Recipe Details tab, enter the Cocktail Name, Category and Status, then Method, Glass, Ice and Garnish.
  3. Add a customer-facing Description and set the Selling Price.
  4. Switch to Ingredients & Cost, add each ingredient with Qty, Unit and Cost Per Unit (use "+ Add Ingredient" for more lines) — Pour Cost and GP Margin update live.
  5. Switch to Notes & Dietary to add Bartender Notes and any Dietary Flags, then click "Add Recipe".

2 Review margins and fix underpriced drinks

  1. Check the "Low margin (<55%)" banner and the Avg GP Margin stat on the main list.
  2. Open a flagged recipe, adjust Selling Price or swap a costly ingredient, and confirm the GP Margin recalculates into a healthier range before saving.

3 Print a training card or full recipe book

  1. Open a specific recipe and click "Print Card" for a single bartender training card with full method, ingredients, garnish, and cost breakdown.
  2. Click "Print All" from the main list for a condensed book of every recipe not marked Archived.

4 Filter and search the recipe list

  1. Use the search box (matches name or category), the "Active only" toggle, and category chips to narrow the list.

Every Field & Button, Explained

Field / ButtonWhat it does
StatusActive (on the current menu), Seasonal (rotating/limited), or Archived (retired — excluded from "Print All" and the Active-only filter).
Method / Glass / Ice / GarnishFixed preset lists standardizing how bartenders should prepare and present the drink.
IngredientsEach line: Name, Qty, Unit, Cost Per Unit (₹), Notes (e.g. brand). Pour Cost is the sum of Qty × Cost Per Unit across all lines.
Selling Price / Pour Cost / GP MarginGP Margin = (Selling Price − Pour Cost) / Selling Price × 100, colour-coded green (≥70%), amber (55–69%), red (<55%).
Dietary FlagsVegan, Gluten-Free, Nut-Free, Dairy-Free, Egg-Free — multi-select, shown on the recipe card.

Tips & Best Practices

Troubleshooting & FAQ

GP Margin shows "—" instead of a percentage.
A Selling Price has not been entered yet — margin cannot be calculated without it, even if ingredients and their costs are filled in.
A recipe I archived still appears when I click "Print All".
Print All specifically excludes recipes with Status = Archived — double check the recipe's Status was actually saved as Archived and not left as Active or Seasonal.