Invoices between businesses established in Romania must go through RO e-Factura since 1 July 2024, as XML (UBL 2.1, per the national specification).
For invoices issued from 2026, the submission deadline is 5 working days from issue.
A robust integration does not stop at upload: it tracks each invoice's status, retrieves ANAF's response and alerts whoever can fix a rejection.
Most Romanian invoicing software already submits invoices to RO e-Factura, Romania's national e-invoicing system. Problems start when invoices originate elsewhere: an international ERP, an e-commerce platform, an in-house application or several systems at once. This is common for foreign groups with a Romanian subsidiary. The guide explains what an integration must do to be reliable.
This guide covers the technical side. For the tax treatment of a specific situation, check with your accountant or tax adviser.
The obligations behind it
B2B: invoices between taxable persons established in Romania go through RO e-Factura since 1 July 2024.
B2G: invoices to public institutions use the same system.
Deadline: for invoices issued from 1 January 2026, submission must happen within 5 working days of issue.
Foreign companies with a Romanian VAT number: brought into scope by the changes applicable from 2026.
B2C: the rules for invoices to individuals have changed several times. Check the version in force on ANAF's website before designing the flow.
What the integration architecture looks like
Invoice source. The ERP or application that issues the invoice stays the source of truth.
XML generation. Invoice data is transformed into UBL 2.1 XML following the national specification. Most errors occur here: VAT codes, units of measure, partner identification.
Submission via API. The application authenticates through ANAF's OAuth mechanism after registering in the portal, using the representative's qualified digital certificate.
Status tracking. After upload, status is polled until accepted or rejected.
Response retrieval. ANAF's message (validated invoice or errors) is downloaded and archived next to the invoice.
Alerting. A rejection reaches the person who can fix it, with the error explained.
Monitoring. A dashboard shows invoices not yet sent, pending or rejected against the legal deadline.
Common integration mistakes
Mistake
Effect
Prevention
The flow stops at upload
Nobody sees rejections.
Status tracking and alerts for every invoice.
Incomplete partner data in the ERP
Repeated validation rejections.
Validate partner data when it is created, not at invoicing.
Several systems issue invoices
Forgotten invoices, inconsistent numbering.
One shared submission layer and a single register.
Expired digital certificate
Submission stops abruptly.
Alerts before expiry and a named owner.
Uncontrolled retries
Invoices sent twice.
Unique identifiers and a status check before resubmitting.
Checklist for a reliable integration
Every system that issues invoices is identified
XML generation is tested on every invoice type (including credit notes and advances)
Validation runs before submission
Each invoice's status is tracked to the end
ANAF responses are archived with the invoice
Rejections reach a named owner automatically
Digital certificate expiry is monitored
The 5-working-day deadline is visible on a dashboard