| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 7401 |
| Technical Name |
l10n_ro_declaration_D120 |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) • Inventory (stock) |
| Community Apps Dependencies | Show |
| Lines of code | 7401 |
| Technical Name |
l10n_ro_declaration_D120 |
| License | OPL-1 |
| Website | https://www.nexterp.ro |
| Versions | 19.0 |
Romania - D120 ANAF Declaration
Romania - D120 ANAF Excise Duties Declaration (Decont privind accizele).
Overview
Romanian D120 ANAF declaration (Decont privind accizele — excise duties settlement) generator.
The module ships an account.report describing the official D120
structure (armonizate R0-R12 + nearmonizate R28-R41) and a wizard
that turns the report data into the XML expected by ANAF. Two XSD
versions are bundled and selected automatically by period:
- v4 (
d120_v3_24032020.xsd) for retroactive filings covering fiscal years 2020-2024; - v5 (
d120_13052025.xsd) — current ANAF format applicable from 2025 under OPANAF 1330/14.06.2024, adding R6_3 (fermented drinks from forest fruits), R36/R37 quantity columns and the new R38-R41 lines.
Each excise category (R0 Bere, R3 Vinuri linistite, R12
Tigarete, etc.) carries yearly rate records (specific duty, ad
valorem, minimum quantity) and a ANAF UoM string sent in the
C2 column of the form. Products are tagged with the excise
category they belong to; the report aggregates posted invoice lines
by category and the wizard emits the flat <accize ... /> element
ready to be validated with DUKIntegrator and signed before SPV
submission.
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
- D120 account report — full structure of the Decont privind accizele: armonizate (R0 Bere ... R12 Tigarete, including the new R6_3) and nearmonizate (R28-R41), with quantity, UoM and balance columns mapped to the official ANAF rows.
- Two XSD versions bundled — v4 (2020-2024) and v5 (from 2025, OPANAF 1330/14.06.2024). The version is picked automatically based on the declaration period.
- Excise category model (
l10n.ro.anaf.excise.category) — one record per ANAF row code (R0,R6_3,R12...) with the ANAF UoM (hl/1 grad Plato,hl produs,1000 tigarete) and a link to the matchingaccount.report.line. - Yearly rate tables —
l10n.ro.anaf.excise.yearandl10n.ro.anaf.excise.year.rateshold the specific duty, ad-valorem percentage and minimum quantity per category and date range; rates are loaded from the bundledl10n_ro_excise_year_rates.xml. - Product-level fields —
l10n_ro_excise_category_id,l10n_ro_excise_ratioandl10n_ro_excise_degreesonproduct.templatedrive the per-line excise computation (e.g. degrees Plato for beer). - Company-level field —
l10n_ro_excise_numberonres.companyis sent in the declaration header. - DUKIntegrator-ready output — generated XML flows through the
shared
l10n.ro.anaf.mixinvalidation, so thel10n_ro_declaration_dukcompanion module validates it before the user downloads the file. - Annual periodicity — wizard defaults to the current calendar
year and accepts a
Tip Declaratie(Initiala / Rectificativa) plus an optionalSuccesorpartner.
Configuration
1. Company excise number
Go to Settings -> Companies -> Update Info (or the company form) and fill the Numar autorizatie acciza field that appears next to the VAT number on Romanian companies. The number is reported in the declaration header.
2. Excise Categories
Go to Accounting -> Configuration -> ANAF Configuration -> Excise Categories. The data file bundled with the module pre-loads the official categories (R0 Bere, R3 Vinuri linistite, R6_3 Bauturi fermentate din fructe de padure, R12 Tigarete, R28-R41 nearmonizate ...). For each category, verify the ANAF UoM (the string sent in column C2 of the form) and the link to the Report Line on the D120 account report.

3. Yearly excise rates
Go to Accounting -> Configuration -> ANAF Configuration -> Excise Years. One record per fiscal year holds the per-category rates (specific duty, ad valorem percentage, minimum quantity) and their date range. Rates for current and recent years are pre-loaded; review them every year against the ANAF release.

You can also edit the rate lines directly from the category form, in the Yearly Rates tab.
4. Per-product mapping
On every excisable product, go to the Accounting tab and fill the Romanian Excise group:
- Excise Category — one of the configured categories;
- Ratio (alcohol percentage / Plato degrees) — when relevant;
- Degrees — additional degree input used by R6 spirits.
The fields are shown only on records tagged as Romanian
(is_l10n_ro_record) and only after a category is picked.
5. DUKIntegrator validation (optional)
Install l10n_ro_declaration_duk and configure the service under Accounting -> Configuration -> Settings -> ANAF DUKIntegrator Service to validate the generated D120 XML before download.
6. Reload bundled tax rates
Power users (base.group_no_one) can re-load the bundled ANAF
excise rate file from Accounting -> Configuration -> Settings,
Customer Invoices block, Load Romanian Excise Taxes.
How it works
1. Open the D120 report
Go to Accounting -> Reporting -> Romania -> D120 Declaration. The report renders the official structure of the Decont privind accizele (armonizate + nearmonizate) with one line per ANAF row code, the configured ANAF UoM and the computed quantity / balance columns for the selected period.
Use the date filter at the top to pick the fiscal year you want to declare (the wizard defaults to the current calendar year).
2. Generate the XML
From the report toolbar, click ANAF XML. The wizard
l10n.ro.anaf.d120 opens:

Fill in:
- Company (multi-company only);
- ANAF Declaration — pre-filtered to
d120; - ANAF Declaration Version — auto-resolved against
date_from(v4 for 2020-2024, v5 from 2025); - ANAF Signature — the authorised signatory from ANAF Configuration;
- Succesor — optional partner, used only when filing under art. 90 alin. (4) Cod procedura fiscala;
- Tip Declaratie —
InitialaorRectificativa; - Date range — the fiscal year being declared.
Click Execute. The wizard:
- aggregates excise-tax data from the report (quantities and amounts per row code, applying the per-year rates configured on each category);
- emits the flat
<accize ... />XML expected by the chosen schema version; - validates the result against the bundled XSD;
- (if
l10n_ro_declaration_dukis installed) sends it to DUKIntegrator and shows the validation badge and PDF inline; - saves the encoded file on Report File for download.
3. Sign and submit
Download the XML, sign it with your qualified digital certificate and
submit through the ANAF portal / SPV. Use Rectificativa to refile
a previously submitted year.
Versions
19.0.1.0.0 (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