Milk and coffee waste: the café margin line nobody measures

It's 8:40am. The bar is three deep. You steamed a full jug for one flat white, poured the drink, and tipped the rest of the jug down the drain. Did it without thinking. Did it on the next order too.
Across a busy morning that half-jug, tipped away again and again, is a real number. It just never lands anywhere you'd see it.
Your recipe sheet costs the milk that goes into the cup. 180ml of dairy in a flat white, priced to the penny. What it doesn't cost is the 100ml you steamed and binned, the dialling-in shots at open, the remake when you misheard the order, the staff flat whites, the foam left clinging to the jug. None of that is in the spreadsheet. All of it came out of the same carton you paid for.
This is the gap between the milk you bought and the milk that actually reached a paying customer. On a high-volume bar it's one of the largest unmeasured costs you have. Let's put a number on it.
Why your recipe cost is fiction on a busy bar
When you cost a flat white you measure the ideal. The perfect pour, nothing spilled, the carton used to the last drop. That's the theoretical cost.
Reality on a Saturday rush is messier. Milk gets over-steamed and binned. A full jug gets textured for a single 6oz drink because grabbing the small jug felt slower. The grinder gets purged. The first three drinks of the day are dial-in casualties. Someone orders oat and you'd already poured dairy.
None of that is theft. None of it is laziness, really. It's the ordinary friction of making good coffee fast. But it means the milk leaving your fridge is always more than the milk landing in cups, and the gap is invisible because nobody weighs a half-empty jug before tipping it.
This is exactly the same thinking as a stocktake variance investigation, just applied to one fridge. Theoretical usage versus actual usage. The difference is the waste. On milk and coffee the variance is bigger than most operators would ever guess, and unlike a recipe price you can't fix what you've never counted.
Where the milk actually goes
Let's name the leaks. Most bars have all of these to some degree.
- Over-steaming and the leftover half-jug. You texture more than the drink needs, pour the cup, tip the rest. The single biggest source on most bars.
- Steaming a full jug for one drink. Grabbing the big jug because it's nearest. You only needed 180ml and you steamed 500ml.
- Purging and flushing. Milk lines on automatic systems, rinse routines, the splash that never makes a cup.
- Dialling in at open. First jugs of the day while the barista finds the texture. Binned.
- Wrong-order remakes. Misheard "oat", customer changed their mind, latte made as a cappuccino. The wrong drink gets dumped.
- Free staff drinks. Three baristas, two flat whites each across a shift. Real milk, real beans, zero turnover.
- Foam left in the jug. The stiff foam you can't pour cleanly, scraped into the sink between drinks.
Some of this is unavoidable and that's fine. The goal isn't a zero-waste bar, it's a known waste bar. You can't trim what you can't see.
Putting a rough number on it
Realistic UK wholesale dairy in early 2026 sits around £1.10 to £1.40 a litre. Plant milks run higher, often £1.60 to £2.20 a litre for barista oat. Let's work a busy independent bar doing 300 milk drinks a day, using dairy at £1.25/litre to keep it simple.
Here's a rough daily waste picture. Figures are illustrative, but the orders of magnitude hold up on a real bar.
| Waste source | Rough daily volume | Cost/day (at £1.25/L) |
|---|---|---|
| Over-steamed / leftover half-jug | 4.0 L | £5.00 |
| Full jug for one drink | 1.5 L | £1.88 |
| Dial-in at open | 0.5 L | £0.63 |
| Purge / flush / rinse | 0.5 L | £0.63 |
| Wrong-order remakes | 0.8 L | £1.00 |
| Foam left in jug | 0.7 L | £0.88 |
| Free staff drinks (milk portion) | 1.0 L | £1.25 |
| Total wasted milk | ~9 L/day | ~£11.25/day |
Nine litres a day on a 300-drink bar is not extreme. It's roughly a 15% effective overage on the milk those drinks should have used. Call it £11 a day, around £78 a week, and £4,000 a year on dairy alone at one site.
Swing some of that volume to barista oat at £1.90 a litre, which many bars now do for a third or more of drinks, and the same waste volume costs noticeably more. The leak gets more expensive every year as plant milk share grows.
The espresso side: grams dosed but never sold
Milk is the obvious one, but coffee leaks the same way.
Every café bins shots. The dial-in at open before the grind is right. The purge between bags or after a fresh hopper fill. The shot pulled for a drink that gets remade. The single you dose, then knock out because the order changed.
An 18g double at, say, £24/kg of beans is roughly 43p of coffee per dose. Bin a dozen doses a day across dial-in, purges and remakes and that's around £5 a day, £35 a week, near £1,800 a year in coffee that never got sold. Add it to the milk and you're comfortably over £5,000 a year per site in coffee-bar waste that lives entirely outside your recipe maths.
This is the same yield logic that makes or breaks a cold brew on tap programme, where what you actually pour versus what you brewed decides whether the line makes money. On the hot bar the yield leak is just spread across hundreds of small moments instead of one batch.
How to estimate your own waste
You don't need new kit. You need one comparison: milk bought versus milk that should have been used.
- Pick a clean week. Note your opening milk stock, what you take in over the week, and your closing stock. That gives you litres actually consumed.
- Work out theoretical usage from drinks sold. Pull milk-drink counts from your POS. Multiply by the milk each drink should use. A flat white is ~180ml of milk, a latte ~300ml, a cappuccino ~200ml. Sum it up.
- Compare. Actual consumed minus theoretical needed is your waste. Divide by actual to get a waste percentage.
If you bought and consumed 220 litres and your drinks sold only justify 190 litres, that's 30 litres of variance, around 14%. At £1.25 a litre that's £37.50 in a single week from one fridge, before you've touched the coffee side.
Run the same exercise on beans. Kilos used versus doses sold times your dose weight. The gap is your espresso waste.
You won't get it perfect and you don't need to. Even a rough version tells you whether your waste is 5% (fine, leave it) or 18% (worth a morning's attention). That's the whole point: knowing which bar you're running.
Practical fixes that don't slow service
This is the bit that matters. Any fix that adds a second per drink dies on a busy bar within a day. These don't.
Right-size your jugs to the order
The single highest-return change. Get small jugs onto the bar and train the reflex: one 6oz drink, small jug. Two drinks, medium. Match the jug to what's actually on the screen, not the jug that's nearest. You're not slowing anyone down, you're stopping them steaming 500ml for a 180ml drink. Most of the "leftover half-jug" line in that table disappears when the jug fits the order.
Train pour discipline, lightly
Steam what the order needs. Pour the milk you steamed. The aim is texture-to-order, not a heroic effort to never waste a drop. A short briefing and a week of gentle reminders gets most of the gain. This is portion discipline applied to milk, the same principle behind why loose portioning quietly erodes margins even with an honest, careful team.
Track open-bar dial-in waste
Dialling in is non-negotiable, you have to do it. But it's worth knowing the daily cost so it's a deliberate spend, not a surprise. A jotted "dial-in: 4 shots, 1 jug" on the prep sheet for a fortnight tells you whether your open routine is tight or wasteful. Some bars dial in once and lock it; others chase it all morning. Knowing which you are is the win.
Manage staff drinks
Staff drinks are good for morale and you should keep them. Just count them. Two free flat whites per barista per shift across a year is real milk and real beans. Decide it's a perk you're happy to fund, log it roughly, and build it into your cost. The trap isn't giving staff coffee, it's not knowing what the policy costs.
Build wastage into your real coffee cost
This is the honest one. If your true effective milk cost is 15% over your recipe milk cost, your flat white margin is 15% thinner on milk than your sheet claims. Either trim the waste or price for it, but don't keep pretending the recipe number is real.
That's the same correction the full P&L breakdown of a £4 flat white makes for labour and overheads. Waste is just one more line that's real, recurring, and usually missing from the cup cost. Put a sensible wastage allowance into the recipe and your margin stops being fiction.
A realistic target
Don't aim for zero. Aim for known.
A tight high-volume bar might run 6-8% effective milk overage and call that a fair cost of doing business fast. A loose one runs 15-20% and doesn't know it. Closing half that gap, just by right-sizing jugs and tightening dial-in, is usually worth a few thousand pounds a year per site for an afternoon's work and a week of nudging.
The mistake isn't wasting milk. Every café wastes milk. The mistake is wasting it blind, then costing your drinks as if you didn't.
Where Brikly Fits
Waste is a costing problem before it's a behaviour problem. You can't price for something you've never measured.
CostingBrik lets you build a realistic wastage allowance into your true coffee cost, so your flat white margin reflects the milk you actually pour, not the milk in a perfect-world recipe. When dairy or oat prices move on an invoice, every drink reprices automatically, and your wastage assumption travels with it. The number stays honest without you re-doing the maths every quarter. CostingBrik is live today and this is exactly the kind of thing it's built for.
The other half is variance: milk bought versus milk that should have been used, the comparison at the heart of this post. That's stock thinking, and it's where StockBrik is heading as we build it out. The idea is to surface the gap for you, so the 14% overage shows up on a screen instead of staying a hunch. It's forward-looking for now, but the data you're already capturing in CostingBrik and your POS is what will feed it.
You can do the whole exercise this week on a notepad and a calculator. Software's job is to keep it honest after the novelty wears off, week after week, as your oat share creeps up and your effective cost drifts with it.
Ed O'Brien has run Hunters Cake Company for 17 years across cafés in Witney, Burford, and a bakery in Carterton, Oxfordshire. He's building Brikly - modular tools that give independent café owners the same data the big chains have, without the big chain price tag.