Brewery Management Software Problems: The 7 That Cost Real Money, and How to Avoid Them
The most expensive failure in brewery software is modelling the batch instead of the transfer. A batch modelled as a linear parent and child tree cannot represent a blend pulled from three foeders and two stainless tanks, cannot carry a transfer in bond from your second facility, and cannot explain where volume went between the cellar log and the packaging count. So the variance gets typed into a yield field nobody reports on. Price it against your own wholesale rate: a 30 barrel batch that goes in at 30 and packages at 28.2 has lost 1.8 barrels, and 200 batches a year at that rate is 360 barrels leaving the building with no data trail telling you whether the cause was a hose connection on one fermenter, one brewer's transfer technique, or a dry hop recipe thirstier than the card claims. That variance is also what your Brewer's Report of Operations is derived from, which turns a data model choice into a compliance exposure with your name signed at the bottom.
Why does modelling the batch instead of the transfer sink so many brewery builds?
Nearly every brewery software project starts with a whiteboard drawing of a batch: recipe in, fermentation, packaging out, a parent with children. It is intuitive, it matches how brewers talk, and it breaks the first time a real cellar does anything interesting. Blend two tanks and the tree has two parents. Split a brite across two package formats and it has two children with different tax treatments. Transfer in bond from your second facility and the batch has an origin outside the tree entirely. Pull from a foeder that has been topped up over eighteen months and the lineage is a proportion, not a parent.
What makes this specific to brewing rather than to manufacturing generally is that the tax event and the physical event are different things. Beer removed for consumption or sale, beer removed without tax for export or research, loss in transfer, beer returned to brewery: those are categories that attach to a movement of liquid, not to a batch. A schema built around batches has to reconstruct them, which is exactly why the reconstruction ends up in Excel and stays there.
The fix is to make the immutable transfer the base object and let batches be a view over it. Every liquid movement records volume, source vessel, destination vessel, timestamp, operator and a tax determination flag. Blends and foeder programmes get a proportional lineage graph, so a single package run attributes back across five source vessels with correct volumes. Transfers in bond between your own facilities generate matched paired records on both sides automatically. Ask any developer to model a blend on a whiteboard in the first meeting: three foeders, two stainless tanks, one package run, correct attribution, and a report line that ties. A team that draws a parent and child tree will be visibly wrong inside two minutes, and that one question separates people who have built for breweries from people who have built inventory apps.
What goes wrong when you migrate batch history and recipes off Ekos?
Migration is where brewery builds lose four to six weeks that nobody planned for, and the cause is almost never the export mechanism. Ekos data comes out through export and its interface, and getting the bytes is the easy part. The trouble starts when you look at what is in them.
Recipes have forked. The version in the system is not the version the head brewer actually uses, because he adjusted the dry hop schedule two seasons ago and updated the card on the wall rather than the software. Vessel names have been reused: the tank called FV7 today is a different vessel from the FV7 that existed before the 2022 expansion, and historic batches point at a name rather than an asset. SKU catalogues carry retired formats and seasonal variants that were entered three different ways. Gyle numbers restart annually in some breweries and run continuously in others, and both conventions may appear in one data set after an acquisition.
Then there is the honest problem: your historic yields were entered as reconstructions rather than records, so importing them produces a trend line that looks authoritative and describes a brewery that never existed.
The fix is to import historic batches as read only records, clearly labelled as legacy, so yield trends survive the move without pretending to a precision they never had. Map vessels to assets with effective dates rather than to names. Reconcile the SKU catalogue with your sales team before import, not after. Anything that fails to map goes to an exception list a human works through, never to a default. And expect to find data quality problems in the old system that you will have to make decisions about, which is a reason to have your controller and head brewer in the migration sessions rather than only your project sponsor.
Why do distributor EDI and taproom POS integrations break after launch?
Distributor integration is the single most reliable source of post launch surprise in this category, and the reason is structural rather than technical. Every distributor's 852 and 867 implementation is effectively its own dialect. Segment usage differs, product identifiers differ, and the same document from two wholesalers requires two mappings. So a build that integrated three distributors successfully does not have a distributor integration, it has three, and the fourth is a new project.
Depletion reporting is worse, because much of it never becomes a document at all. It arrives as a PDF, as a spreadsheet with merged header cells, or as a portal export whose column order changes when the distributor upgrades their system. Nothing errors when that happens. The file imports, the columns are misaligned, and your depletion numbers are quietly wrong for a month.
Taproom point of sale integration with Arryved or Toast is usually smoother, since both offer workable interfaces, but it breaks in its own way: a new modifier or a comped item category appears at the bar, nothing maps it, and taproom volume stops reconciling against packaging.
The fixes are the same shape as anywhere else and they need to be in the plan. Version your mappings per trading partner. Validate on import against expected totals and known SKUs, and reject rather than accept a file whose shape has changed. Monitor for absence of expected files per distributor per period, because a wholesaler who stops sending is invisible until quarter end. Keep a document extraction pipeline for the PDF and spreadsheet reports, flagging ambiguous rows for a human and posting the rest, which at breweries covering six or seven states has given our clients back 12 to 20 hours a month. And price each additional distributor as its own line rather than as a configuration change.
What happens when TTB and state excise reporting is not properly covered?
The Brewer's Report of Operations, TTB Form 5130.9, and the excise tax return that goes with it are legally binding documents with a signature on them. In most breweries they are produced by exporting from the production system, adjusting in Excel for the things the export got wrong, and having the controller or head brewer sign. That means the workbook is the real system of record and the production software is a data source, which is backwards, and it concentrates a federal filing on one person's understanding of one spreadsheet.
Builds go wrong here in two ways. The first is treating the report as a rendering problem rather than a data model problem, which puts you straight back to Excel the moment a blend or a transfer in bond appears. The second is treating state excise as a variant of federal. It is not. Each state has its own rules, categories and filing formats, and a brewery selling into eleven states has eleven separate pieces of work, not one report with a state filter.
The fix begins with the transfer ledger described earlier, because once every movement carries a tax determination flag the report becomes a query rather than an assembly. Beyond that, three things matter. Encode each state's rules once, explicitly, with the state named on the rule so an update is a contained change. Build the audit trail from the first commit rather than adding it when somebody asks, so that a question about where 14.2 barrels went in March is answered by running a query and handing over a trail. And have your controller validate the report logic against real historical filings before go live, comparing period by period against what you actually submitted. If the new system cannot reproduce last year's filings, it is not ready to produce this year's.
Should you build custom or configure what you already own?
Some breweries should not build, and the line is reasonably clear. Under roughly 6,000 barrels a year from one location, with most volume through your own taproom and fewer than about twenty wholesale accounts, Ekos or Beer30 is the right answer and a custom build is a vanity project. Those products have absorbed a decade of brewery specific edge cases you would be paying to rediscover, and the subscription is not what hurts your profit and loss. Buy it, use it properly, and put the capital into stainless.
Even at larger scale, configure before you build. Most breweries have never set up their vessel list to match the actual plant, never cleaned the SKU catalogue, never used the reporting they already pay for, and never asked whether their existing keg module can be made to work with better scanning discipline. It is common to find that a meaningful share of the daily friction is unconfigured rather than unbuildable, and that costs a few weeks of an operations lead rather than six figures.
The signals that configuration has run out are specific. You have a full time or half time person whose actual job is moving data between systems. Your Brewer's Report of Operations is assembled in Excel and one person understands the workbook. Your keg float with distributors is a number you argue about rather than report. You run two or more production sites. You have a barrel or blending programme your current system cannot represent, so it lives in a parallel spreadsheet. Or you are about to sign a distributor that requires EDI and your stack has no answer. Any two of those together and the arithmetic has usually already turned, you simply have not priced the reconciliation labour, which at the 25,000 barrel breweries we have scoped runs 25 to 40 hours a month across production, finance and sales roles.
How do hidden costs get into the quote?
Brewery quotes go wrong in a pattern that is easy to spot once you know it.
The first hidden cost is distributor EDI priced as one item. It is one item per trading partner, and three or more connections push a project toward the upper half of the $150k to $400k full platform band in our delivery experience.
The second is offline first mobile. Coolers, dock areas and tank farms have no signal, and a scanner application that assumes connectivity gets abandoned in month three. Offline first costs more than a plain web application because conflict resolution has to be designed, including what happens when two people scan the same keg on two devices, and it needs testing in a real cooler rather than in an office with the network switched off.
The third is multi state excise, which is separate work per state rather than a configuration option.
The fourth is accounting integration where cost of goods has to roll correctly per batch rather than per invoice. Pushing invoices to QuickBooks is easy. Rolling recipe level cost into a per batch margin that your controller trusts is not.
The fifth is barrel aged and blending programmes, because proportional lineage across foeders is genuinely difficult and the reporting has to survive an audit rather than merely look right.
The sixth is the one nobody lists: cellar crew time during design. If the people who work off the whiteboard are not in the room, you will build something the office likes and the cellar ignores. Ask bidders to price distributors, states, mobile scanning and accounting separately so you can compare on the same list.
What separates a brewery build that works from one that fails?
The builds that work are recognisable before a line of code is written. Ask the team to model a blend, and watch whether they reach for a transfer ledger or a batch tree. Ask what happens when the scanner has no signal, and listen for a local queue with a defined conflict resolution rule rather than a suggestion that the user retries. Ask about state excise experience by name rather than in general.
They ship one thing properly rather than everything partially. The right first release is whichever module is bleeding most: the keg ledger with offline scanning and distributor deposit reconciliation, or the transfer ledger with a compliant report. In our delivery experience a focused first release runs $60k to $130k and ships in 12 to 16 weeks, reading from your existing system by export or interface while the rest of the stack stays put. Breweries that insist on a full platform before anything goes live spend a year building and a year explaining the delay.
They design keg tracking as an event ledger rather than a count, because that is what produces aged float by distributor, dwell time per account and a quarterly deposit reconciliation packet you can send to a distributor's accounts receivable team as a document rather than a request. Breweries we have built this for typically recover the keg module build cost from float recovery and loss reduction inside 18 months.
They involve the cellar crew in design and the controller in report validation, because those two groups decide whether the system is used and whether it is trusted.
And they settle ownership in writing before the first invoice. You should get the repository, the infrastructure accounts and the ability to hire a different firm next year without a negotiation. If ownership is conditional on an ongoing retainer, that is a lock in arrangement rather than a build.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- 48% of private companies cite integration with legacy systems or technical debt as a top obstacle to realizing the full value of their digital and AI investments (behind data quality/availability at 72% and gaps in AI fluency or technology talent/leadership at 53%). Source: Deloitte (2026) →
- Large companies globally have captured, on average, only 31% of the expected revenue lift and 25% of the expected cost savings from their digital and AI transformations - a significant gap between expected and realized value. Source: McKinsey & Company (2023) →
- Gallup reports global employee engagement fell to 20% in 2025 (its lowest since 2020, down from a 2022-2023 peak of 23%), and estimates low engagement costs the world economy an estimated $10 trillion in lost productivity, or 9% of global GDP. (Note: this figure appears in Gallup's evergreen State of the Global Workplace page, currently reflecting the 2026 edition reporting on 2025 data.). Source: Gallup (2025) →
- OECD research finds that digitalisation offers SMEs opportunities to improve performance, spur innovation, enhance productivity and compete more evenly with larger firms; it reports that increased use of online platforms produced significant multi-factor productivity gains in SME-heavy sectors such as hospitality and retail, while smaller firms lag in adoption due to skills, resource and financing gaps. Source: OECD (2021) →
Zara works as a senior strategist across APAC, sitting between what a client says they want and what the build should actually be. She pressure tests business cases, priorities and sequencing before engineering time gets committed. Read her for the thinking that happens before a project brief is written.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
Our yields never reconcile between the cellar log and packaging. What is the underlying cause?
The system is almost certainly recording a batch outcome rather than every liquid movement, so the difference between what went in and what came out has nowhere to live except a yield field. Model each transfer as an immutable event with volume, source vessel, destination vessel, timestamp, operator and tax determination flag, and the variance becomes attributable to a specific movement on a specific vessel. That is what lets you tell the difference between a hose connection problem on one fermenter, a transfer technique issue with one brewer, and a recipe that is thirstier than the card claims.
Why do keg scanning applications keep getting abandoned by our crew?
Because they assume connectivity that does not exist. Walk in coolers, dock areas and tank farms have no signal, so a scanner that waits on a server call fails at exactly the moment the crew needs it and they revert to a clipboard within weeks. Offline first with a local queue, a clear offline indicator and a defined rule for what happens when two people scan the same keg on two devices is the only design that survives. Test it in a real cooler before go live rather than in an office with the network turned off.
Can our Brewer's Report of Operations actually be generated rather than assembled in Excel?
Yes, provided the underlying model is a transfer ledger rather than a batch tree. Once every liquid movement carries a tax determination flag, the report becomes a query over that ledger and transfers in bond between your own facilities generate matched records on both sides automatically. The validation step matters as much as the build: have your controller reproduce several real historical filings from the new system before go live, period by period. If it cannot reproduce last year, it is not ready for this year.
How should we handle a barrel aged or blending programme that our current system cannot represent?
With a proportional lineage graph rather than a parent and child relationship, so a package run pulled from three foeders and two stainless tanks attributes back to each source with correct volumes. Foeders that are topped up over months make this unavoidable, because the contents are a proportion rather than a batch. This is the single best test question for a prospective developer, since a team that has not built for breweries will draw a tree and be visibly wrong within two minutes of starting.
How much of our Ekos history should we migrate?
Batch records, recipes, the SKU catalogue and the vessel list, with historic batches imported as clearly labelled read only records so yield trends survive without implying a precision the old data never had. Map vessels to assets with effective dates rather than to names, because a tank name reused after an expansion silently attaches old batches to new equipment. Budget four to six weeks for migration and reconciliation, and put your controller and head brewer in those sessions, because most of the decisions are theirs rather than the developer's.
We are adding our fourth distributor. Why is the integration cost not going down?
Because each distributor's 852 and 867 implementation is effectively its own dialect, with different segment usage and product identifiers, so every connection is real mapping work rather than a configuration change. Budget it per trading partner. Where a distributor sends PDF or spreadsheet depletion reports instead, a document extraction pipeline that maps columns to your SKU and account model and flags ambiguous rows for a human is a cheaper interim step, and at breweries covering six or seven states it has given our clients back 12 to 20 hours a month.
We operate two facilities and our numbers never consolidate. What needs to change?
Site has to be a dimension in one data model rather than a tenant boundary with two separate accounts. A batch carries its origin site, its cost roll includes that site's actual overhead allocation, and a transfer in bond is one atomic event that debits and credits both facilities with matched records. Consolidated production, yield and cost of goods reporting then works because there was never a merge step, and permissions can still be per site so a cellar lead at one location cannot close a batch at the other.
Where does AI genuinely help in a brewery, and where is it just marketing?
It earns its cost in two places: extracting distributor depletion data from PDFs and spreadsheets whose format changes without warning, and forecasting demand per SKU from 24 months of depletion history to drive the brew schedule and raw material lock in. The forecast will not be right, but it beats instinct on your eleventh SKU and frees the head brewer to override it on the three that matter. It does not fix tank scheduling constraints or keg float, both of which need a correct data model first.
What questions should I ask a development agency on the first call?
Why do companies replace NetSuite with custom software?
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
What does it cost to maintain a custom ERP each year?
How do we migrate years of data from our old system without losing anything?
Will an app built for 10 users survive growing to 500?
How long does it take to build a custom web or mobile app from scratch?
How do I vet an agency for an ERP project?
How many developers does it take to build an ERP?
Can I start with one ERP module instead of the full system?
How much does a custom ERP cost for a small business?
Who can build a custom ERP software system?
Digital Heroes builds custom ERP software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other ERP software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.