Copy a blank coffee shop waste log for milk, remakes and pastries, see filled hypothetical examples, and learn to keep POS voids and comps separate from waste.
By Jared · 2026-11-13 · 9 min read
A coffee shop waste log is a one-page record where staff write down every item that gets thrown away (what it was, how much, why, and who logged it) at the moment it happens. For milk, remade drinks and unsold pastries, it's the only way to see where margin leaks, because Square won't tell you what went into the drain.
Most owners already suspect the problem. The pitcher of steamed milk that never got used, the oat latte remade because someone missed a modifier, the three croissants nobody bought. Each one is small. None of them shows up on a report. This post gives you a log you can copy today, filled examples so your team sees what a good entry looks like, and a 15-minute weekly review that turns the entries into one fix.
A waste log records physical product that left your inventory without becoming a sale: milk poured out, drinks dumped, pastries tossed at close. It's a paper or spreadsheet record that a person fills in on the spot.
It isn't your POS. A void, comp or refund in Square is a money event. A poured-out latte is a product event. Sometimes they happen together, often they don't, and mixing them is how owners end up with numbers nobody trusts. Section five covers the split.
It isn't a blame sheet either. If staff think the log is a disciplinary tool, they stop writing things down and you're back to guessing. Say it plainly on day one: the log finds process problems, not bad baristas.
The rule that makes it work: log at the moment of waste, not from memory at closing. A closing-time reconstruction misses the small stuff, and the small stuff is most of the volume.
Copy this into a spreadsheet, or print it and clip it to a board near the bar. One row per waste event.
| Date | Shop | Item | Quantity | Unit | Reason | Recorder | Cost (optional) |
|---|---|---|---|---|---|---|---|
How to fill each column:
Date: include the time if you can, or at least the shift. It helps you spot patterns later.
Shop: matters as soon as you run more than one location. Leave it in even for a single shop so the sheet is ready when you grow.
Item: the ingredient or product, specific enough to cost. "Oat milk," not "milk." "Almond croissant," not "pastry."
Quantity and unit: pick one unit per item and stick to it. Milk in fluid ounces or milliliters, pastries in each, drinks in each.
Reason: use a short fixed list so entries can be counted later. A starter set: expired, steamed unused, spill, wrong milk, wrong order, quality (customer returned), training, end of day unsold.
Recorder: initials. This is for follow-up questions, not discipline.
Cost (optional): fill it in only if your recipe or ingredient costs are at hand. Quantity and reason are the data that matter. Cost can be added at the weekly review.
These rows are invented for illustration. They show the level of detail that makes a log usable, not typical numbers for any shop.
| Date | Shop | Item | Quantity | Unit | Reason | Recorder | Cost (optional) |
|---|---|---|---|---|---|---|---|
| Mar 4, 9:20 am | Main St | Whole milk | 8 | fl oz | Steamed unused | AB | |
| Mar 4, 9:35 am | Main St | Oat milk | 10 | fl oz | Wrong milk (remake) | CD | |
| Mar 4, 9:35 am | Main St | Espresso | 2 | shots | Wrong milk (remake) | CD | |
| Mar 4, 2:10 pm | Main St | Almond croissant | 1 | each | Dropped | EF | |
| Mar 4, 6:00 pm | Main St | Blueberry muffin | 3 | each | End of day unsold | EF |
What to notice. The milk row records the pour that never reached a customer, in a unit that matches how you buy and cost milk. The remake is split into its ingredients, so each line can be costed. The pastry rows use "each" and a reason code that tells you whether the problem is handling (dropped) or demand (unsold).
The closing muffin entry is the one worth watching. A single night means nothing. The same row three nights running is a bake-quantity decision.
Log a remade drink as ingredients thrown away, once, and never also as a whole drink. That rule prevents double counting.
Here's the trap. A barista steams oat milk for a latte, the customer wanted dairy, and the drink goes in the sink. If you write one row for "latte, 1 each" and another row for "oat milk, 10 fl oz," you've counted the same loss twice. Pick one method and keep it consistent.
Recommended method: log ingredients. Ingredients are what you buy, count and cost, so waste in ingredient units lines up with your inventory counts and your recipe costs. Use the reason column to mark that it was a remake ("wrong milk," "wrong order"), and note the item the drink was. The remade drink that replaces it is a normal sale-side drink and isn't logged at all.
The alternative is logging the finished drink as one row ("oat latte, 1 each, wrong milk") and letting your recipe cost convert it to ingredients at review time. That's faster at the bar and fine for a quick shop, but it only works if the drink has a costed recipe. If you're building those recipes, the latte cost calculator worked example shows how to cost one.
Whichever you choose, write it at the top of the sheet. Two baristas using two methods is worse than either one.
Count the remake once. If a drink is remade twice, that's two waste events with two reasons, not one event and a guess.
Milk deserves its own habit. Track it by type (whole, oat, almond), because the cost and the failure mode differ. Steamed-unused is a pitcher-sizing problem. Wrong milk is a modifier and ticket-readability problem. Expired is an ordering problem. Three different fixes hide inside the word "milk."
A POS void, comp or refund records what happened to the money. The waste log records what happened to the product. Keep them in separate places and match them only when you're investigating.
In Square, the definitions are:
Void: removes an incorrectly entered item before it's made or delivered. The customer isn't charged. Nothing physical was wasted, so it usually doesn't belong in the waste log.
Comp: waives the charge for an item that was made or delivered. The product was used, the revenue was given up. Whether it's waste depends on the case: a goodwill drink that was consumed is a comp, not waste.
Refund: returns money on a payment that was already completed. It reverses all or part of that payment.
Square keeps voids and comps in Dashboard reports under Reports > Payments > Comps or Voids.
A quick test for any event: did product get thrown away? If yes, it goes in the waste log. Did money change hands, get waived or get reversed? If yes, it's a POS event. Many events are both. A customer says the latte tastes wrong, you remake it, and you comp the first one. The POS shows the comp, the log shows the discarded ingredients. Both are true, and neither replaces the other.
Don't use voids and comps as a proxy for waste. A void rate tells you about order-entry errors. It says nothing about milk poured out at 3 pm.
Once a week, total the log by reason, find the biggest repeat cause, and pick one fix. Set a calendar slot, fifteen minutes, same day each week.
Sort by reason. Count rows or total quantities for each reason code. Don't hunt for perfection. You're looking for the reason that shows up most.
Look for repeats. The same item with the same reason across several shifts is a process problem. A one-off dropped croissant isn't.
Add cost where it helps. For the top one or two causes, fill in the optional cost column using your ingredient or recipe costs. This tells you whether the problem is worth fixing this week.
Choose one fix. One. If "steamed unused" dominates, try a smaller pitcher for the morning slow period. If "wrong milk" dominates, change how milk modifiers appear on the ticket and run it through your next team huddle. If end-of-day pastries repeat, trim tomorrow's bake count.
Write it down and check next week. Did the reason shrink? If not, the fix was wrong, so try another.
Don't invent a target. There's no universal acceptable remake rate to chase, and your shop's own week-over-week trend is a better yardstick than anyone's average. If remakes are the repeat cause, the training fix is usually specific: confirm milk back to the customer at the register, and have the person who steams read the ticket modifier aloud before pouring. Pick one and watch the numbers.
The log earns its keep when it connects to three things you already do: counting stock, costing recipes and reading Square sales.
Inventory counts. When a weekly count comes up short on milk, the waste log is the first place to look. Logged waste explains part of the gap. What's left unexplained points to over-pouring, receiving errors or unlogged waste. The coffee shop inventory management workflow walks through the count side.
Recipe costs. A costed recipe tells you what a drink should use. The log tells you what you actually threw away on top of that. Together they show the real cost of a drink, and the gap is margin. For the cost side, see the food cost management guide.
Square. Square holds your sales and your void, comp and refund reports. Use them to cross-check the log, not to replace it.
StoreSync is operations software for Square coffee and restaurant shops that puts inventory, recipe costing, scheduling, checklists, labor reporting and kitchen display in one login, and it syncs with Square. Your counts and recipe costs live there, so the numbers you use to cost a log row sit next to the inventory you reconcile it against. Square is the only POS it supports. The log itself stays a simple sheet or clipboard your team fills out. The payoff is that the costs and counts you check it against are in one place instead of three.
Print the blank log, clip it by the bar, and pick one reason-code list before your next shift. After one week, run the 15-minute review and make exactly one change. Then bring your inventory counts and recipe costs together so the waste you logged has a real dollar figure beside it. If you run Square, book a StoreSync demo at getstoresync.com/demo and see your counts and recipe costs in one login.
Log every pour-out at the moment it happens, by milk type, in one consistent unit such as fluid ounces, with a reason code like steamed unused, wrong milk or expired. Review the totals weekly. StoreSync holds your inventory counts and recipe costs for Square shops, so you can compare the log against what you actually bought.
Pick one method and write it on the sheet. Either log the ingredients thrown away (milk, espresso) with a remake reason, or log the finished drink once and convert it with a costed recipe later. Never log both for the same drink. The replacement drink is a normal sale and is not logged.
No. In Square, a void cancels an item before it is made, a comp waives the charge for something delivered, and a refund returns money on a completed payment. Those are money events. Waste is product thrown away. Some events are both, so record each in its own place.
Yes. A shared sheet or a printed clipboard log works if it has date, shop, item, quantity, unit, reason, recorder and an optional cost column. What matters is logging at the moment of waste. Pair it with inventory counts and recipe costs, such as those in StoreSync, to turn entries into dollars.
Find the repeat cause in your weekly review first. If wrong milk leads, confirm the milk with the customer at the register and have the person steaming read modifiers aloud. If wrong recipe leads, retrain that drink. Make one change per week and check whether the reason count drops.