Comparison · checked 12 Nov 2026
Peppol validator: InvoiceVerify vs ecosio vs others
Six ways to check a Peppol or EN 16931 invoice, compared on what matters: cost, sign-up, which rules they run, what happens to your file, and whether you can automate it. Every fact comes from the tool's own pages, checked on 12 Nov 2026; where a source says nothing, we write “not stated”. We make InvoiceVerify, so we list where it falls short as well.
Which one to use
- InvoiceVerify: You want to see exactly which line breaks which rule and how to fix it, read the invoice as a normal invoice, or check whether Belgian customers can receive under 0208 and 9925.
- ecosio validator: You want the official rule artefacts for a specific Peppol BIS or national version, free and without an account. It runs on Philip Helger's validation engine.
- Peppol Practical (phax) web service: You want to automate checks against the official artefacts and can live with a SOAP interface and a strict rate limit.
- EU Interoperability Test Bed (ITB) eInvoice validator: You want the European Commission's own EN 16931 check, by form or API.
- KoSIT Validator: You need to validate inside your own systems, for example for XRechnung, without sending files anywhere.
- FNFE-MPE validator: You are preparing for the French reform and need to check complete Factur-X PDFs, not just the XML.
Side by side
Scroll sideways on a phone. “Not stated” means the official pages don't say, not that the feature is missing.
| Tool | Cost | Sign-up | What it checks | Your file | Errors shown | Automation |
|---|---|---|---|---|---|---|
| InvoiceVerifyKalmwerk (that's us) | 3 validations a month free; sample files don't count. Pro (unlimited) opens soon. | Not needed | UBL 2.1, Peppol BIS Billing 3.0, CII, XRechnung and the XML inside Factur-X/ZUGFeRD PDFs. 153 rules re-implemented in TypeScript: 101 EN 16931, 28 Peppol, 13 XRechnung, 11 own checks. | Checked in memory on our server, then discarded. We keep metadata only: date, file name, format, invoice number, error count. The UBL viewer runs entirely in your browser. | Rule ID, the line in your XML, and a plain-language fix for each error | REST API and MCP server for AI agents; 100 calls a month free with an account |
| ecosio validatorecosio | Free (“free of charge”, per the tool) | Not needed (“no signup needed”) | Peppol BIS 3.0, Peppol PINT, EN 16931, UBL, CII, XRechnung and many national sets, each as a versioned rule set you pick. XML schema and Schematron checks. | Uploaded to ecosio. In their words: stored and processed “in a non-persistent manner for the duration of the validation only, and deleted after the result is displayed.” | Error ID, element/context, XPath test and message. Line numbers: not stated. | No documented public API offer found |
| Peppol Practical (phax) web servicePhilip Helger (personal project) | “Currently provided free of charge” | Not stated for the web service | Versioned rule sets (VESIDs): Peppol BIS Billing 3.0 and other Peppol documents, EN 16931, XRechnung and national sets. | Sent to the hosted service. Retention: not stated. | Error ID, field, location, Schematron test and message. Line numbers: not stated. | Hosted SOAP service, rate-limited to 1 request every 2 seconds per IP (admin note, 18 Nov 2025). Self-hosted REST option (phorm). |
| EU Interoperability Test Bed (ITB) eInvoice validatorEuropean Commission, DG DIGIT | Price not stated; the form was usable without paying | Form usable without logging in | EN 16931 for UBL invoice, UBL credit note and CII invoice (release 1.3.17). You can add your own XSD or Schematron. | Sent to the Commission's service. Retention: not stated on the form. | Not stated on the form (we did not submit an invoice). | REST and SOAP APIs |
| KoSIT ValidatorKoSIT (open source, Apache 2.0) | Free software; you host and run it | None (runs on your machine) | Whatever configuration you install: XRechnung (EN 16931 + XRechnung), or the separate Peppol BIS Billing configuration. | Stays on your own infrastructure. | XML validation report; content depends on the configuration. | Command line, Java library or local HTTP daemon |
| FNFE-MPE validatorFNFE-MPE (French e-invoicing forum) | Free | Account required | Factur-X (including the PDF/A-3 check), UBL, CII, CDAR and Order-X, with French BR-FR rules where they apply. Peppol BIS coverage: not stated. | Files and reports kept in your test history for a rolling 90 days unless you delete them; deletion is immediate. | Blocking errors and warnings. Line numbers: not stated. | No public API stated |
Each tool in more detail
InvoiceVerify
Kalmwerk (that's us)Use it when: You want to see exactly which line breaks which rule and how to fix it, read the invoice as a normal invoice, or check whether Belgian customers can receive under 0208 and 9925.
- Not the full official Schematron set: our rules are a partial re-implementation, so an official validator can flag errors we miss.
- No XML Schema (XSD) check and no PDF/A-3 check of Factur-X files.
- Rules are not pinned to a specific Peppol BIS release number.
Sources:Rule catalog Privacy
ecosio validator
ecosioUse it when: You want the official rule artefacts for a specific Peppol BIS or national version, free and without an account. It runs on Philip Helger's validation engine.
- One XML file at a time; paste input not stated.
- Checks XML only; a full Factur-X PDF check is not stated.
- Error-correction help is for ecosio customers.
Sources:ecosio validator ecosio product page Rule sets (VESIDs)
Peppol Practical (phax) web service
Philip Helger (personal project)Use it when: You want to automate checks against the official artefacts and can live with a SOAP interface and a strict rate limit.
- The web upload page moved to ecosio; there is no separate Helger upload form.
- Not provided or approved by OpenPeppol, per the site footer.
Sources:Web service docs Upload moved notice
EU Interoperability Test Bed (ITB) eInvoice validator
European Commission, DG DIGITUse it when: You want the European Commission's own EN 16931 check, by form or API.
- The form checks EN 16931; built-in Peppol BIS rules are not advertised on it.
- No Factur-X PDF check advertised.
Sources:ITB eInvoice validator REST API
KoSIT Validator
KoSIT (open source, Apache 2.0)Use it when: You need to validate inside your own systems, for example for XRechnung, without sending files anywhere.
- An engine, not a website: you need Java and a rule configuration.
- No hosted public upload.
FNFE-MPE validator
FNFE-MPE (French e-invoicing forum)Use it when: You are preparing for the French reform and need to check complete Factur-X PDFs, not just the XML.
- For conformity tests, not production flows, per its terms.
- Reports don't guarantee acceptance by a platform or customer, per its terms.
Comparing results fairly
- Match the rule set and version. The current Peppol BIS Billing 3.0 release is 3.0.21 (published 20 May 2026, mandatory from 17 Aug 2026). A tool running an older set, or EN 16931 only, can pass an invoice another tool rejects.
- EN 16931 is not Peppol. Peppol BIS adds its own rules on top, such as the buyer's Peppol address (PEPPOL-EN16931-R010) and the Belgian company number format (PEPPOL-COMMON-R043).
- XML is not the whole Factur-X file. Checking the embedded XML is not the same as checking the PDF/A-3 container.
What no validator tells you
- Whether the customer can receive it. A valid invoice still bounces if the customer is not registered under the Peppol ID you send to. In Belgium that is often the 0208 vs 9925 split. Check your client list
- Whether it will be accepted. The customer can still reject a valid invoice. Why Peppol invoices get rejected
- Whether the VAT treatment is right. A validator checks that the numbers add up and the codes exist, not that you picked the right VAT regime.