| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) • Accounting (accountant) |
| Community Apps Dependencies | Show |
| Lines of code | 5440 |
| Technical Name |
l10n_ro_declaration_intrastat |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) • Accounting (accountant) |
| Community Apps Dependencies | Show |
| Lines of code | 5440 |
| Technical Name |
l10n_ro_declaration_intrastat |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 18.0 19.0 |
Romania - Intrastat Declaration
Romania - Intrastat Declaration
Overview
Generates the monthly Intrastat declaration required for
intra-EU trade statistics and submits it to INS / ANAF as the XML
payload defined by http://www.intrastat.ro/xml/InsSchema.
The module adds an ANAF XML button to the standard Odoo
Intrastat Report (account.intrastat) and a QWeb-rendered XML
template that builds the InsNewArrival and InsNewDispatch
elements expected by the Romanian schema (SchemaVersion 1.0).
On top of the Odoo report it implements the Romania-specific tweaks required by INS:
- the Statistical Value (per-product field on the product template) is added to every line in addition to the invoice value;
- the VAT number reported is the one of the shipping partner
(
partner_shipping_id), not the invoicing partner; - lines flagged as triangular (
l10n_ro_is_triangular) are excluded because the invoice flow does not match a physical movement through RO; - bundled code versions (CN 2025, transactions 2022, transport 2005, INCOTERMS 2021, counties 1, localities 06/2006, units 1) match the ones accepted by INS.
The wizard supports both directions (Arrival system=29 and
Dispatch system=19) in the same export or one at a time.
Built & supported by NextERP Romania
Romanian Odoo specialists, here for the long run — from implementation to localization and day-to-day production support.
What we do
Odoo Solutions
From quick-start rollouts to multi-company deployments and custom modules built for your processes.
Romanian Localization
SAF-T (D406), e-Factura, e-Transport, D300 / D390 / D394, ANAF integration, full chart of accounts and fiscal positions.
Our Services
Implementation, customization, migration, integration, support and consultancy — Romanian-speaking, SLA-backed.
Features
- ANAF XML toolbar button — adds a custom ANAF XML button to
the standard Intrastat Report (
account.intrastat), routed toro_intrastat_export_to_xmland producing the Romanian XML in one click. - Romanian shipping VAT — the SQL query of the report handler is
rewritten so the partner VAT carried in each line comes from the
invoice
partner_shipping_id, not the invoicing partner (INS requirement). - Per-product Statistical Value — new
l10n_ro_intrastat_statistical_valuefield onproduct.template/product.product, multiplied by the converted quantity to fill theStatisticalValueelement required by the Romanian schema. - Triangular flow filter — invoice lines marked
l10n_ro_is_triangular(RO as middle buyer-reseller, no physical movement through RO) are excluded from the declaration through aforced_domainon the report options. - Grouped XML items — raw report lines are aggregated by the Intrastat grouping keys (system, country, transaction, transport, commodity, partner VAT, INCOTERMS, origin country, supplementary units) before they reach the QWeb template.
- Single-direction or combined export — wizard supports
Arrivals only, Dispatches only, or both wrapped under a single
InsDeclarationsroot element. - Bundled INS code versions — CN 2025, country / EU / transport
/ INCOTERMS / county / locality / unit / nature-of-transaction
reference versions shipped in
data/intrastat_export.xmlto match what INS currently accepts. - Monthly periodicity enforced —
allow_quarterly=False: the wizard refuses periods longer than one month.
Configuration
The module reuses the standard Odoo Intrastat configuration; only a few Romania-specific fields need attention.
1. Company prerequisites
Go to Settings -> Companies -> Update Info and make sure:
- the VAT number is filled (used as
VatNrin the XML header); - the Company Registry (
company_registry) is filled — the export raises a redirect warning if it is missing; - an Intrastat Region is selected if your company has more than one INS region; otherwise the region column is hidden from the report.
You also need at least one bank account on the company partner
and a configured signatory under Accounting -> Configuration ->
ANAF Configuration -> ANAF Signature (see the base
l10n_ro_declaration module).
2. Per-product fields
Open every product reported through Intrastat (typically goods sold or purchased intra-EU) and fill, in the Purchase or Accounting tab:
- Commodity Code (
intrastat_code_id) — CN 8-digit code; - Country of Origin (
intrastat_origin_country_id); - Intrastat Statistical Value — the per-unit value used to
compute the
StatisticalValueelement. The field is stored on the template and propagated to the variants through the standard_compute_template_field_from_variant_field/_set_product_variant_fieldhelpers.
3. Partner fields
Make sure the shipping partner (partner_shipping_id) on every
intra-EU invoice carries a valid EU VAT number. The Romanian export
reads the VAT from the shipping partner, so a missing or invalid
VAT on that record will surface as a blank PartnerVatNr in the
XML.
4. Invoice line flags
The export ignores lines marked Triangular on the invoice
(l10n_ro_is_triangular). Use that checkbox on customer / supplier
invoice lines where Romania acts as middle buyer-reseller without a
physical movement of goods through RO.
5. DUKIntegrator validation (optional)
Install l10n_ro_declaration_duk and configure the service under
Accounting -> Configuration -> Settings -> ANAF DUKIntegrator
Service if you want the generated XML validated before download.
The Intrastat declaration code is intrastat.
How it works
1. Open the Intrastat report
Go to Accounting -> Reporting -> Statement Reports -> Intrastat Report. The standard Odoo report opens, restricted by default to the current month and pre-filtered to hide triangular lines (RO as middle buyer-reseller).
Use the toolbar to:
- switch between Arrivals and Dispatches (or keep both selected);
- adjust the Date filter — the export accepts a single month only;
- review the lines (commodity code, partner VAT from the shipping partner, value, statistical value, weight, supplementary units, country, transaction, transport, INCOTERMS, origin country).
2. Generate the ANAF XML
Click the ANAF XML button added to the toolbar. The handler:
- asserts that the selected period is a single month
(
allow_quarterly=False); - checks the company has a registry number, prompting a redirect warning if not;
- requires at least one of Arrivals / Dispatches to be selected;
- queries the report (arrivals →
system=29, dispatches →system=19), groups the raw lines on the Intrastat grouping keys and sums value, weight, supplementary units and the Romanian statistical value; - renders the QWeb template
l10n_ro_declaration_intrastat.intrastat_report_export_xml— oneInsNewArrivaland / orInsNewDispatchelement withSchemaVersion="1.0"under the namespacehttp://www.intrastat.ro/xml/InsSchema; - when both directions are selected, wraps the two elements under a
single
InsDeclarationsroot.
The browser then downloads the file with the report's default
filename (YYYY-MM based).
3. Header content
The header is filled automatically from:
company.partner_id.l10n_ro_vat_number—VatNr;company.name—FirmName;- the selected month —
RefPeriod(YYYY-MM); - current timestamp —
CreateDt; - the current user —
ContactPerson(first/last name, email, phone, function on the partner record).
Make sure the current user's partner has the right phone, email and
function before exporting; otherwise the ContactPerson block
will be partially empty.
4. Submit
Upload the resulting XML to the INS Intrastat web portal. With l10n_ro_declaration_duk installed, the file is also validated against the ANAF DUKIntegrator service before download, with the verdict shown inline on the wizard.
Versions
19.0.1.0.1 (2026-05-24)
- Changelog tracking starts at this release.
Discover the NextERP suite
Other modules from the same publisher, built to work together.
NextERP Romania
Odoo implementation, customization, Romanian localization and long-term support since 2018.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module