Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Localisation
  3. Romania - D100 / 710 ANAF Declaration v 19.0
  4. Sales Conditions FAQ

Romania - D100 / 710 ANAF Declaration

by NextERP Romania https://github.com/NextERP-Romania/l10n-romania-enterprise
Odoo

$ 4699.60

v 19.0 Third Party
This module requires Odoo Enterprise Edition.
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
• Inventory (stock)
Community Apps Dependencies Show
• Romania - ANAF Declaration
• Romania - Account Enterprise
• NextERP Base
Lines of code 4635
Technical Name l10n_ro_declaration_D100
LicenseOPL-1
Websitehttps://github.com/NextERP-Romania/l10n-romania-enterprise
You bought this module and need support? Click here!
  • Description
  • License

Romania - D100 / 710 ANAF Declaration

Mature NextERP-Romania/l10n-romania-enterprise

This module implements the generation of the D100 declaration (Declarația privind obligațiile de plată la bugetul de stat) and the D710 declaration (rectificativa acesteia) for Romanian ANAF. ANAF publishes a single combined nomenclator and identical XML structure for both — only the root element and namespace differ — so a single wizard model handles both forms.

D100 is the monthly / quarterly / annual declaration through which Romanian taxpayers report their payment obligations to the state budget — corporate income tax, micro-enterprise tax, dividend taxes, excise duties, withholding taxes, special industry taxes (gambling, mining, oil & gas, electricity producers), construction tax, the disability fund and many others.

The module:

  • Defines the wizard l10n.ro.anaf.d100.v2 (versiunea 2 — XSD d100_24022022.xsd, in force from 2022-02-24); the same wizard also handles D710 v1 (XSD d710_20012025.xsd, in force from 2025-01-20).
  • Loads a complete nomenclator of obligation codes (l10n.ro.anaf.d100.config) with cca. 107 entries: payment obligation code (cod_oblig), name, ANAF budget account (cod_bugetar), period type (monthly/quarterly/semi-annual/annual) and optional default account-code mapping for auto-computation from accounting.
  • Computes the legal payment deadline (scadenta) per obligation:
    • Monthly obligations → 25th of the following month.
    • Quarterly obligations (codes 102, 103, 105) → end-of-quarter rolls to 25th of the next month.
  • Computes the unique nr_evid record number per obligation (formatul ANAF: 10<cod:3>01<MM><YY><scadenta:6>0000<checksum:2>).
  • Generates the XML file conformant to ANAF schema, validates it with the XSD, saves the result on the wizard for download.

The output XML has to be validated with DUKIntegrator and signed with the digital signature before being uploaded to the ANAF e-Guvernare portal.

Supported declarations

Category Examples (cod_oblig) Notes
Corporate income tax 102, 103, 105, 107, 108, 115, 131, 132 Includes Pillar 2 / national additional tax
Specific turnover tax 116, 117 Oil & gas / credit institutions
Micro-enterprise tax 121, 125, 127, 128 Includes redirected difference + offshore oil
Dividend tax 150, 161, 162, 604 Legal entities + individuals
Excise duties 211–247, 270 Alcohol, tobacco, energy products, sugary drinks, electricity
Medicine clawback 450, 455, 456 FNUASS quarterly contributions
Gambling taxes 504–553 Authorization fees, exploitation tax, vice tax, video lottery
Non-resident withholding 631–642, 690 Dividends, royalties, interest, services
Other income taxes 605, 606, 608, 620–629 Interest, prizes, real estate transfer
Construction & special 701, 702, 706, 707 Includes new logistics tax (2026)
Special funds 708, 709 Energy transition fund, solidarity contribution
Resource taxes 711–767 Mining royalties, oil royalties, offshore wind
Net profit / state dividends 780, 781 Autonomous authorities, central public
Disability fund 810 Article 78 Law 448/2006
Military pensions 825 Individual contribution

Source

Generated based on the official ANAF schema reference document `structura_D100-D710_0126_260326.pdf <https://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/d100_24022022.xsd>`__.

Table of contents

  • Use Cases / Context

Use Cases / Context

Legal context

D100 is the monthly / quarterly / annual declaration through which Romanian taxpayers report their payment obligations to the state budget (Declarația privind obligațiile de plată la bugetul de stat).

