Free Peppol invoice validators compared: what each one checks
There is no single best free Peppol validator, but there is a clear rule: for the official verdict you need the current Peppol BIS Billing 3.0 schematron plus the UBL 2.1 XSD schema; the KoSIT Validator has a Peppol configuration for release 3.0.21 and ecosio's free validator checks schema and schematron, although we could not verify which release it runs live. The European Commission's free validator checks EN 16931 only, not the Peppol or XRechnung rules. Our own check at arling.sk is free, runs in your browser and explains every finding in a sentence, but it does not check the XSD schema or the UBL-CR rules, and on 25 September 2026 its Peppol rules were written from release 3.0.20, not the mandatory 3.0.21. Below is a side by side table of seven free tools, what "valid" means under Peppol, and our own test in which three broken invoices passed our checker without a single finding. We also say where each tool sends your file, because some keep it on a server for a while and some never see it. We read every page on 25 or 26 September 2026 and did not test the output of the other tools.
Seven free validators side by side
| Validator | Where your file goes | XSD schema | Rules it runs |
|---|---|---|---|
| European Commission eInvoice Validator | uploaded to the Commission service, also via REST and SOAP API | not verified | EN 16931 release 1.3.16 for UBL invoice, CII invoice and UBL credit note; no Peppol, no XRechnung |
| ecosio, Peppol and XML validator | uploaded, processed non-persistently and deleted after the result | yes | Peppol BIS 3.0, Peppol PINT, UBL, CII, XRechnung; live rule release not verified by us |
| KoSIT Validator | stays on your computer, Java 11 or later, Apache 2.0 | yes | XRechnung configuration, and a separate Peppol BIS configuration for release 3.0.21 |
| ValidateFin UBL validator | stays in your browser | yes | EN 16931 and Peppol BIS 3.0, around 200 rules by its own count |
| Peppol Validator, peppolvalidator.com | uploaded, files and results kept for a limited time for shareable links | not verified | 311+ rules by its own count, UBL and CII |
| efaktura.tools | stays in your browser by its own description | not verified | UBL 2.1, EN16931, Peppol BIS 3 by its own description; we could not see details without a browser |
| ARLing e-invoice check | stays in your browser | no | 332 rule codes from EN 16931, Peppol BIS Billing 3.0 (written from release 3.0.20) and XRechnung 3.0, plus own checks such as IBAN |
If the invoice data is confidential, the column that matters most is the second one: tools that run in the browser or on your own computer never receive the file.
What "valid" means for a Peppol invoice
Peppol's own rule is short: "A message is considered compliant to this BIS if no fatal errors are detected when validating with the current validation artefacts.". Warnings do not make an invoice non-compliant, a receiver must not reject a compliant invoice and may reject a non-compliant one. Validation has two layers: the XML schema checks which elements occur where, how often and in which order, and the schematron checks meaning, conditional requirements and calculations.
The word "current" is where free tools differ. Release 3.0.21 was published on 20 May 2026 and is mandatory from 17 August 2026; among other changes it removed rule BR-CO-25 and approved the profile urn:peppol:bis:billing_with_response. In release 3.0.21 the EN 16931 schematron for UBL has 979 checks, 281 of them fatal, and 676 of its warnings are UBL-CR rules about elements the core invoice does not use.
What we measured ourselves (25 September 2026)
We changed one thing at a time in the English sample invoice of our own checker and ran eleven variants. Eight were caught, three passed without a finding, and the release gap showed up as well.
| Variant of the sample invoice | Our result | What the official rules say |
|---|---|---|
| Total with VAT one cent too high | BR-CO-15 and BR-CO-16 | both fatal |
| Currency code EURO instead of EUR | BR-CL-04, BR-CO-15, eleven times PEPPOL-EN16931-R051 | among others the fatal PEPPOL-EN16931-R051 |
| Typo in the IBAN | own check ARL-IBAN | not checked by the Peppol schematrons for a Slovak invoice |
| IssueDate and DueDate in the wrong order | no finding | XML schema error |
| Extra ProfileExecutionID element | no finding | warning UBL-CR-003 |
| CustomizationID shortened to urn:cen.eu:en16931:2017 | no finding, Peppol rules skipped | fatal PEPPOL-EN16931-R004 |
| Profile urn:peppol:bis:billing_with_response | error PEPPOL-EN16931-R007 | approved in release 3.0.21 |
The last four rows are our weaknesses, and we would rather you read them here than find them out at your buyer's access point. The IBAN row is the other side: the official Peppol schematrons check an IBAN checksum only in two German rules, and they do not check that a Slovak 0245 identifier is followed by a ten digit tax number, while our own checks do.
We also ran ten XRechnung files through the KoSIT Validator 1.6.3 and through our checker. KoSIT reported an XML schema error for an invoice without an invoice number, where we reported rule BR-02, and a BR-DE-27 warning for a missing phone number that we did not report; we reported a typo in the IBAN as an error and a Leitweg-ID without check digits as a warning, which KoSIT accepted.
When you do not need us
If you only need the final yes or no before sending, use a validator that runs the current release with the XSD schema, for example the KoSIT Validator with the Peppol BIS configuration for release 3.0.21 on your own computer, or ecosio in the browser after checking which release it states. If you need the European standard alone, for example for a CII invoice, the Commission's validator is the reference, but it does not run Peppol or XRechnung rules. Your access point provider delivers the invoice into Peppol; we do not deliver into the Peppol network at all.
Our checker is useful when you want a plain sentence and the path to the element for every finding, IBAN and Slovak tax number checks, and a preview of the invoice as a readable document, all free and without your file leaving the browser. The only paid part is downloading an invoice you build in our form: 2.90 € excluding VAT for one invoice or 9.90 € excluding VAT for 30 days.
Frequently asked questions
Is an invoice with warnings but no fatal errors compliant?
Yes. Peppol BIS Billing 3.0 treats a message as compliant when no fatal errors are found with the current validation artefacts, even if warnings are reported, and a receiver must not reject a compliant message.
Does the European Commission validator check Peppol rules?
No. On 25 and 26 September 2026 it offered only UBL Invoice XML, CII Invoice XML and UBL Credit Note XML against EN 16931 release 1.3.16; there was no validation type for Peppol BIS Billing 3.0 or XRechnung.
Does ARLing send my invoice into the Peppol network?
No. The XML is created and checked in your browser and is never sent to our server; delivery into the Peppol network is done by your access point provider and is not part of our offer.
Conclusion
Check your UBL invoice for free, read every finding in plain language and build the XML if you need to, in our e-invoice checker and generator; for the final verdict before sending, run the file through a validator with the current Peppol release and the XSD schema as well.
Sources. The facts in this note are numbered after our internal fact list and were checked on the publication date. If a source has changed since, write to support@arling.sk and we will correct this page.
- F213: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-CO-15/; https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch, https://github.com/OpenPEPPOL/peppol-bis-invoice-3, https://github.com/ConnectingEurope/eInvoicing-EN16931
- F214: https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch, https://github.com/OpenPEPPOL/peppol-bis-invoice-3
- F216: https://arling.sk/efaktura/en/, https://arling.sk/efaktura/en/rules/br-co-15/ (checked 25 September 2026)
- F220: KoSIT, https://github.com/itplr-kosit/validator (checked 25 September 2026); https://raw.githubusercontent.com/itplr-kosit/validator/main/README.md; https://raw.githubusercontent.com/itplr-kosit/validator/main/docs/cli.md; https://github.com/itplr-kosit/validator-configuration-xrechnung (checked 25 September 2026)
- F223: ARLing, own check (checked 25 September 2026)
- F225: OpenPeppol, Compliance to BIS, https://docs.peppol.eu/poacc/billing/3.0/compliance/ (checked 25 September 2026); Peppol BIS Billing 3.0, https://docs.peppol.eu/poacc/billing/3.0/ (checked 25 September 2026)
- F226: Ionite, Validating Peppol Documents, https://ionite.net/news-articles/2023-08-17_validating_peppol_documents/ (checked 25 September 2026); Invoice Navigator, E-Invoice Schematron Rules Explained, https://www.invoicenavigator.eu/blog/e-invoice-schematron-rules-explained (checked 25 September 2026); Peppol Practical, https://peppol.helger.com/public/locale-en_US/menuitem-validation (checked 25 September 2026)
- F227: OpenPeppol, Release notes for Peppol BIS Billing v3, https://docs.peppol.eu/poacc/billing/3.0/release-notes/ (checked 25 September 2026); https://docs.peppol.eu/poacc/billing/3.0/files/PEPPOL-EN16931-UBL.sch, https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch (checked 25 September 2026); vetva master, https://github.com/OpenPEPPOL/peppol-bis-invoice-3 (checked 25 September 2026)
- F228: https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch, https://docs.peppol.eu/poacc/billing/3.0/files/PEPPOL-EN16931-UBL.sch
- F229: https://www.itb.ec.europa.eu/invoice/upload (checked 25 September 2026)
- F230: https://arling.sk/efaktura/en/peppol-validator/ (checked 25 September 2026)
- F231: https://arling.sk/efaktura/en/peppol-validator/
- F232: https://arling.sk/efaktura/en/peppol-validator/; https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch, https://docs.peppol.eu/poacc/billing/3.0/files/PEPPOL-EN16931-UBL.sch (checked 25 September 2026); https://docs.peppol.eu/poacc/billing/3.0/release-notes/ (checked 25 September 2026)
- F238: https://docs.peppol.eu/poacc/billing/3.0/files/PEPPOL-EN16931-UBL.sch, https://docs.peppol.eu/poacc/billing/3.0/files/CEN-EN16931-UBL.sch
- F239: Peppol Practical, Document Validation (Upload), https://peppol.helger.com/public/locale-en_US/menuitem-validation-upload, https://ecosio.com/en/peppol-and-xml-document-validator/ (checked 25 September 2026); ecosio, https://ecosio.com/en/peppol-and-xml-document-validator/ (checked 25 September 2026); phive-rules README, https://raw.githubusercontent.com/phax/phive-rules/master/README.md (checked 25 September 2026)
- F248: KoSIT, https://github.com/itplr-kosit/validator (checked 25 September 2026); https://github.com/itplr-kosit/validator-configuration-xrechnung (checked 25 September 2026); https://github.com/itplr-kosit/validator-configuration-bis/releases/tag/release-3.0.21 (checked 25 September 2026); https://raw.githubusercontent.com/itplr-kosit/validator-configuration-bis/master/README.md (checked 25 September 2026)
- F327: https://validatefin.com/en/tools/ubl (checked 26 September 2026); https://peppolvalidator.com/, https://peppolvalidator.com/privacy (checked 26 September 2026); https://efaktura.tools/ (checked 26 September 2026); https://www.itb.ec.europa.eu/invoice/upload (checked 26 September 2026)
- F328: https://arling.sk/efaktura/en/ (checked 26 September 2026)