Skip to Content

EU Intrastat Reporting in Odoo

Practical Scenarios and Strategic Use

Trade within the European Union comes with significant economic advantages, but also with compliance responsibilities. One of these obligations is the Intrastat declaration, a statistical report required by the EU for tracking the movement of goods between member states. While it is not a tax form, it is a legal requirement, and non-compliance can result in penalties. For businesses operating in Odoo, understanding and properly implementing Intrastat can ensure smooth operations, accurate reporting, and legal compliance. This article explores how Intrastat works in the EU, why it matters, and how it can be practically applied within Odoo, including several real-world scenarios.

Understanding Intrastat: What and Why

Intrastat is a system for collecting statistics on the movement of goods between EU member states. It was introduced to replace customs declarations for intra-EU trade when the single market was established in 1993. Since goods no longer undergo customs checks within the EU, member states rely on Intrastat data to track cross-border flows.

All VAT-registered businesses in the EU that exceed a certain threshold of intra-EU trade are required to submit monthly Intrastat declarations. These thresholds vary by country and by direction of trade (dispatches vs arrivals). Intrastat only concerns physical goods, not services.

For example, if an Irish company exports goods worth over the Irish threshold (currently €635,000) to other EU countries, it must begin submitting Intrastat dispatch reports to the Central Statistics Office (CSO). Similarly, companies importing goods from other EU countries above a certain threshold must submit arrival reports.

Intrastat reports typically require:

  • The type of transaction (sale, return, lease, etc.)
  • The value of goods
  • The weight and quantity
  • The commodity code (Harmonized System or HS code)
  • The origin and destination country

These details help governments and the EU monitor trade flows, inform economic policy, and compile trade statistics.

Enabling Intrastat in Odoo

Odoo, being a modular and customizable ERP, supports Intrastat reporting through built-in functionality available in its accounting module. Before using it, the relevant Intrastat module must be installed. Depending on the country localization, additional modules such as transport or supplementary reporting may also be required.

After installation, Intrastat settings can be configured in the accounting settings. These include selecting the default transaction type, setting up transport modes, and adjusting settings to match national reporting requirements. Once activated, Odoo can automatically generate Intrastat reports based on posted invoices and purchase orders.

Setting Up Products for Intrastat Compliance

Proper Intrastat reporting depends heavily on how products are configured. Each product should have a Harmonized System (HS) or Intrastat code, which classifies the type of goods. This is not just a technicality but a legal requirement.

Suppose a company sells electronic components across the EU. Each component, whether it is a microchip, a resistor, or a power supply, must be assigned the correct HS code. The HS code determines which category the item falls into and directly affects how it's reported in the Intrastat declaration.

Additionally, each product should include the country of origin, net weight, and any supplementary units if applicable. Failing to populate these fields can result in incomplete or rejected Intrastat reports.

Scenario 1: Standard Intra-EU Sale from Ireland to France

Imagine a company based in Dublin that manufactures and sells industrial sensors. A French distributor places an order worth €50,000. The company ships the goods and issues an invoice.

In this standard sale scenario, the company needs to include the correct Intrastat transaction type, which is typically code 11. This code refers to outright sales or purchases excluding direct sales to private consumers. It is used for most B2B transactions.

In Odoo, the system detects the partner’s EU country, the invoice type, and the product data, and automatically associates the transaction with Intrastat code 11. When the user generates the monthly Intrastat dispatch report, the transaction is included, complete with value, quantity, weight, and HS codes.

The generated report can be reviewed, exported in the required XML or CSV format, and submitted to the Irish Central Statistics Office through its online portal.

Scenario 2: Sale to a Private Customer in Germany

If the same Irish company also runs an e-commerce store and sells a batch of sensors to a private customer in Berlin, a different Intrastat code applies. Since the transaction involves a private consumer and not a VAT-registered business, the correct code is 12, which covers direct trade with private consumers including distance selling.

