Validation

Rejections found on our side, before anyone else sees them.

We run the same rule sets the networks and tax platforms use, at the versions they publish. When an invoice fails, the fix goes into the mapping, so the same error does not come back next month.

R
ValidationIn the standard unit
Rule sets
EN 16931 1.3.16 · Peppol BIS 3.0.21 · XRechnung 3.0.2 · CIUS-⁠RO 1.0.9 · FA(3) 1-⁠0E
Correction test
26 of 26 defects fixed
Last full run
28.09.2026
Validation

What we check

  • 01

    Schema

    The file's structure against the official XSD: UBL 2.1, CII D16B or FA(3).

  • 02

    Business rules

    EN 16931 and the network's own rules, such as Peppol BIS or XRechnung, run with the published validators.

  • 03

    Country content

    The fields Article 226 of the VAT Directive requires, plus the extra rules for Germany, France, Poland, Belgium and Romania.

  • 04

    Check digits

    IBAN, NIP, CUI, enterprise number, USt-IdNr. and SIREN. The French platform we tested did not check SIREN digits, so we do.

  • 05

    Hybrid PDFs

    Factur-X and ZUGFeRD files as PDF/A-⁠3, with the embedded XML checked too. Germany needs one detail the standard tools let through, so we check it separately.

  • 06

    Safe parsing

    Every file is read with external entities and DTDs switched off. A file that tries to load one is refused before any rule reads it.

Validation

The layers each document passes

The layers each document passes
DocumentChecked against
Peppol BIS 3.0 (UBL)UBL 2.1 XSD → EN 16931 schematron 1.3.16 → Peppol BIS Billing 3.0.21
RO e-⁠Factura (UBL)UBL 2.1 XSD → EN 16931 and CIUS-⁠RO 1.0.9
XRechnung 3.0 (UBL or CII)XSD → KoSIT validator 1.6.3 with the XRechnung 3.0.2 configuration
CII and Factur-X XMLCII D16B XSD → EN 16931 CII schematron 1.3.16
KSeF FA(3)FA(3) XSD 1-⁠0E → KSeF file rules: UTF-⁠8, no byte-order mark, 1 MB at most
Factur-X and ZUGFeRD PDFPDF/A-⁠3B with veraPDF → Mustang → the embedded XML

What we need from you

What we need from you

  • The mapped invoice for each variant in scope
  • The route, so we know which rules apply

What you get back

  • A validation report for every test invoice
  • Each failure with its rule ID and the field it points to
  • The evidence folder at handover: files, reports and submission IDs
26 of 26 defects rejected, then fixed.

On 27 September 2026 we planted 26 defects against the Peppol, XRechnung, CII, CIUS-⁠RO and FA(3) rules. The official rule caught each one, and each passed once corrected.

See the evidence
Steps

The order of the checks

  1. Read safely

    No external entities and no DTDs.

    01/05
  2. Schema

    Structure against the official XSD.

    02/05
  3. Rules

    EN 16931 and the network's own rules.

    03/05
  4. Country

    Required content and check digits.

    04/05
  5. Report

    A pass, or the rule and field that failed.

    05/05
Questions

Validation

Does a valid file mean the invoice will be accepted?
It removes the rejections the rules can predict. A platform can still refuse an invoice for reasons outside the file, such as a missing authorisation or a duplicate. Those come back to you as a status, with the platform's own code.
Do you also test against the platforms themselves?
Yes, in their test environments before go-live: KSeF 2.0 TEST, ANAF's validation service, a Peppol access-point sandbox and a French platform's sandbox.
Contact

Bring an invoice that keeps getting rejected.

Send the file and the message that came back. We will tell you which rule it breaks and where the fix belongs.

  • Your ERP and version
  • The first country route and legal entity
  • A representative invoice and where the credentials stand

30-minute call

Choose a time

Choose a time