Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.petakopi.my/llms.txt

Use this file to discover all available pages before exploring further.

The Calculator is the “what should I be charging this month?” page. It has a month picker at the top — each month is its own snapshot — and synthesises four inputs into per-recipe suggested prices and a monthly revenue target.

What you fill in per month

1

Volume

Either Manual (enter cups directly) or Capacity-based (estimated from seats × dwell time × occupancy × operating days × items per visit).
2

Monthly costs

One row per line item: name, category (Labour / Overhead / Other), amount. See the example breakdown below.
3

Target margin %

What you want left after all costs.
4

Monthly revenue target (optional)

Type the revenue (RM) you want to hit this month. Skip this if you’ve added recipes with menu prices — the Calculator derives a target from your menu price × volume (or suggested price for any recipe that doesn’t have a menu price set).Use the override when your recipes don’t yet cover your full menu, or when you don’t have recipes at all. The burn chart needs a target to plot; the override gives it one without making you set up the full P&L first.
The override only feeds the burn chart’s target line. Recipes still unlock per-recipe sales (with Loyverse Items linking), per-cup suggested pricing, and breakeven analysis.

Example monthly costs

For the running Hot Coffee Latte example, here’s a realistic breakdown for a small Malaysian coffee shop:
NameCategoryAmount
RentOverheadRM 2,000
Wages — BaristaLabourRM 1,800
Utilities (electric + water)OverheadRM 600
InternetOverheadRM 100
POS subscriptionOverheadRM 100
Cleaning suppliesOtherRM 200
Maintenance & miscOtherRM 100
TotalRM 4,900
The category labels (Labour / Overhead / Other) don’t change the math — the Calculator just sums everything into a single fixed-cost number. They’re for your own categorisation when you want to scan “where is my money going?” on the Pulse expenses tab later. This RM 4,900 total is what feeds the Fixed cost per unit number in the Hot Coffee Latte example below: RM 4,900 ÷ 2,500 cups = RM 1.96 per cup.

What you get back

Per recipe: COGS, fixed cost per unit, suggested price.

Example: Hot Coffee Latte

Continuing the running example from Recipes:
InputValue
COGS (from the recipe’s items)RM 3.10
Fixed cost per unit (RM 4,900 monthly costs ÷ 2,500 cups)RM 1.96
Target net margin30%
Suggested price: (3.10 + 1.96) ÷ (1 − 0.30) = RM 7.23 Round to a clean menu number (RM 7, RM 7.50, RM 8). The Calculator price (RM 7.23 here) is lower than the Quick price (RM 12.40 from the Recipes example) because the two are answering different questions — Quick price targets a food-cost ratio, Calculator targets a net-margin ratio after fixed costs. Plus on the same page, a Live Summary panel that rolls those per-recipe numbers into a monthly view. The same monthly target feeds Pulse Summary’s burn chart — that’s where you watch your actual revenue accumulate against the target you set here.

Live Summary

The card on the right of the Calculator rolls your inputs and recipes into three at-a-glance numbers:
RowWhat it is
Breakeven (RM)Monthly revenue at which net profit = 0. See Breakeven below for the derivation.
Breakeven volumeCups per month you’d need to sell at your menu prices to cover all fixed costs. Same number that drives the Unit economics check verdict. Shows ”—” when no recipe has a menu price set.
Monthly revenue target (RM)What you’re aiming to ring up this month — avg price × volume.
Breakeven (RM) and Monthly revenue target (RM) both prefer your recipes’ menu prices — averaged across recipes that have one set — and fall back to the Calculator’s suggested price for any recipe without a menu price. This is the same rule the Pulse burn chart’s target line uses, so the number you see here is the number you’ll see plotted there.
If breakeven and target both feel off, fill in Menu prices on your top sellers — the Live Summary switches from “what the math suggests” to “what you actually charge” as soon as one is set.

Why divide by (1 − margin)?

If you want net margin to be 30% of revenue, then by definition the cost side of the price has to be the other 70%: price × 0.70 = COGS + fixed_cost_per_unit Rearranging: price = (COGS + fixed_cost_per_unit) ÷ 0.70 = (COGS + fixed_cost_per_unit) ÷ (1 − margin) There’s no magic in the formula — it’s the basic margin equation solved for price. If you change target margin from 30% to 20%, the divisor goes from 0.70 to 0.80 and the suggested price drops accordingly.

Reading the result

The Calculator gives you a number, but the interpretation matters more than the digit:
  • Suggested price feels too high vs market. Your fixed cost per unit is the lever — rent or wages too high for this volume. Either drive volume up (capacity-based mode in Step 1 helps) or cut fixed costs.
  • Suggested price feels reasonable but breakeven exceeds realistic volume × price. The math says the current setup can’t sustain itself. Time to revisit volume assumptions or fixed costs before you ship the menu.
  • Suggested price is well below market. Healthy margin headroom. Either keep prices low as a volume play, or hold near market and bank the extra margin.

Benchmarks for a Malaysian coffee shop

Rough numbers, gathered from talking to owners — your context will vary:
MetricHealthy range
Food cost (% of revenue)25–35%
Gross margin65–75%
Net margin (after rent + wages)10–20%
Fixed cost per unitRM 1.50 – RM 3.00
If your numbers are way outside these, dig in — there’s usually a story (premium beans pushing food cost up, low volume making fixed cost per unit balloon, etc.).