Filing obligation: OPANAF 587/2016 as amended. Schema: OPANAF 0126/26.03.2026 (structura_D100-D710_0126_260326.pdf). XSD: `d100_24022022.xsd <https://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/d100_24022022.xsd>`__.

Filing periodicity per obligation

The same XML element <declaratie100> is used for monthly (L), quarterly (T), semi-annual (S) and annual (A) obligations. The taxpayer files separate D100 declarations per period — but each declaration can include lines for multiple obligations of the same period.

Common scenarios:

Filing Typical content
Monthly (by 25 of next month) Withholding taxes (412, 604, 605, 608), excise duties (211–270), gambling fees (504–553), construction tax (701), disability fund (810), most non-resident withholdings (631–642)
Quarterly (by 25 of month after quarter end) Corporate income tax advance payments (102, 103, 105, 107), micro-enterprise income tax (121), medicine clawback (450, 455, 456)
Annual (by 25 January next year) Pillar 2 multinational top-up tax (131), national additional tax (132), mining royalties annual reconciliation (755, 756, 758)

Relationship with other declarations

D100 is part of a family of ANAF declarations that share the same l10n.ro.declaration infrastructure:

  • D100 — payment obligations to state budget (this module).
  • D101 — corporate income tax annual return (separate module, not yet implemented).
  • D112 — payroll declaration (salary withholdings, separate flow).
  • D300 — VAT (l10n_ro_declaration_D300).
  • D390 — intra-community VAT recap (l10n_ro_declaration_D390).
  • D394 — domestic operations recap (l10n_ro_declaration_D394).
  • D406 — SAF-T (l10n_ro_declaration_D406).

If your company is a micro-enterprise that files D100 with code 121, it does not also file D101.

Data model

l10n.ro.anaf.declaration  ─┬── name = "d100"
                           │
l10n.ro.anaf.declaration.version
                           │   ─── name = "Versiunea 2"
                           │       date_from = 2022-02-24
                           │       model = l10n.ro.anaf.d100.v2
                           │
l10n.ro.anaf.d100.config  ─┘── nomenclator (107 records loaded as data)
                                cod_oblig, cod_bugetar, period_type,
                                account_code_from / account_code_to,
                                sign

l10n.ro.anaf.d100  (TransientModel — wizard base)
  └─ inherits l10n.ro.anaf.mixin
  └─ extended by l10n.ro.anaf.d100.v2 (XML generation logic per version)
       └─ generate_xmldict() → ordered fields
       └─ build_file() → assembled XML string
       └─ _compute_scadenta(cod_oblig) → due date
       └─ _compute_nr_evid(cod_oblig, scadenta_short) → unique record number
       └─ compute_from_config() → auto-fill obligation_line_ids from accounting

l10n.ro.anaf.d100.obligation  (TransientModel — line under wizard)
  ├─ cod_oblig
  ├─ cod_bugetar
  ├─ amount_due / amount_deductible / amount_to_pay / amount_to_refund
  └─ declaration_wizard_id (M2O parent)

Why account-range mapping is partial

The Romanian Chart of Accounts (PCG OMF 1802/2014) standardizes account names down to 4 digits (e.g. 4411 Impozit pe profit, 4418 Impozit microîntreprinderi, 4426 TVA deductibilă). Beyond that, analytical subdivision is at each company’s discretion.

For obligations with a clear standard PCG account (corporate income tax, microenterprise tax, dividend tax, disability fund), the module pre-maps a 6-digit range (e.g. 441100–441199). For industry-specific obligations (excise, gambling, mining, offshore wind, electricity producers, medicine clawback), the mapping is left empty intentionally — each taxpayer configures its own analytical accounts.

This avoids forcing a numbering convention on companies and keeps the standard mapping clean.

XSD schema reference

The output XML must validate against the official ANAF XSD: https://static.anaf.ro/static/10/Anaf/Declaratii_R/AplicatiiDec/d100_24022022.xsd

The schema defines:

  • Required attributes on <declaratie100>: luna, an, cui, den, etc.
  • Pattern constraints on nr_evid (23 digits with checksum).
  • Allowed cod_oblig values (enumeration in the schema, must match nomenclator).
  • Allowed cod_bugetar values per cod_oblig (often 5503 for state budget).
  • Required scadenta format (DD.MM.YYYY).

