Skip to Content

Primary accounting: the open-source Romanian localization

Odoo Community AssociationNextERP Romania

Marketing

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 RomaniaOdoo Community Association

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.

ModuleSinceStartedLinesNextERPTerrabitQDevDakai SoftIndependent
l10n_ro_config8.02015-12-061 87269%17%14%––
l10n_ro_vat_on_payment8.02016-01-1387192%8%–––
l10n_ro_partner_unique8.02016-05-0626246%54%–––
l10n_ro_partner_create_by_vat8.02016-05-081 30872%26%––2%
l10n_ro_account_bank_statement_import_mt940_brd8.02016-06-2148046%54%–––
l10n_ro_fiscal_validation11.02018-01-29241100%<1%–––
l10n_ro_account_period_close11.02018-02-2582781%18%–1%–
l10n_ro_stock11.02019-12-0842165%35%–––
l10n_ro_account_report_invoice13.02020-07-0625894%6%–<1%–
l10n_ro_dvi13.02020-08-191 55978%15%–7%–
l10n_ro_city13.02020-09-022929%84%<1%–7%
l10n_ro_stock_account13.02020-10-036 09161%34%–1%4%
l10n_ro_stock_report13.02021-04-191 88543%56%–1%<1%
l10n_ro_payment_to_statement14.02021-03-231 42990%9%–1%–
l10n_ro_nondeductible_vat14.02022-01-092 018100%<1%–––
l10n_ro_payment_receipt_report14.02022-01-0950598%2%–<1%–
l10n_ro_account_edit_currency_rate14.02022-04-28188100%––––
l10n_ro_stock_price_difference14.02022-06-081 02380%20%–<1%–
l10n_ro_stock_account_date14.02022-07-2343491%9%–––
l10n_ro_stock_account_date_wizard14.02022-07-2318994%2%–3%1%
l10n_ro_stock_picking_comment_template14.02022-07-2449799%1%–<1%–
l10n_ro_stock_picking_valued_report14.02022-08-0174281%19%–<1%–
l10n_ro_account_bank_statement_report14.02022-09-24760100%<1%–––
l10n_ro_account_bank_statement_import_mt940_base14.02022-11-0579284%16%–––
l10n_ro_account_bank_statement_import_mt940_bcr14.02022-11-0550448%52%–––
l10n_ro_account_bank_statement_import_mt940_ing14.02022-11-0566477%23%–––
l10n_ro_account_bank_statement_import_mt940_alpha14.02022-11-1932199%1%–––
l10n_ro_stock_account_reception_in_progress14.02022-11-2626173%7%––20%
l10n_ro_account_bank_statement_import_mt940_rffsn14.02022-12-0755738%62%–––
l10n_ro_pos14.02023-08-1566621%79%––<1%
l10n_ro_account14.02023-08-183251%99%–––
l10n_ro_message_spv14.02024-06-123 6851%99%–<1%<1%
l10n_ro_stock_account_landed_cost16.02024-04-2288284%16%–––
l10n_ro_stock_account_tracking16.02024-04-2236490%10%–––
l10n_ro_account_bank_statement_import_mt940_exim17.02026-05-1253832%68%–––
l10n_ro_stock_account_retail19.02026-09-074 620100%––––
l10n_ro_stock_account_retail_landed_cost19.02026-09-07491100%––––
l10n_ro_stock_account_retail_picking_report19.02026-09-07419100%––––
l10n_ro_stock_account_retail_price_change19.02026-09-073 267100%––––
l10n_ro_stock_account_retail_price_difference19.02026-09-07201100%––––
l10n_ro_stock_account_retail_report19.02026-09-071 207100%––––
l10n_ro_pos_refund19.02026-09-13845100%––––
l10n_ro_pos_partner19.02026-09-15370100%––––
Total (43)8.02015-12-0645 13173%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 versionModules migratedNextERPTerrabitDakai SoftQDevOthers
11.066––––
13.01010––––
14.01616––––
15.035322––1
16.0381818––2
17.0381620–2–
18.0331814––1
19.03415108–1
20.0 *2828––––
Total23815964825

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.