E-invoice validator for EN 16931 and XRechnung

Check UBL and CII invoice XML against fixed official EN 16931 and XRechnung rules after explicit server-processing consent.

Your invoice is sent to our server for business-rule checks and is not stored. Temporary processing files are deleted after completion or timeout. Invoice content is not logged. Privacy details.

Rules, scope and source

Checks against the official EN 16931 rules version 1.3.16 (UBL 2.1 and CII D16B), with XRechnung 3.0.2 national rules version 2.6.0 when selected. XSD structure is checked first. A pass covers these fixed technical rules; it is not certification or acceptance by a tax authority or recipient. Peppol has additional rules; the complete Peppol ruleset and transport checks are linked only. Some assertions bundled in the fixed XRechnung package carry PEPPOL identifiers; they remain part of that national package check and do not establish full Peppol validation.

Rule sources, licences, notices and service source: EN artefacts EUPL 1.2, KoSIT rules Apache 2.0, SaxonC-HE MPL 2.0. Rules are pinned; this page does not claim they are the latest required release for your recipient.

Maximum 10 MB per invoice, two concurrent workers, 20-second deadline, 15 CPU seconds per worker, 64 GiB virtual address ceiling, 1,200 MiB total service memory and at most 100 report entries. The larger supplied schema files are allowed only in the fixed official package; user schema upload limits remain 1 MB.

Recurring invoice checks

Pro US$19/month supports 25 files per batch; Team US$49/month supports 100. Existing plan limits apply; no separate invoice pricing. Batches run sequentially and can take several minutes. Compare plans.

EN 16931 guide · XRechnung guide · API, CLI and Actions documentation

UBL, CII and the profile your recipient expects

UBL 2.1 and UN/CEFACT CII D16B are different XML vocabularies for the European invoice model. UBL uses Invoice or CreditNote roots and separate aggregate/basic namespaces. CII uses CrossIndustryInvoice with trade agreement, delivery and settlement structures. A field has different element paths in the two syntaxes; translate business terms rather than renaming tags.

Select EN 16931 for the fixed European semantic checks. Select XRechnung when the recipient asks for that German profile: it adds national constraints, including electronic addresses and buyer-reference requirements. A Leitweg-ID can be the buyer reference required for a German public recipient; confirm the actual recipient identifier instead of inventing one. Neither mode sends the invoice to a portal.

Mandate dates and country scope

Snapshot checked on 2 November 2026. These dates describe selected scopes and transitions; the format accepted by a particular recipient still matters.

Ten frequent rules in our mutation test

Ranked by triggered reports in 1338 synthetic mutations of official UBL/CII examples, not by visitor errors or search volume. One mutation can trigger several rules.

  1. BR-S-08 — Standard VAT taxable base must match the lines (281 mutation reports)
  2. PEPPOL-EN16931-R008 — Empty XML elements are forbidden (111 mutation reports)
  3. BR-CO-10 — Line net total must equal the sum of lines (108 mutation reports)
  4. BR-CO-04 — Each line needs a VAT category code (77 mutation reports)
  5. BR-25 — Each invoice line needs an item name (72 mutation reports)
  6. BR-21 — Each invoice line needs an identifier (51 mutation reports)
  7. BR-27 — Item net price cannot be negative (51 mutation reports)
  8. BR-S-05 — Standard-rated lines need a positive VAT rate (39 mutation reports)
  9. BR-CO-15 — Gross total must equal net total plus VAT (34 mutation reports)
  10. BR-22 — Each invoice line needs a quantity (24 mutation reports)

Search the complete pinned rule index.

From one invoice to a repeatable batch

First repair one invoice and keep its passing output as a regression example. Then sign in with Pro for up to 25 XML files per batch, or Team for up to 100. Select files in the invoice validator, choose the same fixed package and consent to server processing for each selected invoice. Checks run sequentially with a visible per-file result; a passing first file does not establish that the whole batch passes. Compare plans and limits · Run a batch.

Poland: KSeF FA(3)

RO e-Factura validator

Croatian e-invoice validator