ANAF updates the XSD periodically (hence the version system). When ANAF publishes a new version (e.g. d100_<DDMMYYYY>.xsd), a new sibling module should be added (e.g. l10n.ro.anaf.d100.v3) with the appropriate XML generation logic and date_from on the version record.

Configuration

Prerequisites

Check the configuration steps from l10n_ro_declaration module downloaded with this module — ANAF declaration setup, signature configuration, company VAT/CUI fields and bank account.

Obligation codes nomenclator

This module ships with all ~107 D100 obligation codes loaded as configuration records in l10n.ro.anaf.d100.config. Each record describes:

Field Description
cod_oblig ANAF obligation code (e.g. 103, 121, 412, 810)
name Tax / contribution label
cod_bugetar ANAF budget code (5503 for general state budget; specific for special funds)
period_type L=monthly, T=quarterly, S=semi-annual, A=annual
account_code_from / account_code_to PCG RO account range used for auto-computation (optional)
sign 1 for amounts owed (default), -1 for amounts to deduct/refund

Access the nomenclator from the menu: Accounting → Configuration → Romania → D100 — Obligation Configuration.

Account code mapping — what is configured by default

Out-of-the-box, the module maps only the obligations that use standard PCG RO chart-of-accounts subaccounts that any Romanian company will have:

PCG accounts Category Mapped obligation codes
441100–441199 Impozit pe profit 102, 103, 105, 107, 108, 115
441800–441899 Impozit microîntreprinderi 121, 125, 127
446200–446299 Impozit pe dividende 150 (legal entities), 604 (individuals)
446500–446599 Fond handicap (art.78 Legea 448/2006) 810

Total: 12 obligations pre-mapped out of ~107.

Account code mapping — what you must configure manually

The remaining ~95 obligations are industry-specific and must be configured by each taxpayer individually, because:

  1. The Romanian Chart of Accounts (OMF 1802/2014) does not standardize subaccounts below the 4-digit level for 446... (Alte impozite, taxe și vărsăminte asimilate). Each company defines its own analytical subdivision.
  2. The taxes themselves are sector-specific and not all companies will encounter them (e.g. excise duties, gambling, mining royalties, offshore wind fees, electricity producer additional tax, medicine clawback).

If your company is liable for one of these, follow this procedure:

  1. Create / identify the analytical account in your chart-of-accounts where you book the tax liability (typically a sub-account of 446 or 447). For example for excise duties on alcohol, you might use 4461.AA or 446100AA (depends on your numbering convention).
  2. Open the D100 obligation record (Configuration → D100 — Obligation Configuration), find the corresponding cod_oblig (e.g. 211 — Excise beer).
  3. Fill in Account Code From and Account Code To with the analytical account range (e.g. 446100–446199 if you use 6-digit codes).
  4. Save. From now on, compute_from_config on the wizard will auto-pick balances from those accounts for that obligation.

If you don’t fill the account range, the obligation still works — you just need to enter the amounts manually in the wizard’s obligation lines table.

Industry quick-reference

Industry Obligations to configure Typical PCG account
Banks / oil & gas 116, 117 4413xx (impozit specific)
Excise warehouses 211–247, 270 4461xx (accize)
Pharma / medicine vendors 450, 455, 456 4467xx (clawback FNUASS)
Gambling operators 504–553 analytical 446 or 447
Non-resident withholding 631–642, 690 4463xx (impozit nerez.)
Construction 701, 702 analytical 446...
Mining / oil royalties 750, 754–767 analytical 446 or 447
Offshore wind 714–719 analytical 446...
Electricity producers 161, 708 446xx / 447xx
Public sector / autonomous 780, 781 446xxx

D710 (declarație rectificativă)

D710 corrects a previously submitted D100. ANAF publishes a single combined nomenclator and identical XML structure for both — only the root element and namespace differ:

Declaration Root element Namespace XSD
D100 <declaratie100> mfp:anaf:dgti:d100:declaratie:v2 D100.xsd
D710 <declaratie710> mfp:anaf:dgti:d710:declaratie:v1 D710.xsd

