Hey everyone! Happy Friday, I hope you all are excited for the weekend.
Counting inventory is straightforward. What happens when the count doesn't match the ledger? Too many operations simply adjust the number and move on. That leaves root cause unaddressed and invites repeat errors. Here's a defensible workflow.
Physical inventory counts that aren't tied to a structured variance process can look accurate until an audit or tax filing reveals otherwise. Many breweries do monthly or quarterly full counts but lack a clear protocol for when the physical count doesn't match the ledger. Without that protocol, variances get "adjusted away" without root cause, and the same errors recur. Many breweries conduct monthly or quarterly full counts, but few have a clear protocol for what to do when the physical count does not match the ledger. Without that protocol, variances get “adjusted away” without root cause, and the same errors recur.
The Problem: Counts Without Investigation
A cycle count or physical inventory is only useful if variances trigger investigation. When a brewery counts 47 half-barrel kegs of IPA and the system shows 52, the typical response is to adjust the ledger to 47 and move on. That adjustment may satisfy a tax preparer in the short term, but it does not explain where five kegs went. Were they untracked taproom pours? A transfer that was never logged? Packaging waste that was not recorded? Without answering that question, the next count will likely produce another unexplained variance.
Designing a Cycle Count Schedule
The goal is to count frequently enough that variances are small and traceable, without consuming excessive labor. A few principles:
Prioritize high-value and high-velocity items. Grain, hops, finished beer, and packaged goods should be counted more often than low-cost supplies. Many breweries count finished kegs weekly and raw ingredients bi-weekly.
Spread counts across the period. A full count at month-end concentrates labor and pressure. Rolling cycle counts—counting a subset of items each week—reduces the burden and surfaces issues earlier.
Count in context of movement. Counting grain immediately after a brew day, or finished beer right after packaging, increases the chance that recent movements are fresh in mind if a variance appears.
The Variance Investigation Workflow
When a count does not match the ledger, the adjustment should not be the first step. The first step is documentation:
1. Record the variance: Note the item, location, ledger quantity, physical quantity, and the date and time of the count.
2. Check recent movements: Review transfers, packaging runs, depletions, and adjustments in the days leading up to the count. Look for unlogged events.
3. Assign a root cause: If you find the source—an untracked transfer, a spill, a packaging run that was not logged—document it and apply the correct transaction type. If you cannot find the source, use an “unexplained variance” category and flag it for process improvement.
4. Adjust the ledger: Once the root cause is documented, make the adjustment with a reason code. Avoid generic “inventory adjustment” codes that provide no audit trail.
Building an Audit Trail
The TTB and auditors do not expect zero variance. They expect that variances are documented and that repeated patterns are addressed. A brewery that can show “we had a 3-keg variance in January, we traced it to an unlogged taproom promo, we logged it correctly and trained the taproom manager” is in a stronger position than one that simply adjusted the number with no record.
Cycle counts and variance investigation are not separate from daily operations. They are the feedback loop that validates that your production and depletion logging is accurate. When you treat them that way, your inventory numbers become defensible.
---
How BrewLedger Supports Cycle Counts
BrewLedger tracks items by location and records every movement as a ledger entry. When physical counts reveal variances, you can review the movement history for that item and location, document the root cause, and apply adjustments with clear reason codes. See how it works when you are ready.

