Skip to main content
Romania e-Factura + SAF-T D406 — A made-to-order Odoo compliance app that submits CIUS-RO e-Factura invoices to ANAF SPV and  — 1/1Illustrative preview

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.

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

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
Mapping tables (dedicated Odoo models) for D406 accounts, tax codes, products and units of measure, secured with `ir.model.access.csv` and record rules
ANAF taxpayer and VAT-status validation via the anaf.ro API, extending `base_vat` for RO numbers
Romanian VAT rates (19/9/5%) and `l10n_ro` chart-of-accounts integration mapped to the correct e-Factura and D406 tax categories
e-Factura and D406 status and error tracking posted to the `mail.thread` chatter for a shared audit trail
ANAF test-vs-production environment switch so the full round trip is validated before live filing
Automated actions / scheduled cron for batch submission and status polling of pending documents
Optional e-Transport (UIT code) declaration hook for goods-movement reporting, scoped on request
XML-RPC / JSON-RPC callable methods so submission and export can be triggered from external systems
State machine on invoices (draft, sent, validated, rejected) with re-submit handling for ANAF error responses
QWeb status report summarising e-Factura submission state and D406 export runs for finance review

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 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

CriterionECOSIRECustom BuildCompetitorOdoo Native
e-Factura CIUS-RO submissionBuilt for your data, OAuth2 to SPV with signed-response storagePossible but you design the whole SPV integration from scratchGeneric UBL that may not match your tax/account mappingNo CIUS-RO builder or SPV submission in core
SAF-T D406 exportMonthly/annual XML on current ANAF schema, mapped to your chartFull schema build is a large, error-prone in-house effortOften sold separately or with fixed, non-configurable mappingNot produced by Odoo core
Inbound vendor e-invoicesSPV pull creates mapped draft vendor billsMust build fetch and mapping logic yourselfFrequently outbound-onlyNot available
Fit to your chart & taxesMapping tables seeded from your live accounts/taxes/UoMFully bespoke but you maintain it allOne-size template you adapt manuallyStandard `l10n_ro` accounts only, no e-Factura/D406 codes
Test vs productionEnvironment switch, full round trip validated in UATYou build and test the sandbox handlingVaries by vendor, not always exposedNot applicable
AuditabilityStatuses, errors and documents on the `mail.thread` chatterWhatever logging you choose to buildLimited or vendor-specific loggingNo e-Factura/D406 status tracking
Ownership & sourceFull source plus git repo handover, yours to extendYou own it but carry all build cost and riskLicensed binary, limited or no source accessCore code only, no localisation logic to own
Delivery & supportone working week build-to-order, install, training, support windowLong internal project, support is your team's burdenInstant install but self-service configurationNo 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.

Request a quote

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

Request a Quotation

Tell us about your Romania e-Factura + SAF-T D406 requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.