- Home
- Apps
- SaaS Tools
- Romania e-Factura + SAF-T D406
Illustrative previewA made-to-order Odoo compliance app that submits CIUS-RO e-Factura invoices to ANAF SPV and exports the SAF-T D406 declaration from the same data.
ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19.
What is Romania e-Factura + SAF-T D406?
A made-to-order Odoo compliance app that submits CIUS-RO e-Factura invoices to ANAF SPV and exports the SAF-T D406 declaration from the same data. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Romanian companies now carry two heavy, deadline-driven obligations at once: every B2B and B2G invoice must clear the ANAF SPV e-Factura channel in the CIUS-RO UBL format, and the SAF-T D406 declaration must be filed on the ANAF schema on a monthly or quarterly cadence plus the annual run. Odoo's native l10n_ro gives you the Romanian chart of accounts, VAT tax groups (19/9/5%) and base_vat validation, and account_edi provides an EDI framework — but out of the box there is no CIUS-RO document builder, no OAuth2 handshake with SPV, no inbound document fetch, and nothing that assembles the D406 XML. Teams end up exporting to spreadsheets, hand-uploading to the ANAF portal, and reconciling errors after the fact.
This is a build-to-order app that ECOSIRE designs, builds, and installs specifically for your Odoo database. We extend account.move with the fields, compute/@api.depends methods and state machine needed to generate valid CIUS-RO UBL 2.1 XML directly from your posted invoices, then submit it to the ANAF SPV over OAuth2, poll for the signed response, and store the returned index and signed document against the invoice. Inbound e-Factura documents are pulled from SPV and turned into draft account.move vendor bills with your mapped taxes and accounts, so accounts payable starts from a matched draft rather than a PDF. Every submission, download, error message and ANAF status lands on the mail.thread chatter so finance and auditors share one timeline.
The SAF-T D406 side reuses the same posted ledger. We build the D406 monthly/annual XML export against the current ANAF schema, driven by mapping tables (regular Odoo models with ir.model.access.csv and record rules) that translate your accounts, taxes, products and units of measure into the codes ANAF expects — so the declaration reflects your real chart rather than a generic template. A dedicated test-vs-production environment switch lets you validate the full round trip against the ANAF test endpoint before any live filing, and an optional e-Transport (UIT) declaration hook can be scoped in for goods movements. Everything is delivered as a proper Odoo module: __manifest__.py with pinned dependencies (account, account_edi, base_vat, l10n_ro), XML/OWL views, QWeb status reports, security rules, and automated actions for scheduled submission and status polling, all callable over XML-RPC/JSON-RPC for integration.
Because it is built to order, there is no instant download — after a short scoping call we confirm the exact e-Factura profiles, D406 mapping depth and environments in writing, then build and hand over on staging for UAT before go-live. Typical delivery is one working week from confirmed scope. Pricing starts from $999 (indicative, single-company base scope); multi-company groups, deeper D406 mapping, e-Transport, and custom integrations increase the quoted scope.
What you get
- Installable, version-pinned Odoo module source for your target version (17.0, 18.0 or 19.0)
- Installation and configuration on your Odoo instance, including ANAF SPV OAuth2 credentials and environment switch setup
- Technical documentation covering models, fields, mapping tables and the XML-RPC/JSON-RPC integration surface
- End-user guide plus a live training session for your finance and AP team
- Post-go-live support window for defect fixes and ANAF-round-trip questions
- UAT on a staging database with a documented rollback plan before production cut-over
- Git repository handover with full commit history and tagged release
- Configured D406 mapping tables seeded from your live chart of accounts and tax setup
Who this is for
Romanian SME finance manager
Runs monthly VAT and SAF-T D406 filing and needs mandatory e-Factura submission handled inside Odoo without exporting to spreadsheets or the ANAF portal by hand.
Group accountant / shared-services controller
Oversees several Romanian legal entities and wants one consistent e-Factura and D406 process across companies, with mapping tables and audit trail per entity.
Odoo partner / internal ERP team
Maintains a customised Odoo deployment and wants a clean, dependency-pinned module they can read, extend and support, delivered with the git repo rather than a black box.
AP / compliance lead
Responsible for inbound vendor e-invoices and error resolution; needs SPV documents pulled in as draft bills and every ANAF status visible on the chatter for auditors.
How Romania e-Factura + SAF-T D406 Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| e-Factura CIUS-RO submission | Built for your data, OAuth2 to SPV with signed-response storage | Possible but you design the whole SPV integration from scratch | Generic UBL that may not match your tax/account mapping | No CIUS-RO builder or SPV submission in core |
| SAF-T D406 export | Monthly/annual XML on current ANAF schema, mapped to your chart | Full schema build is a large, error-prone in-house effort | Often sold separately or with fixed, non-configurable mapping | Not produced by Odoo core |
| Inbound vendor e-invoices | SPV pull creates mapped draft vendor bills | Must build fetch and mapping logic yourself | Frequently outbound-only | Not available |
| Fit to your chart & taxes | Mapping tables seeded from your live accounts/taxes/UoM | Fully bespoke but you maintain it all | One-size template you adapt manually | Standard `l10n_ro` accounts only, no e-Factura/D406 codes |
| Test vs production | Environment switch, full round trip validated in UAT | You build and test the sandbox handling | Varies by vendor, not always exposed | Not applicable |
| Auditability | Statuses, errors and documents on the `mail.thread` chatter | Whatever logging you choose to build | Limited or vendor-specific logging | No e-Factura/D406 status tracking |
| Ownership & source | Full source plus git repo handover, yours to extend | You own it but carry all build cost and risk | Licensed binary, limited or no source access | Core code only, no localisation logic to own |
| Delivery & support | one working week build-to-order, install, training, support window | Long internal project, support is your team's burden | Instant install but self-service configuration | No delivery — feature simply absent |
Frequently Asked Questions about Romania e-Factura + SAF-T D406
Is this an app I can download and install today?
No. It is a build-to-order app that ECOSIRE builds specifically for your Odoo database. There is no instant download — we scope, build, install and support it for you, and you receive the full source and git repository on handover.
How long does delivery take?
Typical delivery is one working week from confirmed scope. After a short scoping call we agree the e-Factura profiles, D406 mapping depth and environments in writing, then build and hand over on staging for UAT before go-live. Complex multi-company or e-Transport scopes can extend the timeline.
How does pricing and scoping work?
Pricing starts from $999 as an indicative single-company base-scope figure. We give a fixed quote only after the scoping call, once the exact companies, mapping depth, integrations and environments are confirmed. Multi-company, deeper D406 mapping, e-Transport and custom integrations increase the quoted scope.
What support and updates do I get after go-live?
Every build includes a post-go-live support window for defect fixes and ANAF round-trip questions. Because the module tracks the evolving ANAF e-Factura and D406 schemas, we can quote ongoing maintenance to keep it aligned as ANAF updates its specifications and validation rules.
Which Odoo versions and editions are supported?
We build for Odoo 17.0, 18.0 and 19.0. The module depends on `account`, `account_edi`, `base_vat` and `l10n_ro`, which are available in Community; we confirm your exact edition and installed localisation during scoping so the dependency chain and accounting flows match your setup.
Can it both submit outbound invoices and pull inbound vendor bills?
Yes. It generates and submits CIUS-RO UBL e-Factura for your sales invoices to SPV, polls for the signed response, and separately fetches inbound e-Factura documents from SPV to create draft vendor bills with your mapped taxes and accounts.
How do you make sure filings are correct before going live?
An ANAF test-vs-production environment switch lets us validate the complete e-Factura and D406 round trip against the ANAF test endpoint on your staging database during UAT. Only after you sign off do we cut over to the production environment, with a documented rollback plan in place.
Related Modules

