E-invoice validator

Test invoices for e-invoicing and Peppol

Here you find free test invoices for e-invoicing and Peppol: valid e-invoices and invoices with deliberate errors, in UBL, CII and other formats. Download them to test your own software, or open them in our free validator with one click. That way you see right away what is checked.

All test invoices

SBDH · UBLValid

Peppol invoice in an SBDH envelope

This is how an Access Point forwards an invoice. The validator takes the invoice out of the envelope.

Expected result: valid, with a note that the invoice was in an envelope.

EN 16931 · CIIBusiness rules

CII invoice: structure right, rules not

A minimal invoice in CII, the second syntax of the European standard. The structure is correct, but data that EN 16931 makes mandatory is missing.

Expected result: structure valid, 10 errors in the European business rules.

Peppol BIS · UBLBusiness rules

Peppol invoice with business rule errors

An invoice with, among other things, wrong VAT calculations, as an Access Point would reject it.

Expected result: structure valid, 5 business rule errors, with an explanation per error code.

Peppol BIS · UBLStructure error

Element in the wrong place

The invoice date comes before the invoice number. The business rules do not notice, the structure check does.

Expected result: 1 structure error, business rules valid.

SBDH · UBLStructure error

Structure error in an SBDH envelope

The same order error, now inside an envelope. The line numbers match the original file.

Expected result: 1 structure error, with the line number in the full file; business rules valid.

Sample UBL invoice (XML)

This is how the start of a valid UBL invoice under Peppol BIS Billing 3.0 looks. The fragment comes from our test invoice voorbeeld-geldig.xml, which you can download above or test straight away.

<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" …>
  <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
  <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
  <cbc:ID>VOORBEELD-001</cbc:ID>
  <cbc:IssueDate>2026-10-09</cbc:IssueDate>
  <cbc:DueDate>2026-11-08</cbc:DueDate>
  <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
  <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
  <cbc:BuyerReference>PO-7781</cbc:BuyerReference>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:EndpointID schemeID="0208">0123456749</cbc:EndpointID>
      …
  • CustomizationID and ProfileID state that this is an invoice under Peppol BIS Billing 3.0.
  • InvoiceTypeCode 380 stands for a normal commercial invoice.
  • BuyerReference is the buyer reference. Peppol requires it or an order reference.
  • EndpointID with scheme 0208 is the Peppol address of the supplier: its Belgian company number.

What are these test invoices for?

Software vendors use them to test their import and export. Accountants and business owners see what a valid e-invoice looks like, and which messages an Access Point gives for an error. Moreover, each invalid invoice contains exactly one deliberate error. As a result, you see exactly which check finds it.

Structure or business rules?

The validator first checks the structure against the official XML schema, then the business rules. Some errors are only found by the first check, such as an element in the wrong place. Others, such as a wrong VAT calculation, only by the second. Per country you can see which checks we perform.

Testing your own invoice

Do you have an e-invoice of your own? Then drop it into the e-invoice validator. Your file stays on your own computer. If you get an error code, read the explanation of the Peppol error codes.

All test invoices contain fictitious data. The signed FatturaPA is the public example of the Italian tax authority (fatturapa.gov.it), signed with a test certificate.