Alcohol Licence Reporting — Three Dates a Year and Data You Already Have in the ERP
Three dates run the compliance year in alcohol distribution: 31 January, 31 May, 30 September. Two of them are just payments. The first carries a number you have to produce, sign and stand behind — the value of everything you sold last year, split by licence category, gross.
Miss that date by more than 30 days and the licence expires by operation of law. Not suspended, not fined into submission. Expired, with a six-month wait before you can even apply for a new one. Six months without a licence isn't a compliance problem for a wholesaler. It's the end of the business.
And yet the figure carrying all that weight usually gets assembled in the last week of January, in a spreadsheet, by someone exporting the sales register and hoping the product groups line up with the licence categories.
They rarely do. That gap is what this article is about.
Two obligations that keep getting confused
Wholesalers carry two obligations that sound alike and behave nothing alike.
Your own permit covers wholesale trading. Annual fee tied to the sales value you declare, with separate rules for drinks up to 18% and above it. The amounts and thresholds differ from the retail ones, so read your own permit for the figure that applies to you — not a blog post, mine included.
Your customers' retail licences are a separate problem, and policing them is your job, not theirs. Every shop, bar and restaurant you ship to holds a licence from its municipality in one or more of three categories: up to 4.5% and beer, wine from 4.5% to 18%, and everything above 18%. Ship to a customer whose licence has lapsed, or send vodka to someone licensed only for beer, and the exposure lands on you. I went through the mechanics in the piece on what a B2B portal for alcohol distributors has to enforce.
Learn the retail thresholds anyway, because your customers ask about them constantly. Below 37,500 PLN of annual sales in the beer or wine categories, the fee is the base amount — 525 PLN each. Above it, 1.4% of the declared value. For spirits the threshold is 77,000 PLN, the rate above it 2.7%, against a 2,100 PLN base. A retailer who crosses a threshold in November and notices in January gets a bill several times bigger than the one they budgeted for.
Same reporting calendar for both obligations. Same failure mode, too.
Where the number really comes from
The statement asks for sales value by licence category. Your ERP stores sales by product index. January disappears in the gap between those two sentences.
Closing it needs three things to be true.
Every SKU carries a category. The assignment follows from alcohol content and CN code, and it belongs on the product record — not in the head of whoever does the reporting. In every wholesaler I've looked at, the older catalogue is tagged correctly and the newest thirty or forty indexes aren't, because nobody stops to add a licence category when they're setting up a product in a hurry.
The value is gross. VAT and excise included. Report net revenue and you understate the figure; if that understatement crosses a threshold, the correction arrives with interest attached.
Returns and corrections are applied. Credit notes, cancelled deliveries, goods sent back in February against a December invoice. Each is defensible on its own. Together they're why the spreadsheet and the ledger disagree by a few thousand złoty and somebody loses a day working out where.
None of this is difficult. All of it is tedious, undocumented, and done once a year by someone who did it differently last time.
What actually gets automated
Start with what an agent won't do: it won't file anything. What it does is kill the January archaeology by keeping the answer current all year.
In practice, on read-only access to the ERP, running nightly:
A running total per category. At any point in the year you can see what the declared value would be if the year ended today — per category, gross, reconciled against the sales ledger. The January number stops being a discovery and becomes confirmation of something you've watched for twelve months.
Untagged SKUs flagged on first sale. The day a new index sells without a licence category, it lands in a message instead of surfacing in a spreadsheet eleven months later. Highest-value check in the whole setup, because this is the one that breaks the reconciliation.
Threshold proximity warnings. For your own permit, and — if you offer it as a service — for customers closing in on their retail thresholds. Tell a customer in October that they're about to cross 77,000 PLN and they'll remember where the warning came from.
Deadline reminders at 30 and 7 days before each of the three dates, addressed to a named person, with the current figure attached.
Technically there's nothing exotic here. It's the same read-only ERP integration pattern I've described for agents that post invoices into enova365, pointed at the sales register instead of the purchase buffer. In the wholesale deployment I documented recently, that same connection already answers questions about receivables and VAT in chat. Licence categories are one more query against data that's already flowing.
On the customer side, a deadline falls every week
Your own reporting has three dates a year. Customer licences expire continuously — a handful every month across a few hundred accounts, each one a small legal exposure from the day after it lapses.
This part automates cleanly because it's pure bookkeeping: an expiry date on each account, a check before order confirmation, a comparison between what's licensed and what's in the basket, a log of every decision. Blocking orders should be a deliberate choice, never the default. Most wholesalers prefer a flag to the sales rep 30 days out, because hard-blocking a good customer's Friday order costs more than the risk it removes in that window.
The log is the part that matters. When someone asks who authorised a shipment against a lapsed licence, "the system flagged it and Marek approved it on 4 March at 14:20" is an answer. "We thought it was still valid" isn't.
What stays with a person
Three things, no exceptions.
The signature on the statement. It carries personal liability, and no software gets near it.
Classification judgement calls. Flavoured products sitting near a category boundary, promotional bundles mixing categories, samples. The agent surfaces them; a person decides.
Contact with the authority. Questions to the municipality or the marshal's office get answered by someone who can hold an actual conversation about your situation.
Same division I apply to every accounting agent: the machine prepares, a person decides. That's why accountants sign off on these deployments instead of fighting them, and it's why I treat the boundary as non-negotiable — more on that in the overview of AI agents for business.
Where to start
Three steps, in this order. None of them needs a project.
- Audit your SKU tagging. Export the catalogue, filter for anything without a licence category, fix it. A morning's work that immunises next January.
- Build the running total. One query against the sales register, aggregated by category, gross, sent monthly to whoever signs the statement.
- Put customer licence expiry dates where a machine can read them. Not a binder. Not a folder on a shared drive. A field on the customer record.
Do those three and the automation afterwards is a formality. Most of the work in these projects goes into making the underlying data honest — worth doing whether or not an agent ever reads it.
Thinking about this for your wholesale business? Book a free 30-minute audit — we go through your catalogue tagging, your ERP setup and your reporting calendar, and you leave knowing exactly which part to automate first.
Let’s talk about your project
Free 30-minute consultation. We’ll figure out if and how I can help.



