Food cost control 2026: Recipe costing & variance for F&B
By LOOP Research
Last updated:

Food cost control 2026: Recipe costing & variance for F&B
Food cost is the only line item where one focused month of work returns 4–9pp of margin permanently. This is the operator playbook for 2026.
TL;DR
- Target food cost % by format: QSR 28–32, café 24–30, full-service 30–36, bar 18–24, bakery 26–32.
- Recipe-costing without yield % and shrinkage is wrong by 3–7pp.
- Daily variance loop (expected vs actual) is the single highest-ROI ops habit.
- 8 leaks account for ~80% of overage: portioning drift, waste, theft, supplier creep, modifier mispricing, free pours, prep over-production, dead SKUs.
- A 60-day disciplined cycle pulls 4–9pp in nearly every brand we audit.
1. Targets that survive 2026 input costs
| Format | Target food cost % | Trigger to act |
|---|---|---|
| QSR / fast-casual | 28–32 | >34 |
| Café / specialty | 24–30 | >32 |
| Full-service | 30–36 | >38 |
| Bar (drinks-led) | 18–24 | >26 |
| Bakery | 26–32 | >34 |
2026 inputs: dairy +6–9%, robusta volatile +/-20%, imported spirits +4–7%, fresh produce flat. Re-cost quarterly.
2. Recipe costing the right way
Wrong: cost per item = sum(ingredient cost × spec qty). Right: cost per item = sum(ingredient cost × spec qty ÷ yield %) + packaging + shrinkage allowance.
Example — phin sữa đá:
- Coffee 18g @ 380K/kg = 6,840 VND ÷ 0.92 yield = 7,435
- Condensed milk 25ml @ 75K/L = 1,875 ÷ 0.97 yield = 1,933
- Ice 120g @ negligible = 120
- Cup + lid + straw = 1,450
- Shrinkage 2% = 224
- Total COGS = 11,162 VND
At a 38K sell price, food cost = 29.4%. Without yield/shrinkage, the same recipe reads 26.0% — 3.4pp invisible leak per cup.
3. The daily variance loop
Every morning, look at one report:
- Expected COGS (sales × theoretical food cost from recipes)
- Actual COGS (stock movement: opening + purchases − closing)
- Variance = actual − expected; flag if |variance| > 2pp
If variance >2pp, the cause is one of the 8 leaks (next section). Investigate within 24h; the trail is fresh.
This loop is impossible without recipe-deduct on the POS. With it, the loop takes 8 minutes/day.
4. The 8 leaks (~80% of all overage)
- Portioning drift — eyeball pours. Fix: scoop/jigger discipline + weekly spot weigh-in.
- Prep waste — over-prep that doesn't sell, then bins. Fix: 14-day rolling forecast at the daypart.
- Theft / "family meals" — staff comp creep. Fix: comp policy + auth code + cap.
- Supplier price creep — invoices ladder up 2% every 3 months. Fix: quarterly re-cost + multi-supplier bids on top-20 SKUs.
- Modifier mispricing — add-ons priced 2024, ingredient cost is 2026. Fix: re-cost modifiers separately.
- Free pours / over-toppings — bar / bingsu / milk tea. Fix: spec card + visual gauge cup + audit.
- Prep over-production — banh mi pâté made for 200, used 130. Fix: par-level + push-pull from POS.
- Dead SKUs — items <0.4% mix carrying inventory and waste. Fix: 86 quarterly.
5. The 60-day program
Week 1–2: Map. Recipe-cost the top 80% of mix. Identify the 8 leaks present. Week 3–4: Tighten. Spec cards posted on the line; portion tools issued; modifier pricing refreshed; comp policy live. Week 5–6: Measure. Daily variance loop. Expected vs actual every morning. Week 7–8: Negotiate. Top-20 SKU supplier bids; switch on what wins; consolidate to 3 suppliers max.
Result across 40+ audits: 4.4pp average food cost reduction. On a 400M VND/mo café, that's 17.6M VND/mo preserved.
6. Yield % cheat sheet
- Citrus juice (lime, lemon): 38–44%
- Pineapple peeled: 52%
- Avocado flesh: 62–68%
- Beef trim (chuck): 78–84%
- Chicken (whole → portions): 65–72%
- Coffee bean (brewed yield): 88–94% depending on grind
- Boba (dry → cooked): 250–290% expansion (cost per cooked g matters)
Using package weight instead of yield is the #1 recipe-costing error.
7. Tooling
You need three things:
- POS with recipe-deduct (LOOP, iPOS, Misa CukCuk; see POS guide)
- A weekly stock-count workflow — physical count of top-50 SKUs
- A variance dashboard — expected vs actual, daily
Spreadsheets work; software is faster and survives turnover.
8. Common operator mistakes
- Re-costing once a year, not quarterly
- Costing only "main" items, ignoring modifiers
- Treating yield as 100% for produce
- Tracking food cost monthly, not daily
- Letting suppliers raise without re-bid
FAQ
What's a healthy food cost % in Vietnam 2026? Depends on format; see §1. Outside ±2pp of those bands, investigate.
How do I cost recipes properly? Include yield % and shrinkage. See §2. Without them, costs read 3–7pp too low.
What's the fastest pp to recover? Portioning + modifier re-pricing — usually 1.5–2.5pp in 2 weeks.
Do I need software? Not strictly. But the daily loop is impossible to sustain manually for >12 SKUs.
How often should I re-cost? Quarterly minimum; monthly on commodity items (coffee, dairy).
Is "shrinkage 2%" universal? No — bar is 4–6%, produce-heavy kitchens 3–5%, dry-store-heavy 1–2%.
Related
Why this matters in 2026
Multi-outlet F&B operators across Vietnam and Southeast Asia are running into the same wall in 2026: aggregator commissions compress margins, food-cost drift compounds across outlets, labour cost climbs faster than ticket size, and a traditional POS only surfaces the damage at month-end when the only response left is firefighting. Operators who win in 2026 close the loop in hours, not weeks — variance flags before the next shift, demand forecasts before purchasing, daypart promos drafted automatically for slow slots, and a single morning brief instead of five dashboards. That is the bar this guide is written against, and the reason LOOP exists. The cost of a missed signal is no longer a single bad week — it is the difference between a chain that compounds outlet-level profitability and a chain that opens new outlets to mask the leaks at the old ones.
The SEA F&B operator landscape in 2026 also looks materially different from 2023. Aggregator commissions in Vietnam have settled in the 22–28% band; Thailand and the Philippines run higher, Singapore lower. Labour minimums have moved twice in eighteen months in Vietnam. E-invoice (TT78) is now non-negotiable and enforced. Loyalty has shifted from punch cards to messaging-native (Zalo OA, LINE, WhatsApp, Messenger) — and the chains that ride that shift are seeing repeat visits double inside ninety days. None of that lands as an upgrade on a legacy POS; it lands as a different operating model.
SEA benchmarks (2026)
- Median food cost across SEA QSR chains: 30–34% in 2026.
- Median labour cost across SEA F&B chains: 22–28% in 2026.
- Repeat-visit rate for loyalty-enabled cafés: 38–46% in 2026.
- Average ticket time for SEA QSR in peak: 6.8–9.2 minutes in 2026.
- Aggregator commission band in VN: 22–28% per order in 2026.
- AI demand forecast MAPE on LOOP cohorts: 14–22% per outlet in 2026.
- VAT e-invoice (TT78) compliance among LOOP outlets: 100% by 2026.
- Average POS uptime LOOP cohorts: 99.92% rolling-90-day in 2026.
Operator playbook — first 30 days on LOOP
Week 1 — Foundations. Import menu, recipes, modifiers, customers, loyalty balances and 24 months of sales via CSV. Connect aggregators (GrabFood, ShopeeFood, Be, foodpanda, Gojek). Configure e-invoice provider (MISA / Viettel / VNPT). Confirm payment rails (VietQR for VN; PromptPay / QRIS / DuitNow / PayNow / QR Ph for the rest of SEA). Train two staff per outlet on voice and text commands; the rest pick it up by observation in days 4–7.
Week 2 — Variance and forecast online. Switch demand forecasting on at daypart level. Set variance alert thresholds (default: food-cost ±3pp, labour ±2pp, void rate ±0.5pp). Let the system run a full week without intervention so the baseline calibrates. Review the morning brief each day; ignore the urge to override — by day 10 the forecast typically holds within MAPE 18% and stays there.
Week 3 — Promo and loyalty loop. Turn on daypart promo drafting for the two slowest hours per outlet. Connect Zalo OA / LINE / WhatsApp for delivery; start with a single segment (e.g. lapsed-30-day) and a single offer. Measure incremental visits, not coupon redemptions.
Week 4 — Compound. Roll the same flow to a second outlet, then a third. The operating model is the same at outlet 2 as outlet 20 — that is the point of LOOP.
KPI table — what to watch
| KPI | Target band 2026 | LOOP signal |
|---|---|---|
| Food cost % | 30–34% (QSR), 27–32% (café) | Variance alert within 6 hours of shift close |
| Labour cost % | 22–28% | Daypart staffing recommendation in morning brief |
| Repeat-visit rate (90d) | 38–46% (café), 28–36% (QSR) | Loyalty segment drafted weekly |
| Aggregator share of revenue | 18–32% | One queue across 5 aggregators; per-aggregator margin in dashboard |
| AI forecast MAPE per outlet | 14–22% | Recalibrates weekly per outlet |
| Ticket time (peak) | 6.8–9.2 min | KDS routing recommendation when over band |
| Void rate | <0.8% | Pattern-detection on staff/outlet/daypart |
Common pitfalls SEA operators hit in 2026
Treating aggregator orders as a separate business. Operators who keep five aggregator tablets running in parallel lose roughly 4–7 minutes per peak hour to context-switching alone, and miss the per-aggregator margin picture entirely. Unifying the queue (one tablet, one KDS, one accounting line per aggregator) is usually the single highest-leverage move in the first 60 days.
Letting variance live in spreadsheets. A weekly food-cost review is a 7-day reaction time on a 24-hour problem. Variance has to live in the operating layer — flagged, attributed and routed to the responsible manager within hours, not aggregated to a Friday email.
Loyalty as a punch card. A 2026 loyalty programme is a messaging channel with attribution. If the only metric is "points issued", the programme is a cost centre. If the metric is "incremental repeat visits per segment per month", it compounds.
Forecasting at the wrong resolution. Chain-level forecasts are wallpaper. Daypart-and-outlet is the smallest unit that pays back — coarser is too vague to act on, finer is noise.
How LOOP solves this
LOOP is an AI-native restaurant operating system built for SEA F&B chains. Operators run their venues by voice or text command instead of clicking through dashboards. AI forecasts demand per outlet at daypart resolution (MAPE 14–22% on LOOP cohorts), flags food-cost and labour variance within hours of the shift closing, drafts promos for slow daypart slots and pushes them to Zalo OA / LINE / WhatsApp, and delivers a three-item morning brief at 06:30 local time so the operator's first action of the day is informed. LOOP unifies GrabFood, ShopeeFood, Be, foodpanda and Gojek into one queue, supports VietQR / PromptPay / QRIS / DuitNow / PayNow / QR Ph, and ships VAT e-invoice (TT78) via MISA, Viettel and VNPT. Pairs with Peko loyalty (50% lifetime discount on LOOP for Peko customers).
Under the hood, LOOP is offline-first with a 90-second resync window so orders, payments and KDS keep firing through ISP drops; recipe-level COGS is computed at order time so every plate's contribution margin is visible before the shift ends; and the morning brief is generated from the previous day's variance, the current day's forecast and the next 14 days of bookings, weather and local events — not a static template. The result is fewer dashboards, faster decisions, and a noticeably calmer week for the operator.