eliDocs
Format Reference

Romania RO_CIUS (RO e-Factura)

Generate and validate Peppol BIS Billing 3.0 UBL with the Romanian RO_CIUS Schematron overlay; ANAF SPV transmission stays with your operator.

RO_CIUS (also styled CIUS-RO) is Romania’s national Core Invoice Usage Specification on top of Peppol BIS Billing 3.0 UBL, governed by ANAF (Agenția Națională de Administrare Fiscală) via the Ministerul Finanțelor. It is the format required by the RO e-Factura mandate, which has been mandatory for B2B and B2G invoices since 2024-07-01 and live for B2G since 2022.

Beliq targets CIUS-RO 1.0.9 (vendored from the Helger phive-rules-cius-ro 4.3.5 JAR, Maven Central, Apache-2.0). Two cbc:CustomizationID URN families are accepted:

URN family Status Effective
urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:CIUS-RO:1.0.1 Current (Ordinul 4092/2022) 2024-06-05 onward
urn:cen.eu:en16931:2017#compliant#urn:efactura.mfinante.ro:RO_CIUS:1.0.0.2021 Legacy (OMF 1366/2021) Still accepted on validate

What Beliq emits

Call POST /v1/generate with standard: "peppol-bis" and profile: "romania-ro-cius". The output is xml (PDF output is not defined for RO_CIUS; the format is UBL only).

{
  "standard": "peppol-bis",
  "profile": "romania-ro-cius",
  "output": "xml",
  "invoice": {
    "number": "2026-RO-0001",
    "issueDate": "2026-06-02",
    "currencyCode": "RON",
    "buyerReference": "BUYER-REF-RO-001",
    "seller": {
      "name": "Furnizor SRL",
      "vatId": "RO12345678",
      "peppol": { "schemeId": "9947", "id": "RO12345678" },
      "address": {
        "street": "Strada Exemplu 1",
        "city": "Cluj-Napoca",
        "postalCode": "400000",
        "countryCode": "RO",
        "countrySubentity": "RO-CJ"
      }
    },
    "buyer": {
      "name": "Client SRL",
      "vatId": "RO87654321",
      "peppol": { "schemeId": "9947", "id": "RO87654321" },
      "address": {
        "street": "Bulevardul Test 2",
        "city": "SECTOR1",
        "postalCode": "010101",
        "countryCode": "RO",
        "countrySubentity": "RO-B"
      }
    }
  }
}

The builder emits the current CIUS-RO:1.0.1 URN on cbc:CustomizationID. Everything else (party endpoints, addresses, VAT IDs, invoice lines, tax breakdown, totals) follows the standard Peppol BIS 3.0 UBL layout: the same peppol block, buyerReference, line shape, and totals you would use for any Peppol invoice.

Invoice.romania is an optional namespace reserved for future Romania-specific fields. It is intentionally empty today because the engine consumes only generic UBL fields for Romania: there is no Romania-only payload required beyond setting the profile.

Romania-specific fields you already use

These are standard UBL / EN 16931 fields that the RO_CIUS Schematron enforces for Romanian invoices. Beliq emits them from generic invoice data; you don’t need a Romania-specific namespace to populate them.

Field on Invoice UBL element RO rule Purpose
seller.peppol.schemeId / buyer.peppol.schemeId cac:Party/cbc:EndpointID@schemeID PEPPOL-EN16931-R010 / R020 Use 9947 (Romania VAT scheme). ANAF has not registered a separate Romanian Peppol scheme.
address.countryCode cac:Country/cbc:IdentificationCode BR-RO-110 "RO" for Romanian parties.
address.countrySubentity cbc:CountrySubentity BR-RO-110 ISO 3166-2:RO code, e.g. "RO-CJ", "RO-B". Bucharest is "RO-B"; the city in that case uses one of the SECTOR1..SECTOR6 codes.
currencyCode cbc:DocumentCurrencyCode BR-RO-030 "RON" (single-currency happy path).
taxCurrencyCode + taxTotalInAccountingCurrency cbc:TaxCurrencyCode + second cac:TaxTotal BR-RO-030 / BR-53 When the invoice currency differs from RON (e.g. cross-border EUR), set both and Beliq emits the second TaxTotal block carrying the VAT total restated in RON (BT-111).
buyerReference or orderReference cbc:BuyerReference / cac:OrderReference PEPPOL-EN16931-R003 One of the two is required for any Peppol-family invoice.

Validation pipeline

For RO_CIUS the validation chain runs the same XSD + Schematron stack as cross-border Peppol, with the Romania overlay layered on top:

Input → UBL 2.1 XSD → CIUS-RO XSLT (EN 16931 + Peppol BIS + RO_CIUS rules) → RO e-Factura XSLT (RO operational + VAT) → Result

The two vendored XSLT files run sequentially. The first XSLT bakes in the EN 16931 and Peppol BIS rules via the Helger compiler, so firing the Romania pair alone is sufficient; Beliq does not also fire the plain Peppol arm on Romania documents. Errors from both arms merge into one validationResult.errors list with their original Romanian rule IDs (BR-RO-*).

When validation passes, the /v1/validate response includes:

{
  "valid": true,
  "format": "ubl",
  "profileDetected": "romania-ro-cius",
  "ciusVersion": "1.0.9",
  "romaniaRoCiusVersion": "1.0.9",
  "errors": [],
  "warnings": []
}

The vendored Schematron pack and version pin are listed on the validation artifacts page.

Verification

RO_CIUS is Authority-checked: Beliq runs the CIUS-RO Schematron (sourced from the Helger phive-rules-cius-ro 4.3.5 JAR, itself derived from the ANAF CIUS-RO specification) against every document. Both UBL 2.1 XSD and the two-XSLT Schematron pair execute on every generate and validate call, enforcing the BR-RO-* rule set.

Promotion to fully-verified is gated on T3 negative fixtures plus a phive cross-validation gate (running the vendored XSLTs through the Helger phive-rules-cius-ro JAR and comparing rule-id sets). ANAF publishes no separately runnable validator and no downloadable negative corpus; that gap is tracked as an upstream gap and reviewed each quarter.

Note: Romania RO_CIUS does not appear in the GET /v1/rulesets public catalog (it is a CIUS overlay on Peppol BIS, not an independent format entry). The vendored Schematron version pin is listed on the validation artifacts page.

What Beliq does NOT do

  • ANAF SPV submission. Upload of the signed UBL to webservicesp.anaf.ro, certificate-based authentication, receipt persistence, and the “sistemul național de facturare electronică” record-retention obligations.
  • Document signing (XAdES on the SPV envelope, ANAF receipt verification).
  • Credit notes via the RO_CIUS profile are accepted by the runtime (Peppol-family enforcement applies), but there is no Romania-specific golden round-trip yet. Treat as best-effort until promoted.
  • Romanian sub-versions of CIUS-RO older than 1.0.9. The runtime targets the current 1.0.1 URN; the RO_CIUS:1.0.0.2021 legacy URN is accepted on the validate path only.