# RO e-Factura validator

Source: https://xmlvalid.com/e-invoicing/romania

> Check an invoice for RO e-Factura against the rules the Ministry of Finance publishes for ANAF's validator: the UBL 2.1 schema, EN 16931 and the CIUS-RO rules, with every finding on its line. Nothing is uploaded.

## RO e-Factura in short

RO e-Factura is Romania's national e-invoicing system, run by ANAF (the National Agency for Fiscal Administration). Invoices to public institutions go through it since 1 July 2022. Since 1 January 2024, businesses established in Romania report their invoices to other businesses in it, and from 1 July 2024 only invoices sent through RO e-Factura count as invoices between them. Since 1 January 2025, invoices to consumers go through it as well, except simplified invoices; a consumer who gives no tax code is written as thirteen zeros.

An invoice is uploaded within five calendar days of its issue. The original invoice is the XML file with the Ministry of Finance seal.

The XML follows EN 16931 with the Romanian CIUS (CIUS-RO), in UBL 2.1 or CII. Its specification identifier (BT-24) is `urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:CIUS-RO:1.0.1`.

## How to check an RO e-Factura invoice

1. Open the [validator with the RO e-Factura invoice profile](https://xmlvalid.com/validate?schema=ro-efactura-invoice), or the credit note one. An invoice opened as a file or pasted picks the right one from its identifier.
2. Paste the UBL or drop the file, then press **Validate**.
3. Click a rule id for what it checks. The CIUS-RO messages are in Romanian and English, as published.

## What is checked

The UBL 2.1 schema, then the Ministry of Finance's validation artefacts 1.0.9 (valid from 5 June 2024), the rules ANAF's own validator runs: EN 16931 with the Romanian changes, its code lists and the CIUS-RO rules, in one set. We compared our results with Saxon for Java on the Ministry's two UBL examples and 122 altered ones: every rule was the same. ANAF's desktop validator gave the same rules too, except where it stopped at a tax code error first.

The CIUS-RO rules check the specification identifier ([BR-RO-001](https://xmlvalid.com/rules/BR-RO-001)), Bucharest sectors and county codes in addresses ([BR-RO-100](https://xmlvalid.com/rules/BR-RO-100), [BR-RO-110](https://xmlvalid.com/rules/BR-RO-110)), the buyer's identifiers ([BR-RO-120](https://xmlvalid.com/rules/BR-RO-120)), VAT in RON for an invoice in another currency ([BR-RO-030](https://xmlvalid.com/rules/BR-RO-030)), dates written as YYYY-MM-DD and the maximum length of text fields.

ANAF's validator also checks the seller's and buyer's tax codes outside the published rules: a CUI by its check digit, a thirteen digit CNP or NIF by its date of birth and check digit. We run the same checks as rules of our own ([XV-RO-02](https://xmlvalid.com/rules/XV-RO-02), [XV-RO-12](https://xmlvalid.com/rules/XV-RO-12) and the others), written after the validator's code and compared with it on 119 documents. RO e-Factura also checks an uploaded invoice against ANAF's records, which is not done here. The Ministry's examples name CIUS-RO 1.0.0 and tax codes that ANAF's validator rejects, so the examples in our catalog have 1.0.1 and tax codes with valid check digits.

The Ministry publishes the CIUS-RO rules for UBL only. RO e-Factura accepts CII invoices too, but without published rules we do not offer a CII profile.

## Profiles to check with

- [Romania RO e-Factura Invoice (UBL)](https://xmlvalid.com/schemas/ro-efactura-invoice): A Romanian RO e-Factura invoice, checked against the UBL 2.1 schema and the CIUS-RO rules (EN 16931 and BR-RO-\*) the Ministry of Finance publishes for ANAF's validator. [Validate](https://xmlvalid.com/validate?schema=ro-efactura-invoice)
- [Romania RO e-Factura Credit Note (UBL)](https://xmlvalid.com/schemas/ro-efactura-credit-note): A Romanian RO e-Factura credit note, checked against the UBL 2.1 CreditNote schema and the CIUS-RO rules (EN 16931 and BR-RO-\*) the Ministry of Finance publishes for ANAF's validator. [Validate](https://xmlvalid.com/validate?schema=ro-efactura-credit-note)

## Rules invoices break most

Each one has a page with what it checks, its test and, for many, how to fix it.

- [`BR-RO-001`](https://xmlvalid.com/rules/BR-RO-001): Identificatorul specificatie (BT-24) trebuie sa corespunda sintactic cu valoarea precizata in Specificatii tehnice și de utilizare a elementelor de baza ale fac...
- [`XV-RO-12`](https://xmlvalid.com/rules/XV-RO-12): CUI cumparator incorect. #The buyer's tax code (CUI) fails ANAF's check: at most ten digits, no leading zero, and a valid check digit.
- [`BR-RO-100`](https://xmlvalid.com/rules/BR-RO-100): Daca Codul tarii Vanzatorului (BT-40) este RO si Subdiviziunea tarii Vanzatorului (BT-39) este RO-B (corespunzator Municipiului Bucuresti), atunci Localitatea V...
- [`BR-RO-110`](https://xmlvalid.com/rules/BR-RO-110): Daca Codul tarii Vanzatorului (BT-40) este RO, atunci Subdiviziunea tarii Vanzatorului (BT-39) trebuie sa fie codificata folosind lista de coduri ISO 3166-2:RO...
- [`BR-RO-120`](https://xmlvalid.com/rules/BR-RO-120): Identificatorul de înregistrare legala a Cumparatorului (BT-47) si/sau Identificatorul de TVA al Cumparatorului (BT-48) trebuie sa fie înscris. #The Buyer legal...
- [`BR-RO-030`](https://xmlvalid.com/rules/BR-RO-030): Daca Codul monedei facturii (BT-5) este altul decat RON, atunci Codul monedei de contabilizare a TVA (BT-6) trebuie sa fie RON. #If the Invoice currency code (B...

## Questions

### Is the invoice uploaded?

No. The schema check and the rules both run in your browser. Only the API and URL monitors validate on our servers.

### Does a valid result mean ANAF will accept the invoice?

It means it passes the schema, the rules the Ministry publishes and the tax code checks of ANAF's validator. When the invoice is uploaded, RO e-Factura also checks it against ANAF's records, which this check does not.

### Why are some messages in Romanian and English?

The CIUS-RO rules give each message in both languages, Romanian first; the EN 16931 rules are in English. Each set keeps the messages its publisher wrote.

### Can I check invoices from code?

Yes: the API and the command-line client with --schema ro-efactura-invoice, or --schema auto for a folder of mixed invoices.

### Official sources

- [Ministerul Finanțelor: RO e-Factura technical information, with the validation artefacts and examples](https://mfinante.gov.ro/web/efactura/informatii-tehnice)
- [ANAF: guide to RO e-Factura (in Romanian, PDF)](https://static.anaf.ro/static/10/Anaf/AsistentaContribuabili_r/Ghid_RO_eFactura.pdf)
- [ANAF: RO e-Factura changes by OUG 138/2024, B2C from 2025 (in Romanian, PDF)](https://static.anaf.ro/static/10/Brasov/Brasov/oug_138_efactura.pdf)
- [ANAF Iași: RO e-Factura briefing, August 2024, deadlines (in Romanian, PDF)](https://static.anaf.ro/static/10/Iasi/material_informativ_13-08-2024.pdf)

### Other countries

- [French e-invoice validator](https://xmlvalid.com/e-invoicing/france)
- [German e-invoice validator: XRechnung and ZUGFeRD](https://xmlvalid.com/e-invoicing/germany)
- [Belgian e-invoice validator: Peppol BIS](https://xmlvalid.com/e-invoicing/belgium)
- [KSeF invoice validator: FA(3)](https://xmlvalid.com/e-invoicing/poland)
- [Croatian eRačun validator](https://xmlvalid.com/e-invoicing/croatia)
- [FatturaPA validator](https://xmlvalid.com/e-invoicing/italy)
- [UAE e-invoice validator (PINT AE)](https://xmlvalid.com/e-invoicing/uae)
- [InvoiceNow validator (PINT SG)](https://xmlvalid.com/e-invoicing/singapore)
- [JP PINT validator](https://xmlvalid.com/e-invoicing/japan)
- [Australian e-invoice validator (PINT A-NZ)](https://xmlvalid.com/e-invoicing/australia)
- [Spanish e-invoice validator](https://xmlvalid.com/e-invoicing/spain)
