Primary accounting: the open-source Romanian localization


Free software, in a public repository
This is the layer most people mean when they say "the Romanian localization". It lives in the public l10n-romania repository of the Odoo Community Association, it has 43 modules on Odoo 19, and it is free software that anyone can read, use and contribute to.
It covers the work an accountant touches every day: the taxes, the inventory, the primary documents that have to come out on paper, and the bank. It is the difference between an Odoo that is technically correct and an Odoo a Romanian accountant can actually work in.
It even closes the income, expense and VAT accounts at the end of the month. What it does not cover is the rest of the close — red storno, currency revaluation, fixed assets — plus the statutory registers and the ANAF returns, which sit in the layer above it.


NextERP's contribution to the OCA localization
73%
of the source code in the repository
32
of the 43 modules created by us
2015
our first module, on Odoo 8.0
The Odoo 20 branch opened on 30 September 2026 and is still empty. Of the 43 modules, 28 already have a migration pull request waiting for review, all of them ours.
Taxes and closing
The Romanian tax rules that the generic accounting engine does not know about.
VAT on payment, with the deferred VAT accounts
Deductibility driven by the moment of collection
Non-deductible VAT, fully or partially
Period closing for income and expense accounts
VAT closing and the settlement entry
Cash payment limits as the law sets them
Inventory accounting
Stock kept at both quantity and value, the way Romanian accounting requires.
FIFO and weighted average on the Romanian rules
An accounting date separate from the delivery date
Receptions in progress, for goods not yet invoiced
Landed costs spread onto the cost of goods
Price differences against the vendor bill
Stock ledger, the Fișă de magazie
Primary documents
The paperwork a Romanian company has to produce and keep.
Goods receipt note, standard and retail
Valued delivery note
Mandatory mentions on delivery documents
Invoice in the Romanian layout
Cash receipt and collection document
The cash register of a cash journal
Bank and treasury
Statements in, reconciled, with the exchange rate under control.
MT940 import for BCR and BRD
MT940 import for ING and Raiffeisen
MT940 import for Eximbank and Alpha Bank
A shared MT940 engine other banks can plug into
Bank statement report
Editable exchange rate on the invoice
Partners, customs and the till
Everything that touches ANAF data or the shop floor.
Partners created straight from their VAT code
Company data fetched from ANAF
Fiscal status validation against the ANAF lists
VAT code and trade register number kept unique
Customs declaration, with duties onto the cost
Messages picked up from the ANAF SPV
Romanian cities and postal data
Retail and the till
Romanian retail accounting has no equivalent anywhere else in Odoo. Goods are kept at the shelf price, with the markup and the deferred VAT carried in separate accounts, and every price change has to leave a document behind. Six modules cover it, and they are entirely our work.
Goods at selling price
Account 371 at the shelf price, with 378 for the markup and 4428 for the deferred VAT.
Markup and deferred VAT split automatically on every entry
Landed costs that raise the cost without moving the shelf price
What a vendor bill difference does to the markup, shown before posting
Markup recalculated when the selling price changes
Documents and reports
The paperwork a shop has to produce, in the format an inspection expects.
Price change protocol, with the full history behind it
Reception note with cost, markup and deferred VAT columns
Retail stock report, per shop
Markup and deferred VAT shown on the stock held in each shop
Point of sale
The till, connected to the same stock and the same accounts.
Fiscal receipt issued from the Odoo point of sale
Refunds that produce a credit note and a payment disposal
Customer identified by VAT code, fetched from ANAF at the till
Several sessions kept open on one register, closed in order
Open source outside OCA, too
Not everything we publish openly goes into the OCA repository. Part of our work fixes Odoo's own Romanian modules — e-Factura and e-Transport — and lives in our public repository, NextERP-Romania/odoo-community, under the same free licences. You can read it, run it and fork it without being our client.
e-Factura, extended
Extensions to Odoo's own e-Factura module, published under LGPL-3.
Invoices sent to the SPV by a scheduled job, not by hand
Supplier bills pulled from the SPV and created in Odoo
Text fields truncated to the CIUS-RO limits, so ANAF stops rejecting
Long descriptions and line notes written correctly into the XML
Named users notified whenever a submission fails
e-Transport, extended
Aligned to the ANAF eTransport v2.0.2 specification, under LGPL-3.
Value without VAT computed per operation direction
Quantity and unit of measure converted consistently
Gross weight no longer doubled on multi-line packages
The NC8 tariff code required, instead of a fallback of zeros
The same checks applied to batch transfers
Late declaration after an ANAF outage, per OUG 41/2022
Treasury, and the rest
Other modules in the same public repository, under AGPL-3.
Statement lines attached to a daily statement automatically
Useful when MT940, CAMT.053 or OCR feeds deliver lines without a statement
Applied only to Romanian companies in a multi-company database
Eight more open-source modules beyond the localization
Point of sale, stock inventory, purchase exceptions, vehicle costs
Module by module
Every module in the repository, the Odoo version it first appeared in, the day its first commit landed, and who wrote the source code that is in it today. The oldest of them go back to 2015 and Odoo 8.0. Translations and generated files are left out; these are lines of code. Beyond the code, we also write and maintain the Romanian translation of these modules and the documentation that ships with them.
All of them are published under the umbrella of the Odoo Community Association: every one of the 43 modules carries OCA among its declared authors, and 39 of them also carry NextERP Romania. Authorship is therefore shared by design — the table below says who wrote the code inside.
| Module | Since | Started | Lines | NextERP | Terrabit | QDev | Dakai Soft | Independent |
|---|---|---|---|---|---|---|---|---|
l10n_ro_config | 8.0 | 2015-12-06 | 1 872 | 69% | 17% | 14% | – | – |
l10n_ro_vat_on_payment | 8.0 | 2016-01-13 | 871 | 92% | 8% | – | – | – |
l10n_ro_partner_unique | 8.0 | 2016-05-06 | 262 | 46% | 54% | – | – | – |
l10n_ro_partner_create_by_vat | 8.0 | 2016-05-08 | 1 308 | 72% | 26% | – | – | 2% |
l10n_ro_account_bank_statement_import_mt940_brd | 8.0 | 2016-06-21 | 480 | 46% | 54% | – | – | – |
l10n_ro_fiscal_validation | 11.0 | 2018-01-29 | 241 | 100% | <1% | – | – | – |
l10n_ro_account_period_close | 11.0 | 2018-02-25 | 827 | 81% | 18% | – | 1% | – |
l10n_ro_stock | 11.0 | 2019-12-08 | 421 | 65% | 35% | – | – | – |
l10n_ro_account_report_invoice | 13.0 | 2020-07-06 | 258 | 94% | 6% | – | <1% | – |
l10n_ro_dvi | 13.0 | 2020-08-19 | 1 559 | 78% | 15% | – | 7% | – |
l10n_ro_city | 13.0 | 2020-09-02 | 292 | 9% | 84% | <1% | – | 7% |
l10n_ro_stock_account | 13.0 | 2020-10-03 | 6 091 | 61% | 34% | – | 1% | 4% |
l10n_ro_stock_report | 13.0 | 2021-04-19 | 1 885 | 43% | 56% | – | 1% | <1% |
l10n_ro_payment_to_statement | 14.0 | 2021-03-23 | 1 429 | 90% | 9% | – | 1% | – |
l10n_ro_nondeductible_vat | 14.0 | 2022-01-09 | 2 018 | 100% | <1% | – | – | – |
l10n_ro_payment_receipt_report | 14.0 | 2022-01-09 | 505 | 98% | 2% | – | <1% | – |
l10n_ro_account_edit_currency_rate | 14.0 | 2022-04-28 | 188 | 100% | – | – | – | – |
l10n_ro_stock_price_difference | 14.0 | 2022-06-08 | 1 023 | 80% | 20% | – | <1% | – |
l10n_ro_stock_account_date | 14.0 | 2022-07-23 | 434 | 91% | 9% | – | – | – |
l10n_ro_stock_account_date_wizard | 14.0 | 2022-07-23 | 189 | 94% | 2% | – | 3% | 1% |
l10n_ro_stock_picking_comment_template | 14.0 | 2022-07-24 | 497 | 99% | 1% | – | <1% | – |
l10n_ro_stock_picking_valued_report | 14.0 | 2022-08-01 | 742 | 81% | 19% | – | <1% | – |
l10n_ro_account_bank_statement_report | 14.0 | 2022-09-24 | 760 | 100% | <1% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_base | 14.0 | 2022-11-05 | 792 | 84% | 16% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_bcr | 14.0 | 2022-11-05 | 504 | 48% | 52% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_ing | 14.0 | 2022-11-05 | 664 | 77% | 23% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_alpha | 14.0 | 2022-11-19 | 321 | 99% | 1% | – | – | – |
l10n_ro_stock_account_reception_in_progress | 14.0 | 2022-11-26 | 261 | 73% | 7% | – | – | 20% |
l10n_ro_account_bank_statement_import_mt940_rffsn | 14.0 | 2022-12-07 | 557 | 38% | 62% | – | – | – |
l10n_ro_pos | 14.0 | 2023-08-15 | 666 | 21% | 79% | – | – | <1% |
l10n_ro_account | 14.0 | 2023-08-18 | 325 | 1% | 99% | – | – | – |
l10n_ro_message_spv | 14.0 | 2024-06-12 | 3 685 | 1% | 99% | – | <1% | <1% |
l10n_ro_stock_account_landed_cost | 16.0 | 2024-04-22 | 882 | 84% | 16% | – | – | – |
l10n_ro_stock_account_tracking | 16.0 | 2024-04-22 | 364 | 90% | 10% | – | – | – |
l10n_ro_account_bank_statement_import_mt940_exim | 17.0 | 2026-05-12 | 538 | 32% | 68% | – | – | – |
l10n_ro_stock_account_retail | 19.0 | 2026-09-07 | 4 620 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_landed_cost | 19.0 | 2026-09-07 | 491 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_picking_report | 19.0 | 2026-09-07 | 419 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_price_change | 19.0 | 2026-09-07 | 3 267 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_price_difference | 19.0 | 2026-09-07 | 201 | 100% | – | – | – | – |
l10n_ro_stock_account_retail_report | 19.0 | 2026-09-07 | 1 207 | 100% | – | – | – | – |
l10n_ro_pos_refund | 19.0 | 2026-09-13 | 845 | 100% | – | – | – | – |
l10n_ro_pos_partner | 19.0 | 2026-09-15 | 370 | 100% | – | – | – | – |
| Total (43) | 8.0 | 2015-12-06 | 45 131 | 73% | 26% | <1% | <1% | 1% |
Percentages are rounded so that every row adds up to exactly 100. A line counts for whoever first wrote it, not for whoever last migrated it. Where a migration rewrote a file without carrying its history, the attribution is recovered by matching the text against every earlier version of the same module.
A shared effort, and why it matters who maintains it
The Romanian localization is built in the open by several companies working in the same repository and reviewing each other's changes. Terrabit, QDev Web Labs and Dakai Soft contribute alongside us, together with a handful of independent developers, and some modules are entirely theirs. That review is part of why the code can be trusted.
Every new Odoo version, and there is one a year, means all of these modules have to be migrated, tested and put back to work. A company that only uses the localization waits for someone else to do that. A company that writes it can migrate when it needs to, and fix a problem on the day it appears.
That is the practical difference for our clients: migrations do not stall, and problems get fixed at the source rather than becoming quirks you learn to live with. Request a free consultation.
Eight versions, and the ninth in progress
Every yearly Odoo release means all of these modules have to be migrated, tested and put back to work. This is who did it, counted from the migration pull requests in the public repository.
The 2026 line marked with an asterisk is still open: those pull requests are waiting for review, not merged.
| Odoo version | Modules migrated | NextERP | Terrabit | Dakai Soft | QDev | Others |
|---|---|---|---|---|---|---|
| 11.0 | 6 | 6 | – | – | – | – |
| 13.0 | 10 | 10 | – | – | – | – |
| 14.0 | 16 | 16 | – | – | – | – |
| 15.0 | 35 | 32 | 2 | – | – | 1 |
| 16.0 | 38 | 18 | 18 | – | – | 2 |
| 17.0 | 38 | 16 | 20 | – | 2 | – |
| 18.0 | 33 | 18 | 14 | – | – | 1 |
| 19.0 | 34 | 15 | 10 | 8 | – | 1 |
| 20.0 * | 28 | 28 | – | – | – | – |
| Total | 238 | 159 | 64 | 8 | 2 | 5 |
A module counts once per version, for whoever opened the pull request that carried it over. Versions 8.0 to 10.0 predate the pull request workflow in this repository.