Bar & Café Ingredients Vietnam 2026: Yield, Waste & Cost Engineering
By LOOP Research
Last updated:

TL;DR. A Vietnamese café or bar's COGS is decided by roughly 40 SKUs: espresso beans, fresh milk, condensed milk, syrups, tea leaves, tapioca, fruit, ice, spirits, beer, and ~25 modifiers. Get yield % and shrinkage right on these and food cost drops from 32–38% to 24–28% within one quarter. This guide gives 2026 supplier benchmarks (Đắk Lắk arabica, Mộc Châu milk, Phúc Long tea base, local fruit), per-SKU yield tables, and the POS recipe-deduction workflow that closes the variance loop.
Table of contents
- Why ingredients — not labour — decide café/bar margin
- The 80/20 SKU map
- Supplier landscape & 2026 prices
- Yield % reference tables
- Shrinkage benchmarks and detection
- Recipe-level POS deduction workflow
- Re-costing cadence when supplier prices move
- Common mistakes that cost 4–6 points of margin
- FAQ
1. Why ingredients decide café/bar margin
Labour and rent are largely fixed once you sign the lease. The lever you control daily is ingredient cost. On the Peko + LOOP merchant base in 2026, the gap between a top-quartile café and a median café is 9.2 points of food-cost % — and roughly 80% of that gap traces to three things: bean/milk ratio drift, syrup over-pouring, and unmeasured fruit/ice waste.
Food-cost % targets by format (2026 SEA F&B benchmark, n=420 outlets):
| Format | Top-quartile | Median | Bottom-quartile |
|---|---|---|---|
| Specialty café | 22% | 28% | 35% |
| Milk-tea shop | 24% | 30% | 38% |
| Craft beer bar | 26% | 32% | 41% |
| Cocktail bar | 18% | 24% | 33% |
| Quick-grab kiosk | 28% | 34% | 42% |
Source: LOOP + Peko anonymised merchant dataset, Jan–Oct 2026.
2. The 80/20 SKU map
In a 60-item café menu, 38 raw SKUs typically deliver 82% of COGS. The other 60+ items (paper, stirrers, sauces) matter for hygiene and ops, not margin engineering.
The 8 high-leverage SKUs (every café): arabica beans, robusta beans, fresh milk, condensed milk, coffee creamer, brown sugar syrup, vanilla syrup, ice.
The 8 high-leverage SKUs (every milk-tea shop): assam black tea, jasmine green tea, oolong, tapioca pearls, brown sugar, fresh milk, non-dairy creamer powder, lychee/passionfruit purée.
The 8 high-leverage SKUs (every bar): house gin, house vodka, house whisky, draft lager keg, draft IPA keg, lime, mint, simple syrup.
3. Supplier landscape & 2026 prices
Prices below are 2026 Q4 wholesale for HCMC/Hanoi delivery, MOQ 50kg or 1 case. Always re-verify with two quotes before issuing PO.
3.1 Coffee beans
| SKU | Origin | 2026 wholesale | Notes |
|---|---|---|---|
| Arabica washed | Cầu Đất, Lâm Đồng | 290–340K ₫/kg | Specialty grade, SCA 82+ |
| Arabica natural | Sơn La | 240–290K ₫/kg | Fruit-forward, good for milk drinks |
| Robusta fine | Đắk Lắk | 110–145K ₫/kg | Crema body, blends 30–50% with arabica |
| Imported single-origin | Ethiopia/Colombia | 480–680K ₫/kg | Hand-brew menu only |
3.2 Dairy & creamers
| SKU | Brand tier | 2026 wholesale | Notes |
|---|---|---|---|
| Fresh whole milk | Vinamilk/TH | 24–28K ₫/L (1L carton) | 21K/L if you negotiate pallets |
| Fresh whole milk (HoReCa) | Mộc Châu/Dalat Milk | 22–26K ₫/L | 5L bag-in-box, better for steaming |
| Condensed milk | Ông Thọ | 36–42K ₫/380g can | Buy 48-can cases |
| Non-dairy creamer powder | Rich's / Frima | 78–95K ₫/kg | For milk tea, avoids spoilage |
3.3 Tea bases (milk tea)
| SKU | 2026 wholesale | Yield |
|---|---|---|
| Assam BOP loose-leaf | 380–460K ₫/kg | 1 kg brews ~80 L base |
| Jasmine green | 420–520K ₫/kg | 1 kg brews ~70 L base |
| Oolong (Đài Loan-style) | 580–720K ₫/kg | 1 kg brews ~60 L base |
| Tapioca pearls (raw, 3kg) | 95–125K ₫/kg | 1 kg raw → 2.6 kg cooked |
3.4 Spirits & beer (bars)
| SKU | 2026 wholesale | Pours/bottle |
|---|---|---|
| House gin (Beefeater/Bombay) | 380–460K ₫/700ml | 23 × 30ml |
| House vodka (Absolut) | 360–430K ₫/700ml | 23 × 30ml |
| Draft lager keg 30L | 1.65–2.1M ₫/keg | 60 × 500ml glasses |
| Draft IPA keg 30L | 2.4–3.1M ₫/keg | 60 × 500ml glasses |
4. Yield % reference tables
Yield = usable output ÷ raw input. A 100 g lime delivers about 35 g juice — yield is 35%. Most café/bar POS systems are configured with 100% yield, which silently understates COGS by 8–15%.
4.1 Citrus & fruit
| Ingredient | Raw | Usable yield | Effective cost multiplier |
|---|---|---|---|
| Lime | 100 g whole | 32–38 g juice | ×2.7 |
| Lemon | 100 g whole | 35–42 g juice | ×2.6 |
| Passionfruit | 100 g whole | 38–45 g pulp | ×2.4 |
| Pineapple | 100 g whole | 55–65 g flesh | ×1.7 |
| Strawberry | 100 g whole | 88–92 g flesh | ×1.1 |
| Mango (tượng) | 100 g whole | 60–68 g flesh | ×1.6 |
4.2 Coffee
| Step | Input | Output | Yield |
|---|---|---|---|
| Single espresso shot | 18 g ground | 36 g liquid | Brew ratio 1:2 |
| Drip filter | 20 g ground | 240 ml | 1:12 |
| Vietnamese phin | 25 g ground | 50 ml | 1:2 with chicory |
4.3 Beer keg pour loss
A 30L keg theoretically gives 60 × 500ml. Reality (2026 LOOP bar dataset): 52–56 glasses after foam, line clean and end-of-keg loss. Configure POS deduction at 540 ml/glass to absorb the loss, or you'll show 8–13% phantom shrinkage every month.
5. Shrinkage benchmarks and detection
Shrinkage = (theoretical COGS from recipe deduction) − (actual COGS from purchase invoices and stock count). Acceptable thresholds (2026):
| Category | Healthy | Investigate | Crisis |
|---|---|---|---|
| Coffee beans | ≤2% | 2–4% | >4% |
| Fresh milk | ≤3% | 3–6% | >6% (likely spoilage) |
| Spirits | ≤1.5% | 1.5–3% | >3% (over-pour or theft) |
| Draft beer | ≤8% | 8–13% | >13% |
| Fruit (fresh prep) | ≤6% | 6–12% | >12% (poor FIFO) |
Detection cadence with LOOP: shrinkage is computed nightly when the day's recipe-deduction snapshot reconciles against stock counts (weekly for high-velocity SKUs, monthly for everything else). The classic POSAPP/KiotViet flow surfaces shrinkage only when the manager exports a monthly report — usually 25–40 days after the leak started.
6. Recipe-level POS deduction workflow
This is the workflow that turns the tables above into closed-loop cost control.
Menu item ──► Recipe (BOM) ──► Sub-recipes ──► Raw SKUs (with yield %)
│
Sale rings ──► POS deducts theoretical raw qty ◄──────────┘
│
Nightly: theoretical vs purchase + stock count ──► shrinkage report
Setup checklist (2 days for a 60-item menu):
- List every menu item; tag each as drink/food/modifier.
- For each, write the recipe in raw SKU units (not finished syrup units). Example: a brown-sugar latte uses 25g beans + 180ml fresh milk + 20ml brown-sugar syrup; the syrup itself is a sub-recipe of 1kg brown sugar + 1L water yielding 1.6L finished.
- Set yield % on raw SKUs that need it (citrus, fruit, beer kegs).
- Receive every PO into POS (don't bypass).
- Stock-count the 8 high-leverage SKUs weekly, the rest monthly.
7. Re-costing cadence
Arabica moves 8–18% per quarter. Milk moves with feed prices. Tapioca moves with Thai cassava harvest. Re-cost the menu when:
- Any single ingredient on a top-10 menu item moves >5% from the costed price; or
- Quarterly, on the 1st of Apr/Jul/Oct/Jan.
In LOOP, an AI re-cost prompt — "re-cost all menu items using the latest 3 supplier invoices" — produces an updated COGS sheet plus a flagged list of items whose food-cost % crossed the 30% guardrail. The operator approves or rejects price adjustments inline; no spreadsheet round-trip.
8. Common mistakes that cost 4–6 points of margin
- Costing in finished units, not raw. Syrups, tea bases and stocks are sub-recipes. Cost them as such or the upstream raw price moves never propagate.
- Ignoring yield on citrus and fruit. Default 100% yield understates juice/pulp cost by 60–180%.
- No keg pour-loss adjustment. Costs the average craft bar 9–14% of beer revenue.
- Stock-counting monthly only. Leaks compound for 25+ days before detection. Weekly counts on the 8 high-leverage SKUs catch 90% of issues by Day 7.
- Treating ice as free. A milk-tea shop pours 8–14 kg ice/day; bagged ice at 4K ₫/kg adds up to 1.4M ₫/month.
- Buying milk by 1L carton when the lease has cold storage for 5L bags. 13–18% saving wasted out of habit.
9. FAQ
Q. How long does it take to set up recipe-level deduction for a 60-item café? A. Two operator-days. One day to write recipes and yield %, one day to receive opening stock and reconcile the first week.
Q. What's the realistic food-cost % I can hit in a Vietnamese specialty café? A. 24–28% within a quarter of enabling recipe-level deduction, weekly stock counts on the top-8 SKUs, and supplier re-quotes every 90 days.
Q. Should I use non-dairy creamer or fresh milk for milk tea? A. Pure economics: non-dairy creamer powder runs ~38% lower per serving and stores 9× longer. But Tier-A urban customers in 2026 increasingly read labels; a hybrid (creamer for value tier, fresh milk for premium tier) usually beats a single-rail approach.
Q. How do I price-protect against arabica volatility? A. Lock 60–90 day forward contracts with two roasters (split 60/40), and write your menu pricing with a 4–6% buffer above costed COGS. Re-quote quarterly.
Q. Does LOOP support sub-recipes (syrup of syrup)? A. Yes — sub-recipes nest 3 levels deep, and a price change on a leaf SKU re-costs every parent menu item automatically.
Q. What's the shrinkage threshold that triggers an investigation? A. Anything above the "Investigate" column in §5 for two consecutive weeks. LOOP raises this as a daily AI alert; you don't have to read reports.
Q. How do I handle ingredient waste from staff drinks and tastings? A. Ring them as 0-VND "Staff Tasting" menu items so the recipe still deducts inventory. End-of-month you'll see staff consumption broken out separately.
Q. Can I import supplier price lists in bulk? A. Yes — LOOP accepts CSV/Excel uploads from any of the 4 large VN F&B distributors; new prices apply to next-day re-costing, with a diff report sent to the owner.
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)
- Daily stock-count time under fast-count workflow: 18–22 minutes in 2026.
- Recipe-level COGS variance flagged within 6 hours on LOOP in 2026.
- Median shrinkage for SEA bubble-tea chains: 1.4–2.1% in 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.
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.
Related guides
- LOOP blog — AI POS guides for SEA
- LOOP Smart POS
- Peko Rewards loyalty
- VeLoop delivery aggregator unification
- LOOP pricing
- Compare LOOP vs other POS
FAQ
How fast can a SEA F&B chain switch to LOOP?
Typical cutover for 2–10 outlets is 5–10 business days: CSV import of menu, recipes, customers, loyalty and 24 months of sales, parallel run over a weekend, then cut over Monday open. Larger chains (20+ outlets) usually phase by region over 4–6 weeks.
Does LOOP work without stable internet?
Yes — LOOP runs offline-first with a 90-second resync window. Orders, payments and KDS keep firing during ISP drops; the cloud reconciles automatically on reconnect. Aggregator orders queue locally and dispatch when the link returns.
What does LOOP cost?
Per-outlet monthly pricing with no per-device upcharge. Peko loyalty customers get 50% lifetime discount on LOOP — see /pricing for the current band.
Does LOOP support VAT e-invoice (TT78)?
Yes — LOOP integrates with MISA, Viettel and VNPT as e-invoice providers. Issuance is automatic at order close and reconciles end-of-day.
Which payment rails does LOOP support?
Native: VietQR, MoMo, ZaloPay, VNPay for Vietnam; PromptPay (TH), QRIS (ID), DuitNow (MY), PayNow (SG), QR Ph (PH). Card acquirers are wired through local PSPs per country.