Milk Tea Recipes with True COGS 2026 — Vietnam Operator's Working Manual
By LOOP Research
Last updated:

Most milk-tea recipe articles list ingredients without amounts, prices, or yield. That is fine for a hobbyist. For an operator about to sell 200+ cups a day, you need the opposite: every recipe sized to a 500 ml cup, every ingredient priced at Q1 2026 Vietnamese wholesale, every yield calculated, and an explicit note on how to deduct it from inventory at the point of sale.
All twelve recipes below assume a standard 500 ml clear PET cup with sealed dome lid, ice fill 220 g, leaving 280 ml for liquid + toppings. Prices are HCMC/Hà Nội Q1 2026 wholesale, before VAT, to a buyer ordering at minimum-truck quantities. Substitute your supplier prices freely — the workings are the value.
Table of contents
- Reference unit costs
- The 12 recipes
- COGS summary table
- POS deduction notes per recipe
- Daily blind-count list
- Sources
- FAQ
Reference unit costs (HCMC/HN wholesale, Q1 2026, pre-VAT)
| Ingredient | Unit | Price | Notes |
|---|---|---|---|
| Black tea leaves (Bảo Lộc CTC grade) | VND/kg | 95,000 | brews ~180 cups @ 5 g |
| Oolong tea leaves (Lâm Đồng) | VND/kg | 280,000 | brews ~150 cups @ 6 g |
| Jasmine green tea | VND/kg | 145,000 | brews ~180 cups @ 5 g |
| Earl grey blend | VND/kg | 220,000 | brews ~165 cups @ 5.5 g |
| Whole milk (Vinamilk/TH) | VND/L | 33,500 | 80–120 ml per cup |
| Non-dairy creamer (Rich's/Indomilk) | VND/kg | 78,000 | hydrate 1:6 |
| Condensed milk (Ông Thọ) | VND/L | 52,000 | 15–25 ml per cup |
| Fresh cream (Anchor 35%) | VND/L | 138,000 | 30 ml per topping |
| Cane sugar | VND/kg | 22,000 | 25 g per cup avg |
| Fructose syrup | VND/L | 38,000 | 18 ml per cup avg |
| Tapioca pearls (raw, large) | VND/kg | 35,000 | yields 2.6× cooked weight |
| Brown sugar pearls (premium) | VND/kg | 56,000 | yields 2.4× cooked weight |
| Crystal boba (clear) | VND/kg | 62,000 | ready-to-use |
| Cheese foam powder mix | VND/kg | 285,000 | 25 g per topping |
| Sea salt | VND/kg | 14,000 | 1 g per cheese foam |
| Aiyu jelly | VND/kg | 48,000 | 40 g per topping |
| Grass jelly (sương sáo) | VND/kg | 32,000 | 50 g per topping |
| Pudding mix | VND/kg | 165,000 | yields 8× set weight |
| Coffee jelly | VND/kg | 58,000 | 40 g per topping |
| Taro paste (real taro 60%) | VND/kg | 95,000 | 60 g per cup |
| Strawberry purée 50% | VND/kg | 88,000 | 40 g per cup |
| Mango purée 50% | VND/kg | 92,000 | 40 g per cup |
| Matcha powder (culinary) | VND/kg | 1,250,000 | 4 g per cup |
| 500 ml cup + dome lid + straw | VND/set | 1,950 | bulk pack |
| Sealing film (per cup) | VND/cup | 280 | machine seal |
| Paper bag + napkin | VND/set | 420 | per take-away order |
The 12 recipes
For each recipe: gram-accurate build, ingredient cost, packaging cost, total COGS, suggested menu price, drink gross margin. "Suggested price" anchors at the median chain-modern milk-tea ticket VND 45–65k.
1. Classic black milk tea with tapioca (Trà sữa truyền thống trân châu)
- Brewed black tea (5 g leaves → 240 ml) — VND 530
- Non-dairy creamer slurry (25 g powder + 150 ml water) — VND 1,950
- Cane sugar 25 g + fructose 8 ml — VND 855
- Tapioca pearls cooked 80 g (raw 31 g) — VND 1,085
- Cup set + seal — VND 2,230
- Total COGS: VND 6,650 | Suggested price: VND 35,000 | Drink GM: 81%
2. Oolong milk tea with brown sugar pearls
- Brewed oolong (6 g → 240 ml) — VND 1,680
- Whole milk 120 ml + condensed 15 ml — VND 4,800
- Brown sugar pearls cooked 90 g (raw 38 g) — VND 2,128
- Cup set + seal — VND 2,230
- Total COGS: VND 10,838 | Suggested price: VND 49,000 | Drink GM: 78%
3. Matcha latte with red bean (substitute aiyu)
- Matcha 4 g — VND 5,000
- Whole milk 180 ml + fructose 18 ml — VND 6,714
- Aiyu jelly 40 g — VND 1,920
- Cup set + seal — VND 2,230
- Total COGS: VND 15,864 | Suggested price: VND 59,000 | Drink GM: 73%
4. Cheese foam jasmine tea
- Jasmine tea (5 g → 280 ml) — VND 805
- Cane sugar 22 g + fructose 8 ml — VND 788
- Cheese foam topping (cream 30 ml + foam mix 25 g + salt 1 g) — VND 11,289
- Cup set + seal — VND 2,230
- Total COGS: VND 15,112 | Suggested price: VND 55,000 | Drink GM: 73%
5. Taro milk tea with crystal boba
- Brewed black tea (5 g → 200 ml) — VND 530
- Taro paste 60 g — VND 5,700
- Whole milk 120 ml + condensed 15 ml — VND 4,800
- Crystal boba 50 g — VND 3,100
- Cup set + seal — VND 2,230
- Total COGS: VND 16,360 | Suggested price: VND 59,000 | Drink GM: 72%
6. Brown sugar fresh milk (Hổ Đường Đen)
- Whole milk 240 ml + condensed 10 ml — VND 8,560
- Brown sugar pearls cooked 110 g (raw 46 g) — VND 2,576
- Brown sugar drizzle 12 g — VND 672
- Cup set + seal — VND 2,230
- Total COGS: VND 14,038 | Suggested price: VND 52,000 | Drink GM: 73%
7. Strawberry oolong fruit tea
- Brewed oolong (6 g → 200 ml) — VND 1,680
- Strawberry purée 60 g + fructose 15 ml — VND 5,850
- Crystal boba 40 g — VND 2,480
- Cup set + seal — VND 2,230
- Total COGS: VND 12,240 | Suggested price: VND 49,000 | Drink GM: 75%
8. Mango passion green tea
- Brewed green tea (5 g → 200 ml) — VND 725
- Mango purée 60 g + fructose 15 ml — VND 6,090
- Aiyu jelly 40 g — VND 1,920
- Cup set + seal — VND 2,230
- Total COGS: VND 10,965 | Suggested price: VND 49,000 | Drink GM: 78%
9. Coffee jelly milk tea
- Brewed black tea (5 g → 220 ml) — VND 530
- Non-dairy creamer slurry (25 g) — VND 1,950
- Coffee jelly 60 g — VND 3,480
- Cane sugar 22 g + fructose 8 ml — VND 788
- Cup set + seal — VND 2,230
- Total COGS: VND 8,978 | Suggested price: VND 45,000 | Drink GM: 80%
10. Pudding milk tea
- Brewed black tea (5 g → 220 ml) — VND 530
- Whole milk 100 ml + condensed 18 ml — VND 4,286
- Pudding 70 g (mix 9 g) — VND 1,485
- Cane sugar 18 g — VND 396
- Cup set + seal — VND 2,230
- Total COGS: VND 8,927 | Suggested price: VND 49,000 | Drink GM: 82%
11. Earl grey cheese mousse
- Brewed earl grey (5.5 g → 280 ml) — VND 1,210
- Cane sugar 20 g — VND 440
- Cheese mousse topping 40 ml (cream 40 ml + foam mix 18 g) — VND 10,650
- Cup set + seal — VND 2,230
- Total COGS: VND 14,530 | Suggested price: VND 55,000 | Drink GM: 74%
12. Grass jelly herbal milk tea
- Brewed black tea (5 g → 240 ml) — VND 530
- Non-dairy creamer slurry (25 g) — VND 1,950
- Grass jelly 80 g — VND 2,560
- Cane sugar 22 g — VND 484
- Cup set + seal — VND 2,230
- Total COGS: VND 7,754 | Suggested price: VND 39,000 | Drink GM: 80%
COGS summary table
| # | Recipe | COGS | Suggested price | Drink GM | Notes |
|---|---|---|---|---|---|
| 1 | Classic black + tapioca | 6,650 | 35,000 | 81% | Entry SKU |
| 2 | Oolong + brown sugar pearls | 10,838 | 49,000 | 78% | Margin anchor |
| 3 | Matcha latte + aiyu | 15,864 | 59,000 | 73% | Matcha price sensitive |
| 4 | Cheese foam jasmine | 15,112 | 55,000 | 73% | Foam complexity |
| 5 | Taro + crystal boba | 16,360 | 59,000 | 72% | Watch taro shrinkage |
| 6 | Brown sugar fresh milk | 14,038 | 52,000 | 73% | Photo SKU |
| 7 | Strawberry oolong | 12,240 | 49,000 | 75% | Seasonality |
| 8 | Mango passion green | 10,965 | 49,000 | 78% | Year-round |
| 9 | Coffee jelly | 8,978 | 45,000 | 80% | Cross-day appeal |
| 10 | Pudding milk tea | 8,927 | 49,000 | 82% | Highest margin |
| 11 | Earl grey cheese mousse | 14,530 | 55,000 | 74% | Evening seller |
| 12 | Grass jelly herbal | 7,754 | 39,000 | 80% | Traditional bridge |
Blended drink GM at a balanced menu mix: 77.1% — which is the number to defend at category-mix reviews.
POS deduction notes per recipe
A milk-tea POS that does not deduct ingredients by recipe at the point of sale is invisible to the actual margin leak. Here is what every recipe needs declared:
- Liquid ingredients in ml, not "a pump". Pump sizes drift 15–25% over a month as nozzles wear.
- Pearls in g cooked, with a fixed cooked:raw ratio (2.4× for brown sugar pearls, 2.6× for tapioca). The POS deducts raw weight; the bar weighs cooked.
- Toppings as separate SKUs that the cashier checkboxes — never bundled inside the parent drink unless the drink is fixed-topping.
- Cups and lids deducted automatically; the operator should reconcile package count vs. drink count at end of day and investigate >0.5% variance.
- Sealing film per cup is a separate consumable line, not a packaging overhead — it is the single highest-shrinkage SKU in milk tea.
For more on how a POS does recipe-level deduction at sale, see recipe costing in Vietnam.
Daily blind-count list (top 8 SKUs)
Daily blind counts on the top 8 SKUs (the manager counts without seeing the POS-expected number) typically cuts food-cost shrinkage from 5–6% to 1.5–2%. For a milk-tea outlet, count daily:
- Tapioca pearls (raw)
- Brown sugar pearls (raw)
- Taro paste
- Cheese foam mix
- Cups (500 ml set)
- Sealing film roll length
- Whole milk (litres on hand)
- Matcha powder (g on hand)
Flash variance >2% on items 1–4, >0.5% on items 5–6, >1% on items 7–8.
Sources
- Vietnam F&B Index 2026 — LOOP Research
- VICOFA 2025/26 crop-year wholesale ranges for tea and coffee.
- General Statistics Office of Vietnam — Q1 2026 dairy and sugar wholesale price index.
- VPBank SME F&B briefing pack 2026 — bubble-tea operator margin benchmarks.
- Vinamilk and TH True Milk public 2026 wholesale price lists.
Related
- AI restaurant POS — the pillar guide
- Opening a milk-tea shop — full playbook
- Recipe costing in Vietnam
- LOOP vs Loyverse for milk-tea chains
Frequently asked questions
Q: What blended drink gross margin should a Vietnamese milk-tea shop target in 2026? A: 74–80% blended. The 12-recipe menu above lands at 77.1%. Below 72% means either supplier prices are above market or recipes are over-portioned.
Q: Why are these COGS higher than the "VND 4,000 per cup" stories online? A: Those stories exclude cup, lid, seal, straw, sugar, ice spill, and recipe shrinkage. Add them and you land at VND 7–16k. The numbers above are operating reality.
Q: How do I cost a recipe my supplier just changed price on? A: Run the recipe with the new unit cost, then rerun the menu blend. Anything that drops a recipe below 70% drink GM either needs a price increase, a portion change, or a substitution.
Q: What does cooked:raw ratio for pearls mean in practice? A: 1 kg raw tapioca yields ~2.6 kg cooked at correct hydration. Your POS should deduct the raw weight when a drink is sold; the bar weighs cooked but the inventory tracks raw.
Q: How often should recipes be re-costed? A: Monthly. Dairy and sugar move ±5% in a quarter; specialty toppings move ±10%. A POS that auto-recosts on supplier price upload removes this as a chore.
Q: What is the right cup-vs-drink reconciliation tolerance? A: 0.5%. Above that, either spill is excessive (training issue), cups walk off (theft), or POS deduction is mis-keyed (recipe issue). Investigate inside 24 hours.
Q: How many SKUs should the menu have? A: 12–18 active SKUs covers 92% of typical milk-tea ticket variety. Beyond 24, prep loss and inventory holding dominate the gross-margin gain.
Q: Do I really need to track sealing film? A: Yes. It is the single highest-shrinkage line in milk-tea and the easiest to under-track. Roll length per case, divided by film width per cup, gives expected cups; reconcile weekly.
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.
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 steady.
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 (modelled accuracy published in our methodology), 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 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.