Sample library

Test files for every situation

Realistic Belgian, Dutch, German and French invoices — some perfectly valid, some broken on purpose. Use them to test your validator, ERP export or Peppol onboarding.

Valid Peppol BIS 3.0 invoice

peppol-bis3-valid-be.xml

Passes

Belgian B2B invoice with two VAT rates, a document-level discount and SEPA payment — passes every check.

Peppol BIS Billing 3.0 · UBL2 VAT rates (21% and 6%)Document-level allowance0208 Peppol endpoints

Invalid VAT calculation

invalid-vat-calculation.xml

Fails

The 21% VAT was computed at 20% and a line amount does not match quantity × price. Shows calculation rules with expected values.

Peppol BIS Billing 3.0 · UBLBR-CO-17 VAT rate × baseBR-CO-14 VAT totalPEPPOL-R120 line amount

Missing mandatory fields

missing-mandatory-fields.xml

Fails

Issue date, buyer name, buyer Peppol address, an item name, the IBAN and the buyer reference were left out.

Peppol BIS Billing 3.0 · UBLBR-03 issue dateBR-07 buyer nameBR-61 IBANPEPPOL-R003 buyer reference

Wrong VAT numbers

invalid-vat-numbers.xml

Fails

Reverse-charge invoice from Germany to the Netherlands where the seller VAT number is one digit short and the buyer VAT number has a typo.

Peppol BIS Billing 3.0 · UBLIV-VAT-01 national formatIV-VAT-02 check digitReverse charge AE

Cross-border reverse charge

reverse-charge-de-nl.xml

Passes

German software vendor invoicing a Dutch customer under reverse charge (category AE) with VATEX-EU-AE.

Peppol BIS Billing 3.0 · UBLCategory AEBoth VAT numbersVATEX-EU-AE

Peppol credit note

peppol-credit-note.xml

Passes

UBL CreditNote (type 381) referencing the original invoice through BillingReference.

Peppol BIS Billing 3.0 · UBL CreditNoteCreditNote rootPreceding invoice referenceType code 381

Factur-X EN 16931 (France)

factur-x.xml

Passes

UN/CEFACT CII XML as embedded in a Factur-X / ZUGFeRD PDF, with 20% and 5.5% VAT.

Factur-X 1.0 · CIICII D16B syntaxReduced rate 5.5%SIREN identifiers

Broken XML

malformed.xml

Fails

An unescaped ampersand and a missing closing tag — the parser points to the exact line.

UBL (malformed)Exact line and columnWell-formedness