B2B Portal for Alcohol Distributors — Licence Verification & Excise
Why Alcohol Wholesale Requires a Different Kind of Portal
Building a B2B portal for a clothing distributor or a hardware wholesaler is a straightforward engineering problem. Alcohol distribution is not. The regulatory framework in Poland around alcohol sales adds a layer of compliance requirements that a standard B2B portal does not address — and ignoring them is not an option when the penalties include licence revocation.
The key regulations that shape what a B2B portal for alcohol wholesale must do:
- The Polish Alcohol Act (Ustawa o wychowaniu w trzeźwości i przeciwdziałaniu alkoholizmowi): Alcohol can only be sold wholesale to entities holding a valid retail alcohol licence (koncesja). The wholesaler is responsible for verifying this licence is active before each transaction.
- Excise duty (akcyza): Alcohol is an excise product in Poland. Every sales document must carry the correct excise data — product CN code, alcohol percentage, volume, excise rate category.
- Age verification: Anyone accessing an alcohol wholesale catalog must confirm they are of legal age.
- Record-keeping: Transactions in regulated goods require a documented audit trail — who bought what, when, under which licence.
A standard B2B portal handles none of this. A portal built for alcohol wholesale distribution handles all of it by design.
Licence Verification: The Non-Negotiable Feature
Every B2B client account in an alcohol wholesale portal must be linked to a valid alcohol licence. This is not a formality — it is a legal prerequisite for each transaction.
What the portal must track per client
- Licence number (numer koncesji) — assigned by the issuing municipality
- Licence type — which categories of alcohol the licence covers (beer and wine only? spirits? all categories?)
- Issuing authority — which municipality or office issued it
- Validity period — start date and expiry date
- Licence document — PDF scan stored in the portal for audit purposes
Automated expiry enforcement
The most important mechanism is automatic blocking. When a client's licence expires:
- The portal detects the expiry (daily check against stored expiry dates)
- The client's account is automatically set to "blocked — expired licence"
- The client can log in and see their order history, but cannot place new orders
- The client sees a clear message: "Your licence has expired. Upload your renewed licence to resume ordering."
- Your admin receives a notification: "Client X's licence expired on [date]."
This protects you from inadvertently selling to an unlicensed entity. Without this mechanism, you are relying on a human to check a spreadsheet — and humans miss things, especially when processing 80 orders per day.
CEIDG and Municipal Register Integration
For automatic licence verification (beyond just storing the licence details manually), the portal can query:
- CEIDG (Centralna Ewidencja i Informacja o Działalności Gospodarczej): For sole traders (jednoosobowa działalność gospodarcza), CEIDG is publicly accessible via API. The portal can verify the business is active and retrieve basic registration data.
- Municipal licence registers: Many Polish municipalities publish their alcohol licence registers publicly. Querying these directly gives you real-time confirmation that a specific licence number is active. The implementation varies by municipality — some have structured APIs, some have only PDF registers that require manual checking.
- KRS (Krajowy Rejestr Sądowy): For companies (sp. z o.o., SA, etc.), the KRS API confirms the entity is active and not in liquidation.
Practical implementation note: Fully automated licence verification from municipal registers is not always possible — the infrastructure is uneven across Poland. The pragmatic approach is: CEIDG/KRS for business existence verification (fully automatable), manual licence document upload by the client with admin review for licence validity, and automated expiry tracking once the licence is entered.
Excise Data in the Product Catalog
Every product in an alcohol wholesale portal must carry the fields required for excise compliance. This goes beyond product name and price.
Required product fields for excise compliance
| Field | Example | Notes |
|---|---|---|
| CN Code (Nomenklatura Scalona) | 2208 30 11 | 8-digit EU commodity code for excise classification |
| Alcohol percentage | 40% | Exact % as on the label |
| Volume | 0.7 L | Container volume |
| Excise category | Wyroby spirytusowe | Beer / wine / sparkling wine / spirits / other fermented |
| Excise rate | 6.275 PLN/litre of pure alcohol | Rate for spirits as of 2026 |
| PKWiU code | 11.01.10 | Polish Statistical Classification of Products |
The portal does not calculate excise — that calculation happens in the ERP when the sales document is generated. The portal's job is to carry this data correctly and pass it to the ERP with every order line, so the ERP has everything it needs to generate a compliant document.
Why this matters in practice: If an order arrives in your ERP missing the CN code for a product, the ERP cannot generate the correct excise declaration (AKC-UA/AKC-4/AKC-WW as applicable). That means a manual correction before the document can be issued. At 80 orders per day, missing fields are not a minor inconvenience — they are a daily compliance bottleneck.
Banderole (Excise Stamp) Tracking
For spirits imported from outside the EU, Polish law requires excise banderoles (banderole akcyzowe). If your catalog includes such products, the portal should flag them clearly, and the product record should reference the banderole series.
This is typically handled by adding a "requires banderole" flag to the product record, which the ERP uses to generate the appropriate documentation.
Age Verification Gate
Every Polish B2B alcohol portal requires an age verification confirmation before showing the catalog. This is not optional and should not be implemented as a superficial "click to confirm you are 18" checkbox on the home page.
Implementation that holds up to scrutiny:
- The portal presents the age confirmation on first login, before any catalog content is displayed
- The user confirms they are of legal age (18+) and that they are acting as a business entity (not a consumer)
- The confirmation is logged with timestamp and user account ID
- The confirmation does not need to be repeated on every visit — a confirmed account remains confirmed
The age verification is distinct from licence verification. Age verification is a one-time confirmation per account. Licence verification is ongoing — it must be valid at the time of each order.
Licence-Based Product Restrictions
A Polish alcohol retail licence specifies exactly which categories of alcohol the licence holder can sell:
- Category A: beer
- Category B: wine and other low-percentage fermented beverages
- Category C: spirits and all categories
If a client holds only a Category A licence (beer only), they cannot legally purchase spirits from your wholesale portal. A properly configured portal enforces this automatically.
Implementation:
- Each client account has a licence type assigned (A, B, C, or combination)
- Products in the catalog are tagged with their licence category requirement
- Clients with Category A licences cannot see or add Category C products to their cart
- Attempting to add a restricted product shows: "This product requires a Category C licence. Your current licence covers Category A only."
This feature is rarely implemented in generic B2B platforms. It requires the portal to understand both the licence type structure and the product classification — two things specific to Polish alcohol regulation.
Minimum Order Rules for Alcohol Distribution
Alcohol distributors in Poland almost universally apply minimum order rules. These are not legal requirements — they are commercial decisions — but they must be enforced consistently. In a portal, they are enforced automatically.
Typical minimum order structures
Minimum order value: Orders below a threshold (commonly 300–600 PLN netto for beer/wine, 500–1,000 PLN for spirits) are not accepted. The cart shows the current value and a clear indicator of how far the client is from the minimum.
Minimum quantity per SKU: For spirits, the minimum is often 6 bottles (a half-case). For beer, a full case (24 cans or bottles). The portal prevents adding quantities below the minimum to the cart, with an error message explaining the rule.
Mixed-case minimums: Some distributors require a minimum total quantity per category (e.g., minimum 1 full palette of beer per order). These are more complex to implement but workable.
Client-specific minimums: Key accounts with high volumes may have lower minimums (or none) as a negotiated benefit. The portal should support per-client minimum overrides configured in the admin panel.
Order and Compliance Logging
Alcohol wholesale transactions require a documented audit trail. The portal must log:
- Who placed the order: client account, business entity name, NIP
- Under which licence: licence number and type at time of order placement
- What was ordered: full product list with quantities, CN codes, and alcohol percentages
- When: timestamp of order placement and confirmation
- Order status: confirmation, shipment, invoice generation
This log should be exportable (CSV or PDF) for regulatory audits. In practice, the ERP carries most of this data — but the portal-side log serves as an independent record if the ERP data is ever disputed or if a client claims they did not place a specific order.
Retention requirement: Polish law does not specify a single retention period for alcohol sales records, but tax documentation retention requirements (5 years) and general commercial record-keeping standards suggest a minimum of 5 years for transaction logs.
Seasonal Demand: Planning Ahead with Portal Data
Alcohol wholesale has pronounced seasonality in Poland:
- New Year's (Sylwester): Demand for spirits peaks in December, particularly mid-December to December 28th
- Easter: Wine and beer peak the week before Easter
- Summer season (June–August): Beer, canned cocktails, and low-ABV products peak during outdoor season
- First Communion season (May): Significant spikes in wine and sparkling wine
- Back-to-school (September): Usually a slower period, good for promotions
A B2B portal with order history data lets you see exactly what your clients ordered at the same time last year. Two weeks before Sylwester, your portal can show a banner: "Sylwester is coming — reorder from last year's selection." This is a feature of data visibility that phone and WhatsApp ordering simply cannot provide.
One specific implementation worth adding: automatic low-stock alerts for high-demand seasonal products. Configure the portal to notify your admin when stock of a seasonal bestseller drops below a defined threshold during the pre-season window. This lets you trigger a reorder from your supplier before your clients start complaining about unavailability.
How This Differs From a Generic B2B Portal
To make it concrete — here is what a generic B2B portal handles and where it falls short for alcohol wholesale:
| Feature | Generic B2B Portal | Alcohol Wholesale Portal |
|---|---|---|
| Product catalog | Yes | Yes + CN codes, excise data, ABV |
| Individual pricing | Yes | Yes + licence-type pricing |
| Order flow to ERP | Yes | Yes + compliance fields |
| Stock visibility | Yes | Yes |
| Licence verification | No | Yes — required |
| Licence expiry blocking | No | Yes — automated |
| Age verification gate | No | Yes — before catalog access |
| Licence-based product restrictions | No | Yes — enforced at cart level |
| Compliance audit log | No | Yes — exportable |
| Minimum orders per licence type | No | Yes |
Building the items in the right column on top of a generic platform requires significant custom development — and the result is fragile because the underlying platform was not designed with these requirements in mind. Starting from a wholesale-specific portal and adding the compliance layer is faster and more maintainable.
What to Ask Before Selecting a Portal Solution
If you are evaluating portal options for your alcohol wholesale business, ask these specific questions:
- How does the system handle licence expiry? If the answer is "we store the expiry date and you can filter by it," that is manual management, not automated enforcement.
- Does the system block orders when a licence expires? Automatic blocking is the minimum requirement.
- Can the system restrict product categories by licence type? This is a differentiating capability — most generic platforms cannot do this without custom development.
- How is the compliance log structured and can it be exported? If there is no log, that is a gap.
- Does the product catalog support CN codes and excise fields natively? Adding these as custom fields to a generic platform is doable but creates maintenance debt.
If a vendor cannot answer these questions concisely and positively, their platform was not built for regulated goods distribution.
See the wholesale liquor portal page for more on what we build for alcohol distributors, or contact us to discuss your specific compliance requirements.
Let’s talk about your project
Free 30-minute consultation. We’ll figure out if and how I can help.