RingCentral Telephony Connector for Odoo
A build-to-order Odoo connector that ties your RingCentral phone system into CRM, Contacts and Helpdesk — click-to-dial, incoming-call screen-pop, and automatic call logging against the right record. ECOSIRE builds, installs and supports it after a short scoping call.

Ringover Telephony Connector for Odoo
A made-to-order Odoo integration that wires your cloud phone system into CRM, Contacts, and Helpdesk — click-to-call, inbound screen-pop, SMS threads, two-way contact sync, and recording links logged straight onto the record. ECOSIRE scopes, builds, installs, and supports it for Odoo 17.0/18.0/19.0.

Sale Invoice – Exclude Salesperson
A build-to-order Odoo module that prevents the salesperson linked to a sales order or customer from being automatically subscribed as a follower on the resulting invoice. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17.0, 18.0, or 19.0 instance.

Sale Order Automation
A build-to-order Odoo module that turns order confirmation into a fully automated hand-off: it auto-creates the customer invoice, validates it, and processes the delivery transfer. ECOSIRE scopes, builds, installs, and supports it for your specific sales flow.
Romania e-Factura + SAF-T D406
A made-to-order Odoo compliance app that submits CIUS-RO e-Factura invoices to ANAF SPV and exports the SAF-T D406 declaration from the same data. ECOSIRE builds, installs, and supports it for your Odoo 17, 18, or 19.
- CIUS-RO UBL 2.1 e-Factura XML generation from posted `account.move` records with schema and business-rule validation before submission
- OAuth2 authentication and submission to the ANAF SPV endpoint, with automatic polling for the signed response and stored ANAF index/download id
- Inbound e-Factura retrieval from SPV that creates draft `account.move` vendor bills with mapped taxes, accounts and partners
- SAF-T D406 monthly, quarterly and annual XML export built against the current ANAF D406 schema