RO_CIUS — Romanian Core Invoice Usage Specification
RO_CIUS is the Romanian customization of OASIS UBL 2.1, conformant with the European EN 16931 standard. It is the only invoice format accepted by e-Factura: no other syntax (CII, EDIFACT, JSON) is legally valid for domestic B2B and B2G clearance.
Origin — from CIUS to RO_CIUS
The Core Invoice Usage Specification concept is defined by EN 16931:2017. Each EU Member State may publish its own CIUS that restricts, complements or constrains the European base model to address its tax specificities.
Romania published RO_CIUS V1.0 in April 2022 (before voluntary B2G e-Factura opening), then V1.0.1 in November 2023 (EN 16931 AMD 2 integration and transition rules). The specification is publicly published on static.anaf.ro in three formats: descriptive PDF, .sch Schematron, and XML codelists.
- V1.0 (April 2022): EN 16931:2017 compliance, B2G pilot launch.
- V1.0.1 (November 2023): EN 16931 AMD 2, taxare inversă additions, Legea 296/2023 alignment.
- V1.0.2 (announced Q3 2026): EN 16931 v1.2 integration, alignment with ViDA (VAT in the Digital Age) Wave 2.
Mandatory RO_CIUS fields
The fields marked as mandatory by RO_CIUS reuse the EN 16931 core and add a handful of national constraints:
| XPath element | Description | RO_CIUS constraints |
|---|---|---|
cbc:CustomizationID | Customization identifier | Must be urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:CIUS-RO:1.0.1 |
cbc:ID | Invoice number | Max 30 characters, unique per issuer CIF |
cbc:IssueDate | Issue date | Format YYYY-MM-DD |
cbc:InvoiceTypeCode | Document type | 380 invoice, 381 credit note, 384 corrective, 389 self-billed |
cbc:DocumentCurrencyCode | Currency | RON or accepted EU currency — ANAF conversion if non-RON |
AccountingSupplierParty/PartyTaxScheme/CompanyID | Issuer CIF | Prefixed RO + 2 to 10 digits |
AccountingSupplierParty/PartyLegalEntity/CompanyID | Trade Register number | Format J40/12345/2015 (J + county + n° + year) |
AccountingCustomerParty/PartyTaxScheme/CompanyID | Recipient CIF | Prefixed RO if RO VAT taxpayer |
TaxTotal/TaxAmount | VAT total | 2 decimals, currency = DocumentCurrencyCode |
LegalMonetaryTotal/PayableAmount | Amount to pay | 2 decimals, currency = DocumentCurrencyCode |
Romania-specific fields
RO_CIUS introduces fields or constraints specific to the Romanian context:
- Trade Register number (
J/F/C + county + n° + year) — mandatory for the issuer, unique identifier in the Romanian Trade Register (ONRC). - CIF with RO prefix — only for active VAT taxpayers. A non-taxable entity uses its CUI without the RO prefix.
- County code (judet) — 2-letter code of the
Romanian county (B for Bucharest, CJ for Cluj, etc.), inserted in
cac:Country/cbc:IdentificationCodevia RO extension. - Payment order reference — for transactions with
public administration, reference to the municipal purchase order
via
cac:OrderReference/cbc:ID. - UIT e-Transport reference — if the invoice
corresponds to an e-Transport shipment, the UIT (unique transport
code) must be referenced via
cac:DespatchDocumentReference/cbc:ID. - Taxare inversă textual mention — for art. 331
Cod Fiscal operations, the mention "taxare inversă conform
art. 331 Cod Fiscal" must appear in
cac:LegalMonetaryTotal/cbc:Noteor in a header note.
Schematron validation rules
The RO_CIUS Schematron published by ANAF complements UBL XSD validation with ~150 business rules (prefixed BR-RO-XX):
- BR-RO-010: the issuer CIF must exist in the ANAF active VAT taxpayer database at the time of issuance.
- BR-RO-020: if
cbc:DocumentCurrencyCode≠ RON, an ANAF day exchange rate must be indicated viacac:PricingExchangeRate. - BR-RO-031: reverse charge operations
(cbc:ID=
AE) must include the textual mention "taxare inversă conform art. 331". - BR-RO-040: for B2G invoices, the recipient's
cod autoritate (from SEAP) must be indicated in
cbc:BuyerReference. - BR-RO-080: for e-Transport invoices, the UIT code
must be referenced via
cac:DespatchDocumentReference.
CEN BR-CO-XX rules remain applicable — BR-CO-15 arithmetic consistency, BR-CO-25 positive amounts, etc.
Minimal RO_CIUS XML example
Domestic RO → RO invoice, 1,000 RON HT, 19% standard rate:
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:CIUS-RO:1.0.1</cbc:CustomizationID>
<cbc:ID>FAC-2026-04-0142</cbc:ID>
<cbc:IssueDate>2026-04-15</cbc:IssueDate>
<cbc:DueDate>2026-05-15</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>RON</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cac:PartyName><cbc:Name>SC Furnizor SRL</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Bulevardul Magheru 12</cbc:StreetName>
<cbc:CityName>Bucuresti</cbc:CityName>
<cbc:PostalZone>010332</cbc:PostalZone>
<cac:Country><cbc:IdentificationCode>RO</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>RO12345678</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>SC Furnizor SRL</cbc:RegistrationName>
<cbc:CompanyID>J40/12345/2015</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyName><cbc:Name>SC Client SA</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Strada Industriilor 45</cbc:StreetName>
<cbc:CityName>Cluj-Napoca</cbc:CityName>
<cbc:PostalZone>400000</cbc:PostalZone>
<cac:Country><cbc:IdentificationCode>RO</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>RO87654321</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">190.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">190.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="RON">1000.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="RON">1190.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="RON">1190.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="EA">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Serviciu consultanță IT</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice> EN 16931 + RO codelists
Mandatory codelists used by RO_CIUS:
- InvoiceTypeCode (UNTDID 1001): 380 (Commercial invoice), 381 (Credit note), 384 (Corrected invoice), 389 (Self-billed), 751 (Invoice for accounting purposes — IC usage).
- TaxCategory ID (UNTDID 5305): S, Z, E, AE, K, G, L, M, O (see VAT page for detailed mapping).
- Currency (ISO 4217): RON mainly, EUR/USD accepted with ANAF exchange rate.
- Country (ISO 3166-1 alpha-2): RO mandatory for RO parties, other ISO standard codes for IC.
- Unit of measure (UN/ECE Rec 20): EA, KGM, LTR, MTR, etc. The UNECE list is imposed — no national codes.
- PaymentMeans (UNTDID 4461): 30 Bonifico (transfer), 48 Card, 49 SEPA, 58 Direct debit, 1 Cash (rare in B2B), 23 IBAN transfer.
- VATEX (EU codelist): EU VAT exemption codes extended with RO codes for Romanian specifics.
Common pitfalls
- RO prefix on CIF. For active VAT taxpayers,
CompanyID must be
RO12345678. Without the prefix, the invoice is rejected (BR-RO-010). - UTF-8 vs Latin-2 encoding. Many French or German ERPs emit in Latin-1 by default. Romanian diacritic characters (ă, â, î, ș, ț) become unreadable. Strict UTF-8 mandatory.
- Wrongly formatted Trade Register number. The
expected format is
J40/12345/2015(J = commercial company, 40 = Bucharest county code, 12345 = sequential number, 2015 = registration year). F (PFA) or C (foreign branch) variants must be respected. - Non-RON currency without exchange rate. EUR or USD
invoice without
cac:PricingExchangeRateindicating the ANAF rate of the issuance date → BR-RO-020 rejection. - InvoiceTypeCode 380 vs 384. A corrective invoice
must use 384 (corrected invoice) with reference to the original
invoice via
cac:BillingReference. Not 380. - UIT e-Transport not referenced. For e-Transport shipment invoices (> €250K since 2025), forgetting the UIT reference triggers a dual ANAF rejection (e-Factura + e-Transport).
Cross-links
- Romania hub — full e-Factura ANAF
- e-Factura — pure RO_CIUS clearance
- SPV — Spațiul Privat Virtual
- Romanian VAT regimes
- D406 — Romanian SAF-T
- e-Transport — companion document
- UBL — international standard
- EN 16931 — European standard
- ANAF — RO_CIUS technical specifications
- OASIS UBL 2.1 — official specification