The average café wastes 15–20% of the milk it purchases — that's $300–600 per month going down the drain for a typical independent coffee shop. Most owners never measure it because milk waste is invisible: it's spread across hundreds of small over-pours, expired cartons, and steaming mistakes every day. Here's how to find your actual waste number with a simple bucket test, plus five fixes ranked by dollar impact that you can start this week.

Nobody tracks it. Not because they don't care, but because the waste is invisible — spread across hundreds of small moments every day that never make it onto any report.

Barista trainer Scott Rao once ran a simple experiment: he placed a bucket next to the espresso machine and had staff dump all unused steamed milk into it for a full day. The result was $15 worth of milk in a single shift — roughly $5,000 a year from one café.

Most owners have never run that test. This post walks through where café milk waste actually comes from, how to measure yours, and what the real cost looks like at different shop sizes.

The four ways cafés lose milk

Milk pitcher next to espresso machine

Milk waste isn't one problem. It's four separate problems happening at the same time, which is why it's so hard to see in aggregate.

1. Pitcher waste — smaller than you'd think, but constant

A standard steaming pitcher holds about 20 ounces. Most baristas pour 12 to 15 ounces per use — enough for a latte or cappuccino with some room to work the foam. That leaves 2 to 4 ounces of unused capacity, but the real waste comes from what's left in the pitcher after pouring: typically 1 to 3 ounces of steamed milk that can't be reused.

Once milk has been heated, resteaming it breaks down the proteins and degrades the texture. From a food safety standpoint, it shouldn't sit out or go back in the fridge. It gets dumped.

One to three ounces sounds trivial. But at a café serving 200 milk-based drinks a day, even 2 ounces of leftover per drink adds up to 400 ounces — over 3 gallons — wasted daily. At $4 to $5 per gallon wholesale, that's $12 to $15 a day, or $360 to $450 a month. Just from what's left in the pitcher.

This is exactly the waste Scott Rao's bucket test captures, and it's why the number shocks people when they finally measure it.

2. Dairy spoilage — the ordering prediction problem

Fresh whole milk lasts about 10 days refrigerated. That sounds like plenty of runway until you think about how ordering actually works.

A shop that orders Monday for Thursday delivery has to predict four days of consumption. Over-order by a gallon or two heading into a weekend you expect to be busy — then it rains and foot traffic drops 30% — and you're left with milk that won't survive to the next delivery.

This is the tension every café owner knows: order too much and it spoils, order too little and you're running to the grocery store at a 30 to 50 percent markup. The margin for error is one or two gallons in either direction, and weather alone can swing daily consumption by 20 to 30 percent.

A shop that tosses two to three gallons of expired dairy per week is losing $8 to $15 a week — roughly $35 to $60 a month. Not catastrophic on its own, but it adds up across months and seasons.

3. Alt-milk waste — a different problem than you'd expect

Here's where the conventional wisdom is wrong. Most alternative milks — oat, almond, soy, coconut — are shelf-stable in their sealed packaging. A case of oat milk cartons can sit in dry storage for months. So spoilage in the dairy sense isn't the main issue.

The waste problem with alt-milks is different: it's the open carton.

Once you crack open a carton of oat milk, you've got about 7 to 10 days before it turns. And at a café where oat milk might represent 25 to 30 percent of milk-based drinks, consumption of any single alt-milk variety is lower and less predictable than dairy. If you carry four options — oat, almond, soy, coconut — the slow movers (coconut, soy) might take three or four days to get through a single open carton. If two baristas each open a fresh carton on the same shift because nobody checked the fridge, you've got double the open inventory and half the time to use it.

The cost per ounce is higher too. Oat milk runs 50 to 80 percent more than dairy per gallon equivalent in most US markets. Almond is similar. Every wasted ounce of alt-milk costs more than the same ounce of dairy.

And as more shops drop alt-milk surcharges to match customer expectations — several major chains eliminated theirs in 2025 — the margin pressure gets tighter. You're absorbing the higher ingredient cost without passing it to the customer, which means waste hits your margin harder.

4. Remakes, training, and the invisible drip

Every remade drink costs a full portion of milk. Common triggers: wrong milk type (dairy when the customer ordered oat), temperature complaints, latte art that didn't land on a drink the customer is watching you make.

During a new barista's first two weeks, remakes can run 5 to 10 per shift. At $0.30 to $0.50 of milk per drink, that's $2 to $5 a day per trainee. Small in isolation, but shops with regular turnover absorb this cost continuously.

Then there's the truly invisible waste: the ounce left in the bottom of each carton that gets tossed, the open carton that sat out during a rush and gets dumped at end of shift, the half-gallon that gets knocked over reaching for something behind it. None of these show up on any report.