Breakeven

Breakeven is the revenue point where net profit = 0 — every ringgit below it is losing money, every ringgit above it is profit. The Live Summary panel surfaces it so you can sanity-check your monthly revenue target. If your monthly revenue target is comfortably above breakeven, you have margin headroom. If it’s at or below breakeven, the inputs aren’t internally consistent — the math is telling you the shop can’t sustain itself at the current volume + costs + margin combination, and it’s worth flagging that before you ship the menu. The breakeven calculation uses contribution margin ((price − variable_cost) ÷ price), which is why it requires recipes to be filled in. Without per-cup variable cost, contribution margin is undefined and breakeven can’t be drawn. The price in that formula prefers your recipes’ menu prices — averaged across recipes that have one set — and falls back to the Calculator’s suggested price for any recipe without a menu price. So once you start filling in menu prices, breakeven shifts from “what the P&L says you’d need” to “what you’d need at the prices you actually charge.”

The full formula

breakeven_revenue = fixed_cost × per_cup_price ÷ contribution
where contribution = per_cup_price − avg_cogs
The intuition in two lines:
  1. Contribution per cup = per_cup_price − avg_cogs. The slice of each cup’s price left over after paying for the ingredients in the cup — available to pay down fixed costs.
  2. Cups needed to fully cover fixed costs = fixed_cost ÷ contribution. Multiply that cup count by per_cup_price and you have the revenue at breakeven.
That’s why setting a menu price below the suggested P&L price raises breakeven — you earn less contribution per cup, so you need more cups (and more revenue) to cover the same fixed costs.

Where each input comes from

Every variable in the formula traces back to something you set somewhere in the app:
VariableWhere you set itPage
fixed_costStep 2 “Monthly costs” — every line item summedCalculator
volumeStep 1 “Monthly volume” (manual estimate or capacity-derived from seats × hours × occupancy × items/visit × operating days)Calculator
target_marginStep 3 “Target margin” — only used when no menu prices are set, in the suggested-price fallbackCalculator
per_cup_price (menu-price path)“Market price (RM)” field per recipe — averaged across recipes that have one setRecipes → edit
recipe_line.quantityEach recipe’s ingredient line (“18g of beans”)Recipes → edit
item.unit_costPer-item cost basis (“RM 0.20 per gram of beans”)Items → edit
avg_cogs is computed, not entered directly: each recipe’s COGS = sum of quantity × item.unit_cost across its ingredient lines, then averaged across all recipes. So the chain is Items → Recipes → recipe lines compute COGS → Calculator’s three steps + recipe menu prices → breakeven revenue. If a number on the Live Summary feels off, walk back one step at a time until you find the input that’s wrong.

Unit economics check

Suggested prices answer “what should I charge?” — but the menu price you actually charge today might be different (rounded for tidiness, anchored to what neighbours charge, locked in last quarter and not yet revisited). The Unit economics check card on the Calculator tells you, at a glance, whether your real menu prices clear your real fixed costs at your planned volume. It uses the Menu price (RM) field on each Recipe. For every recipe with a menu price set, the card computes the contribution margin (menu price − COGS), averages it across those recipes, and divides your monthly fixed costs by that average to get the breakeven volume at menu price — how many cups per month you’d need to sell to break even at the prices you actually charge. This is the same number shown as Breakeven volume in the Live Summary. It compares that breakeven volume against the planned monthly volume from Step 1, then surfaces a verdict pill:
VerdictWhat it means
ViableBreakeven volume is at or below your planned volume. The plan clears fixed costs at your current menu prices.
StretchBreakeven volume is above your planned volume. You’d need to sell more cups than you’ve planned for to cover fixed costs at these prices — either lift prices, drive volume, or trim fixed costs.
Not viableAverage contribution margin is zero or negative — your menu prices are at or below COGS on average. Every cup loses money before fixed costs are even considered.
Set a menu priceNo recipe has a menu price filled in yet. Open a recipe, add the price you charge today, and the card lights up.
Everything updates live as you edit monthly costs, planned volume, or any recipe’s menu price — so you can dry-run a price change (“what if I lift the latte from RM 12 to RM 13?”) and see the verdict shift before you commit.
The breakeven number on this card is in cups per month, against actual menu prices. The breakeven number in the section above is the same idea expressed in revenue per month — fixed costs divided by contribution margin at the same menu-price-preferred average. Two units, one underlying answer: “what does the shop need to do to clear fixed costs at the prices you charge?”

Per-month workflow

ActionWhat happens
Visit a new month for the first timeForm pre-fills from your most recent prior month. Cue at top: “Cloned from April 2026 — adjust as needed.”
Edit and saveUpdates only that month.
Visit an old monthShows what you had set then (or blank if you never set it up).
Edit a past monthOne-time confirmation: “You’re editing a past month. Saved changes will affect historical reports.”
Plan ahead (future month)Soft-warning banner shown.
Apply forward to next N monthsPower-user shortcut to copy current month’s settings forward. Max 11 months.

What’s next

You’ve set the inputs and the Calculator has answered “what should I be charging this month?” Now head to Pulse — that’s where actual revenue, refunds, expenses, and margin come in through the month, plotted against the targets you just set.