Because the structure is shared, this module ships a single wizard model that emits both forms. The dispatch happens in _DECL_FORMAT in models/v2/d100_20220224.py based on declaration_id.name. No separate obligation nomenclator is required — compute_from_config searches across all versions that target the same wizard model, so the D100 nomenclator automatically applies to D710 as well.

Open D710 from Accounting → Reporting → Romania → D710 Declaration.

Running the declaration

After configuration, generate the declaration as described in USAGE.md.

Usage

To use this module, you need to be an account adviser and go to:

Accounting → Reporting → Romania → D100 Declaration (or D710 Declaration for the rectifying version of a previously submitted D100).

The wizard form is identical for both — only the menu entry preselects the declaration type, which controls the XML root element and namespace emitted.

Steps

  1. Open the wizard and complete the headers:
    • Declaration / Version — D100 / Versiunea 2 (default).
    • Date From / Date To — defaults to the current month / quarter; adjust if filing for a past period.
    • Signature — the digital signature record configured for your company.
    • Bank Account — the company bank account from which obligations are paid.
  2. Compute obligations from accounting — click the „Compute from Accounting” button (icon 🧮). The wizard reads the D100 configuration nomenclator for the selected version and auto-fills the obligations table with amounts from the accounts mapped in account_code_from / account_code_to. The wizard re-opens automatically with the populated lines so you can review before generating.
  3. Edit the obligations table if needed:
    • Add lines for industry-specific obligations not pre-mapped (excise, gambling, mining royalties, etc.) — see CONFIGURE.md.
    • Adjust any amount manually (Amount Due, Amount Deductible, Amount to Pay, Amount to Refund).
    • Remove lines you don’t need.
  4. Optional fields for special situations:
    • Legal Basis (``temei``) — if filing under art.105 alin.(6) of Codul de Procedură Fiscală.
    • Successor (``succesor_id``) — if the declaration is filed by a successor entity (art.90 alin.4) — populates d_succ and cifS in the XML.
    • Corrected after Reserve Cancellation (``d_anulare``) — set Yes for the specific case in art.42 alin.4^1 Cod Fiscal.
    • Dissolution Without Liquidation (``d_dizolv``) — set Yes if filed at the point of dissolution.
  5. Generate the XML — click „Get Report”. The wizard:
    • Produces an XML file according to the d100_24022022.xsd schema.
    • Validates against the XSD.
    • Saves the result on the file_save field with a download link.
  6. Validate with DUKIntegrator — run ANAF’s local validator on the generated XML before signing.
  7. Sign with the digital signature — use ANAF’s signing tool or your installed token (Sectigo, certSIGN, etc.).
  8. Upload to ANAF at https://www.anaf.ro/anaf/internet/ANAF/servicii_online/inreg_inreg_pers_juridice under „Depunere declarații → D100”.

Key XML fields generated

The module generates a <declaratie100> (or <declaratie710> when filing a rectification) XML element with attributes:

  • luna, an — period
  • cui, den, adresa, telefon, mail — taxpayer identification
  • nume_declar, prenume_declar, functie_declar — declarer info
  • d_anulare, temei, d_succ, cifS, d_dizolv — optional flags
  • totalPlata_A — total amount due (sum of all obligation amounts)

For each obligation line, an <obligatie> sub-element is added with:

  • cod_oblig — obligation code
  • cod_bugetar — ANAF budget code
  • scadenta — payment deadline (format DD.MM.YYYY)
  • nr_evid — unique 23-digit record number with checksum
  • suma_dat / suma_ded / suma_plata / suma_rest — amounts (omitted if zero)

Quick reference: deadlines

Period type Default scadenta Special case
L — monthly 25th of next month —
T — quarterly 25th of next month At quarter-end (Mar, Jun, Sep, Dec): rolls one month forward
S — semi-annual 25th of next month —
A — annual 25th of next month —

December always rolls over to January of the next year.

Bug Tracker

Bugs are tracked on NextERP Issues. In case of trouble, please check there if your issue has already been reported.

Do not contact contributors directly about support or help with technical issues.

Credits

Authors

  • NextERP Romania

Contributors

  • NextERP Romania:
    • Fekete Mihai <feketemihai@nexterp.ro>

Maintainers

Current maintainer:

feketemihai

This module is part of the NextERP-Romania/l10n-romania-enterprise project on GitHub.

You are welcome to contribute.

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

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with