What this actually costs at your scale

Invisible milk waste cost in a café

Here's a conservative way to estimate your total milk waste. These ranges assume a moderate waste rate — not worst-case, not best-in-class.

Small café (under 150 drinks/day): Monthly milk spend of roughly $400 to $700. Pitcher waste, spoilage, and remakes combined likely run $80 to $150 per month, or $960 to $1,800 per year.

Medium café (150–300 drinks/day): Monthly milk spend of roughly $700 to $1,200. Total waste likely runs $140 to $280 per month, or $1,680 to $3,360 per year.

Busy café (over 300 drinks/day): Monthly milk spend exceeds $1,500. Total waste can easily reach $300 or more per month — $3,600+ per year.

For context: milk is typically the second-largest ingredient cost after coffee beans, representing 35 to 40 percent of total ingredient spend at most cafés. A meaningful waste rate on your largest ingredient category isn't a rounding error — it's a structural leak in your P&L.

How to measure yours (the bucket test)

You don't need software or a spreadsheet to get your number. You need a bucket and one shift.

Step 1: Place an empty container — a food-safe bucket or a large pitcher — next to the espresso machine at the start of a shift.

Step 2: Every time a barista has leftover steamed milk, they pour it into the bucket instead of down the drain. Every time an open carton gets tossed, it goes in the bucket. Every remake, in the bucket.

Step 3: At the end of the shift, measure what's in the bucket in ounces. Divide by 128 to get gallons. Multiply by your cost per gallon.

Step 4: Run this for three to five days to get an average. Include at least one slow day and one busy day.

The number will be higher than you expect. It always is. When Scott Rao ran this test, his café was wasting $15 worth of milk per day — and he's a barista trainer who literally wrote books on espresso technique. If his shop was losing $15 a day, yours almost certainly is too.

Once you have your daily waste number, multiply by 30 for monthly, 365 for annual. That's the cost of doing nothing.

Five fixes ranked by impact

1. Right-size your pitchers to drink size. If your baristas grab a 20-ounce pitcher for every single drink, they're heating more milk than they need for anything smaller than a large latte. Having 12-ounce pitchers available for single small drinks means less leftover per pour. The upfront cost is under $30 for a set. Some shops report saving over $1,000 a year from this change alone.

2. Count milk separately, more often. Full inventory counts happen weekly or monthly. Milk moves too fast for that. A 90-second milk-only count every two days catches expiring dairy before it spoils, reveals how fast you're actually going through each type, and prevents the "two open cartons" problem with alt-milks.

3. Track usage against sales, not just reorder levels. Knowing you ordered 24 gallons of milk tells you nothing about waste. Knowing you sold 380 milk drinks and should have used about 20 gallons based on your recipes — that tells you the other 4 gallons were waste. This gap between "purchased" and "expected usage based on POS sales" is the only metric that reveals true waste, and almost nobody calculates it because it requires connecting inventory data to sales data.

4. FIFO by stacking, not labeling. First in, first out only works if it happens automatically. The simplest system: when a new delivery arrives, put the new cartons at the back of the fridge and push the older ones to the front. Staff naturally grab what's in front. No Sharpie dates, no labels, no system to remember — just a restocking habit. The most common spoilage scenario is a newer carton getting grabbed first because it's in front, while an older one hides in the back and quietly expires. Stacking new behind old eliminates this by default.

5. Check the weather before you order. This sounds obvious, but most ordering happens on autopilot: same quantities, same schedule, every week. A rainy forecast should trigger a smaller milk order. A holiday weekend might need 20% more. Adjusting by even one or two gallons based on expected foot traffic prevents the most common spoilage scenario — over-ordering into a slow week.

Why this stays invisible

The reason milk waste persists isn't that owners are careless. It's that the standard tools don't surface it.

Your POS knows what you sold. Your supplier invoices know what you bought. Your count sheet knows what's on the shelf right now. But nothing connects these three data sources to calculate the gap.

Spreadsheets can do it in theory, but manually reconciling purchases, sales, and counts across different milk types every week is tedious enough that the habit doesn't survive past week two.

This is the problem inventory software solves — not by changing how you run your café, but by connecting the data you already generate and surfacing the waste number automatically. When your system tells you "you bought 24 gallons, your sales imply 20 gallons of usage, and you counted 1 gallon on the shelf — where did the other 3 gallons go?" — that's when waste becomes actionable instead of invisible.

QuickStok connects your purchase history, POS sales, and inventory counts to surface exactly these gaps. No contracts, no setup fees — start free and see where your milk is actually going.

QuickStok cost tracking dashboard