Most breweries close their books once a month, look at a COGS number that feels roughly right, and move on. The problem is that "roughly right" hides a lot. A tank that fermented low. A packaging run that yielded 8% short. Malt sitting in a silo that got recounted three times and never reconciled. None of that shows up as a single dramatic error. It shows up as a slow, quiet drift between what your P&L says you spent to make beer and what you actually spent.
The breweries that get their margins under control aren't the ones with fancier accounting software. They're the ones who treat COGS as a continuous data flow instead of a month-end scramble. Batch record feeds inventory. Inventory feeds valuation. Valuation feeds the monthly adjustment. And when a number looks wrong, a KPI flags it before it becomes a journal entry nobody can explain.
This is a walkthrough of how that whole chain actually works when it's built right — and the specific places it tends to break.
Chain: batch to valuation
The chain: batch record → inventory → valuation → COGS
Worth mapping the flow before getting into where it falls apart, because most people have never seen it drawn out end to end.
A batch starts as a recipe with a standard cost — grain, hops, yeast, adjuncts, plus the allocated conversion costs (utilities, labor, CO2, filtration media). When you brew, the batch record captures what actually went in: the real grain weights, the actual hop additions, the yeast pitch. That's your first divergence point from standard.
Then the beer moves. Fermentation loss, transfer loss, filtration loss, and finally packaging yield. Each step consumes inventory and produces either work-in-process or finished goods. When you package, raw and WIP inventory converts into finished SKUs at a per-unit cost that rolls up everything the batch consumed divided by the sellable units that came out the other end.
When finished goods sell, that cost leaves inventory and lands on the P&L as COGS. The monthly adjustment is where you reconcile the standard cost you've been booking against the actual cost the batches incurred, and push the difference into variance accounts.
The part most small breweries miss: if any link in that chain runs on a different clock, the whole thing decouples. Production logs batches weekly. Inventory gets counted monthly. Accounting closes on the 5th. When those cadences don't line up, you get a COGS number built from three different snapshots of reality.
Why this breaks
Why this breaks across almost every brewery
Take control of your brewery’s workflow.
Beeryly helps you schedule batches, track inventory, and monitor sales with ease.
- Production timeline management
- Inventory tracking & alerts
- Sales & distribution monitoring
No credit card required
The failure isn't usually incompetence. It's that the data lives in disconnected places and each handoff loses fidelity.
A typical scenario: the brewer writes actual grain weights on a clipboard. Someone enters the batch into a spreadsheet days later and rounds to the recipe standard because the handwriting was bad. The taproom sells kegs but the depletion doesn't hit inventory until the distributor report arrives. The bookkeeper values ending inventory off a physical count that happened on a Tuesday when two tanks were mid-transfer and nobody was sure whether to count that beer as WIP or finished.
By the time COGS gets calculated, it's an average of guesses. And because it's an average, small errors cancel out just enough to look plausible — which is exactly why they never get caught.
What shows up repeatedly across production operations is that the drift compounds in one direction. Yield loss almost always gets under-recorded because nobody wants to write down that a batch came up short. So booked inventory stays high, COGS stays artificially low, and margins look better than they are — until a year-end physical count wipes out a chunk of inventory value in one ugly adjustment. That's the "surprise shrink" write-off that shows up every January in breweries that don't reconcile continuously.
Scale effects
What actually changes at scale
At 1,500 barrels a year with four or five SKUs, you can almost get away with month-end math. The volume is low enough that a person can hold the whole picture in their head and catch the obvious errors.
-
The same base beer packaged into cans, kegs, and bombers, each with different material costs and yields
-
Shared raw materials allocated across overlapping batches
-
WIP sitting in tanks for wildly different durations
-
Transfer costs between your production facility and a satellite taproom
-
Co-packed volume where someone else's batch record is now part of your COGS
Every one of those adds a variance source. And variance sources don't add linearly — they interact. A grain price change plus a yield miss plus a packaging changeover overrun on the same SKU can stack into a per-barrel cost that's 15–20% off standard, and if you only look at the blended monthly number you'll never know which of the three caused it.
This is where the connection to your broader cost picture matters. If you've already built out per-SKU cost-to-serve, continuous COGS is what keeps that framework honest month over month instead of being a one-time analysis that goes stale.
Variance categories table
Variance categories that actually mean something
Dumping every discrepancy into a single "COGS variance" line is useless. You can't fix what you can't name. The point of categorizing variance is that each category points to a different operational owner and a different intervention.
Here's the breakdown worth building your chart of accounts around:
| Variance category | What it measures | Usual root cause | Who owns the fix |
|---|---|---|---|
| Material price variance | Actual purchase price vs standard | Supplier increases, spot buys, small-lot penalties | Purchasing |
| Material usage variance | Actual quantity used vs recipe | Over-hopping, spillage, miscalibrated scales | Brewhouse |
| Yield variance | Sellable units vs theoretical | Fermentation loss, transfer loss, trub, foaming | Cellar / packaging |
| Labor/conversion variance | Actual conversion cost vs allocated | Slow changeovers, overtime, low throughput | Production management |
| Packaging variance | Package material used vs standard | Can seaming rejects, label waste, fill overpour | Packaging |
| Inventory adjustment | Physical count vs book | Theft, breakage, miscounts, expired stock | Whoever owns the count |
One thing worth being direct about: material price variance is not a production problem, and treating it like one is a common mistake. When purchasing negotiates a bad hop contract, no amount of brewhouse discipline fixes it. Separating price from usage is the single most valuable split you can make, because it stops the brewer from getting blamed for a purchasing decision — and vice versa.
Journal templates
Ready-to-use journal entry templates
These are the entries that carry the flow from production into the P&L. Adjust account names to your chart, but the structure holds.
1. Booking a completed batch to WIP (at standard):
``
Dr Work-in-Process Inventory (standard batch cost)
Cr Raw Materials Inventory (grain, hops, yeast at standard)
Cr Conversion Cost Applied (allocated labor/utilities)
``
2. Recording material usage variance at batch close:
``
Dr Material Usage Variance (if used > standard)
Cr Raw Materials Inventory
``
(reverse the sides if you used less than standard)
3. Packaging WIP into finished goods, capturing yield variance:
``
Dr Finished Goods Inventory (actual sellable units × standard cost)
Dr Yield Variance (short units × standard cost)
Cr Work-in-Process Inventory (full batch WIP)
Cr Packaging Materials (cans, labels, etc.)
``
4. Monthly COGS recognition on sales:
``
Dr Cost of Goods Sold (units sold × standard cost)
Cr Finished Goods Inventory
``
5. Month-end variance clearing to COGS:
``
Dr Cost of Goods Sold (net unfavorable variance)
Cr Material Price Variance
Cr Yield Variance
Cr Packaging Variance
``
(flip if net favorable)
The reason to book variances into separate accounts during the month and only sweep them to COGS at close is that it preserves the diagnostic trail. If your COGS is $18k over budget, you can open the variance accounts and see it was $11k yield, $5k packaging, $2k price — instead of staring at a single number with no story attached.
KPI triggers
The KPI triggers that force an intervention
A continuous COGS system is only useful if it tells you to act. The whole point is to catch drift while it's still cheap to fix. Wire specific thresholds to specific responses. When a metric crosses the line, someone doesn't just get a notification — a defined action kicks off.
-
Yield variance on a single batch exceeds 5% → cellar lead reviews transfer and packaging logs for that batch within 48 hours, before the next brew of that recipe.
-
Material usage variance on a recipe trends unfavorable three batches running → recipe standard gets re-examined; either the recipe cost is wrong or there's a process leak.
-
Packaging waste exceeds 3% on a run → packaging supervisor logs a changeover/reject cause code before the line runs again.
-
Book-to-physical inventory gap over 2% on any raw material → cycle count that SKU weekly until it's back inside tolerance.
-
Blended COGS per barrel moves more than ~8% month over month with no known input price change → full variance walk before the books close, not after.
The pattern that separates breweries who control margin from those who don't is when the trigger fires. Firing at month-end tells you what already happened. Firing at batch close lets you fix the next batch. These triggers connect directly to the broader set of operational KPIs that predict production problems — COGS variance is a lagging financial symptom of a leading operational cause, and the two dashboards should talk to each other.
Real-world example
A real scenario
A production brewery running around 4,200 barrels a year, three core SKUs plus rotating seasonals, was closing books monthly and consistently landing COGS within a percent or two of budget. Looked healthy. Then their year-end physical count forced a write-down of roughly $22k in inventory value they'd been carrying on the books that wasn't actually there.
When they dug in, the culprit was yield variance that had never been recorded batch by batch. Packaging was running about 6–7% short on their flagship IPA due to a fill overpour and can-seamer reject rate nobody was tracking. Every month, book inventory stayed high, COGS stayed low, and the P&L looked a little better than reality — until the count caught up all at once.
They restructured the flow: batch records captured actual weights same-shift, packaging logged sellable units and rejects per run, and a yield-variance trigger fired at 5%. Within a few months the overpour got dialed in and the seamer got serviced. The write-down the following year was under $4k, and — more useful — their monthly COGS finally matched what the count confirmed. The margin they'd been reporting became the margin they actually had.
Nothing about that fix was accounting wizardry. It was closing the loop between what happened on the floor and what hit the books, fast enough to matter.
When to implement
When continuous COGS is worth it — and when it isn't
When it makes sense: You're past roughly 2,500–3,000 barrels, running multiple SKUs and package formats, and your month-end close feels like reconstruction instead of confirmation. If you can't explain a COGS swing without a two-day investigation, you need the continuous flow.
When it's overkill: A nano operation doing one or two beers at low volume can run standard costing with a solid monthly count and be fine. Building variance accounts and batch-level triggers for 800 barrels a year is effort spent where the money isn't.
Who should not attempt this yet: If your batch records are still incomplete or arriving days late, don't layer a continuous COGS system on top of unreliable inputs. Garbage-in gets you precise, confident, wrong numbers — which is worse than knowing your data is rough. Fix the record capture discipline first. The valuation math only works when the batch data underneath it is trustworthy and timely.
Operational workflow
The workflow that ties it together
Practically, the operating rhythm looks like this. Each brew day, actuals go into the batch record before the crew leaves — real weights, real additions, nothing rounded to standard. At packaging, the run logs sellable units and rejects, and the system converts WIP to finished goods, dropping the yield variance into its own account automatically. Purchasing bookings hit price variance as receipts post. Throughout the month, KPI triggers watch the variance accounts and cycle counts, flagging the batches and SKUs that fall outside tolerance so someone investigates while the cause is still fresh.
Each brew day, actuals go into the batch record before the crew leaves — real weights, real additions, nothing rounded to standard.
Here's a simple diagram of that flow.
By month-end, close is no longer a reconstruction. It's a confirmation. The variance accounts already hold the full story — categorized, owned, and mostly already investigated. Sweeping them into COGS is the last step of a process that ran all month, not a frantic guess made under a deadline.
This is where a connected inventory and production platform earns its keep — not by doing the accounting, but by keeping the batch-to-valuation chain on a single clock so the numbers don't decouple in the first place. The value isn't automation for its own sake. It's that the floor data and the financial data finally describe the same brewery.
The takeaway
Continuous COGS isn't about closing faster. It's about closing truer. When batch records feed inventory in real time, when variances live in named accounts, and when specific triggers force intervention before drift compounds, your P&L stops being a monthly surprise and becomes a control panel. You'll know which SKU is leaking margin, which supplier is quietly raising your costs, and which process step is eating your yield — while you can still do something about it. Most breweries discover they were never as profitable as their old COGS number claimed. The good news is that finding out is the first step to actually fixing it.
Ready to elevate your brewery operations?
Join 500+ craft breweries using Beeryly to increase production efficiency, reduce waste, and grow sales.