This distinction is critical because failure to use the appropriate transaction code can lead to data inaccuracies and possible investigations. In Odoo, users can manually change the Intrastat transaction type on an invoice if it does not default to the correct one.

The invoice is marked as a B2C sale, and when the Intrastat report is generated, it reflects the different transaction type, even though the products, weights, and values are similar.

Scenario 3: Return of Goods from Belgium

A Belgian distributor who purchased sensors from the Irish company finds that some items are defective and sends them back. The company issues a credit note to the distributor.

In Intrastat, this is not just a reversal of the original transaction. It is a separate transaction with its own code, typically 21, which refers to returned goods. The use of a distinct transaction code helps distinguish standard exports from returns, which are treated differently in statistical analysis.

In Odoo, when creating a credit note, the user can select the appropriate Intrastat transaction code. The system then includes this return in the next dispatch report, reducing the total net value of exports for that period. Again, the accuracy of the product’s original HS code and weight is essential for correct reporting.

Scenario 4: Replacing Goods Under Warranty

Suppose the Irish company decides to replace the defective goods without requiring the return of the originals. In this case, the transaction code changes to 23, which is used for warranty replacements where the original item is not returned.

This distinction ensures that statistical authorities do not count the same item twice in trade flows. The goods were initially exported under code 11, but the replacement under warranty is tracked separately under code 23.

In Odoo, the replacement invoice or delivery slip should be marked with the correct code. Users should be vigilant about selecting the right transaction type, especially in complex customer service scenarios.

Scenario 5: Goods Sent for Trial or Leasing

Another common situation is where goods are sent to an EU customer for trial, leasing, or demonstration purposes. For example, the company may send ten sensors to a client in Spain for a three-month evaluation period.

In this case, there is no transfer of ownership, and the goods are expected to return. The proper Intrastat transaction code is 31 (movements to or from a warehouse, excluding consignment) or 32 (supply for sale on approval), depending on the intent.

These types of transactions are important to track because they still involve cross-border movement, even though they do not generate revenue. In Odoo, these can be tracked through delivery orders or draft invoices marked with the corresponding Intrastat code.

Reporting and Submission

Once all relevant invoices, refunds, and product data are in place, generating the Intrastat report in Odoo is straightforward. The report can be filtered by date and direction (dispatch or arrival). Users can preview the data, check for missing fields, and export the report in the format accepted by their national statistics office.

Odoo does not automatically submit the file but provides the file that can be uploaded to the appropriate portal. In Ireland, this would be through the CSO’s e-Reporting system. Users are encouraged to review the thresholds each year and ensure timely submissions, which are usually monthly.

Compliance and Optimization

Using Odoo for Intrastat not only helps maintain compliance but also streamlines operational reporting. By ensuring products, invoices, and partners are correctly configured, businesses can avoid penalties, reduce manual work, and gain insights into trade patterns.

Moreover, Odoo’s ability to customize fields, automate workflows, and schedule reports makes it ideal for businesses with large or complex EU operations. With proper setup, users can ensure each invoice and shipment contributes accurate data to Intrastat declarations with minimal intervention.

Intrastat reporting is a key component of EU trade compliance, especially for businesses that regularly buy or sell goods across borders. While the requirements can be technical and country-specific, Odoo provides a comprehensive framework to manage these obligations effectively.

From assigning the right HS codes and transaction types to generating accurate and timely reports, Odoo’s Intrastat functionality is powerful when properly configured. By understanding common scenarios such as B2B sales, consumer deliveries, returns, and replacements, businesses can ensure that their Intrastat data is complete, correct, and audit-ready.

As the EU continues to modernize its trade monitoring systems, digital solutions like Odoo will play a growing role in keeping businesses compliant and efficient. With a clear understanding of how to apply Intrastat in various contexts, companies can turn a regulatory burden into a streamlined, automated reporting process.

If you're ready to take control of your EU compliance responsibilities, setting up Intrastat in Odoo is a critical first step.

Archive