Intrastat is one of those obligations that switches on in SMEs with no fanfare. The company grows, imports from Germany cross some threshold in May that nobody tracked, and in June the accountant suddenly asks who's going to prepare the first filing by the 10th business day. The answer is usually "we'll do it in Excel, just this once". That "just this once" tends to last three years.
This isn't an obligation you can quietly ignore. It isn't a tax either — you don't pay the authorities a single złoty on Intrastat because the system only serves EU intra-trade statistics. But incorrect, late or missing filings get penalised by the Tax Administration Chamber, standardly from a few hundred to a few thousand złoty per month, and at scale a customs-and-tax audit reaches further. The real problem is that most Polish SMEs treat Intrastat as an awkward manual report rather than what it should be: a plain ERP report that generates itself.
If you trade goods inside the EU — buying from Germany, selling to the Czech Republic, importing from Italy — and your annual intra-EU trade is approaching a few million złoty, read on. It's weeks away, not years.
Who's in scope and when it kicks in
Intrastat is a system for collecting statistical data on the physical flow of goods between EU member states. It doesn't cover services. It doesn't cover non-EU trade — that goes through customs declarations. Only goods crossing a border between two EU countries count.
The reporting obligation triggers when the value of your arrivals (purchases from the EU) or dispatches (sales to the EU) exceeds the annual basic threshold set each year by the Polish statistical office and published on PUESC. In recent years that's been in the order of a few million złoty for arrivals and similar for dispatches — check the current figure on PUESC before each January. There's also a detailed threshold above which more data is required (delivery terms and mode of transport, among others). Most SMEs operate below it on the basic threshold.
In practice this usually plays out like this: in January the CFO notes that "we'll probably hit Intrastat this year". By April you've already crossed, but nobody noticed because the VAT-UE return doesn't shout about it. In June the accountant gets a call from the chamber asking "where's the May filing". From there it's downhill: backfilled filings for three months, prepared over a weekend, without proper country-of-origin and CN-code data.
So the first rule: the ERP should show how much headroom you have before the threshold. Not quarterly, not on request — continuously, as one of the controller's standing reports.
What the ERP must handle
A well-configured ERP generates an Intrastat return in fifteen minutes because everything it needs is already inside the system. A badly configured one forces a week of Excel work because one field is missing from the product record, or no country of origin was captured on the purchase invoice. The must-have list.
- CN (Combined Nomenclature) code on the product master — the eight-digit customs-statistical code. You set it once per SKU, not every month. In Comarch Optima, enova365, Microsoft Dynamics 365 Business Central or Subiekt GT this is a standard field, usually empty because nobody populated it earlier. A few hundred SKUs is a day or two of work. A few thousand — consider an automatic classifier working from product descriptions.
- Country of origin on the EU purchase document — not the supplier's country, the goods'. A German intermediary might sell Chinese goods, and Intrastat has to show CN (China), not DE. This field is typically missing on documents because no one asks the supplier for an origin declaration. The fix: require the field on the purchase order and block goods receipt without it.
- Net mass and statistical value — statistical value isn't always the invoice net. On EXW dispatches to the EU you have to add transport costs to the border; on DAP arrivals you have to subtract them. The ERP should do this itself based on the Incoterms captured in the document header.
- Transaction type and delivery terms — a one-letter code for transaction type (standard trade, processing, return) plus Incoterms. You don't invent these each month — set them in a dictionary once, and the ERP posts them onto documents.
- PUESC XML export — the Intrastat file is generated straight from the ERP, not by pasting into Excel and running a converter you found online. Every ERP with a serious Polish localisation has a module for this out of the box.
None of this is secret knowledge. It's all in the Polish-localisation manual of every major ERP. The problem in 90% of SMEs is that nobody actually came in and switched it on, because everyone's waiting for "the accountant to deal with it".
Real-life example — an automotive parts distributor
We worked with a 28-person automotive parts distributor near Poznań. Comarch Optima as ERP, purchases mostly from Germany and Italy (~11 million PLN per year), sales mainly in Poland but with growing exports to the Czech Republic and Slovakia (~2.4 million PLN per year). The company crossed the Intrastat threshold three years ago and has been doing filings in Excel ever since.
The monthly cycle before the project looked like this: a procurement clerk (who described it herself as "half of my life at the start of each month") spent on average 1.5 working days around the 5th–8th of the month preparing both filings. The data came from three sources: purchase invoices from Optima, a shipment list from the courier system, and an Excel of CN codes that someone once built and updated sporadically. CN codes were filled in by hand, for new items often "by eye" based on a similar article. Country of origin was filled with the supplier's country, so goods made in Taiwan and sold through a German intermediary showed up as German in Intrastat.
The review surfaced three concrete problems:
- Incorrect CN codes on about 15% of the product master (too general or outdated — CN tables change every year, but nobody had refreshed them since go-live).
- Country of origin inconsistent with the supplier's declaration on about 40% of invoices from Germany — a real risk, because at a border check between Poland and the Czech Republic the paperwork has to match.
- Statistical value calculated from invoice net only, with no transport adjustment — on EXW from Italy that's a systematic understatement of several percent.
The project: 7 days of our work. What changed — filled in CN codes on the product master (automatic classifier plus a merchandiser review), added "goods country of origin" as a required field on EU purchase orders, switched on the standard Intrastat module in Optima with a statistical-value rule driven by Incoterms, and added a monthly "headroom to threshold" report split by arrivals and dispatches.
After the rollout, generating both filings takes about 2 hours a month: the clerk opens the report, reviews the lines the system flags as "suspicious" (missing CN code, country of origin inconsistent with the previous period), confirms them and exports the XML. Recovered ~12 hours a month — about 18 working days a year. The monetary value depends on the company, but the more important thing is that the clerk stopped getting stressed at the start of every month, and the controller finally has a running view of how close they are to the detailed threshold.
Common mistakes that cost money
From Intrastat reviews in more than a dozen SMEs, four problems come back almost every time.
- Outdated CN codes. The CN table updates every year, typically in January. A code that was correct three years ago may be invalid today. The ERP won't catch this on its own — someone has to run a check once a year or walk through the updates.
- Country of origin = country of the supplier. The most common error on imports from Germany and the Netherlands — both are large logistics hubs. If you don't ask the supplier for an origin declaration (a certificate or a line on the invoice), you're guessing. Guessing on Intrastat is statistics that will one day fall apart.
- Confusing Intrastat with VAT-UE. VAT-UE shows only net values and tax IDs. Intrastat requires masses, CN codes, countries of origin, delivery terms. If someone in the company says "I do the EU filings from VAT-UE", half the data is almost certainly missing.
- Skipping nil returns. If you're in scope but there was no EU trade in a given month, you still file a nil return. Skipping it carries the same penalty as any other missed filing.
When to tackle this
Three thresholds where it stops making sense to wait.
- EU arrivals or dispatches have passed 70% of the basic threshold. At that point you probably have 3–4 months before the obligation kicks in. Exactly enough time to tidy the product master and the processes calmly, instead of putting out a fire in June.
- A second or third EU country has appeared on the buying or selling side. The probability rises that one of your suppliers is selling you goods with a different origin than you think, and that you're sending Intrastat data inconsistent with the customs paperwork — which will eventually collide.
- Another person is spending more than a day a month on filings. This is the economic threshold. Even at a modest hourly rate for an admin role, 15–20 hours a month indefinitely is the salary of an assistant — paid over five years for work that should be happening on its own.
What next
If today you don't know in which month your company will next cross the Intrastat threshold — open "year-to-date EU arrivals value" and "year-to-date EU dispatches value" in your ERP. If neither report pops out in one click, that's the first signal that Intrastat is being handled in Excel at your place — and that it doesn't scale.
Make a list of every EU supplier and every EU customer, with annual turnover against each. One sheet of paper. If it has more than five entries on either side, and your last Intrastat return wasn't produced automatically from the ERP — the first call with us is free and takes half an hour. We won't send you a quote for a new ERP. We'll show you how to turn Intrastat on in the system you already have, and what that means in hours per month.
Intrastat isn't a tax — it's statistics. But four months of wrong statistics in a row rarely end in a conversation with the stats office. They end in a conversation with the Tax Administration Chamber.