Free XRechnung validator
Valinvo's free validator checks an XRechnung, ZUGFeRD / Factur-X or Peppol BIS Billing 3.0 e-invoice, as XML or as a PDF with the invoice embedded, against the official rules and lists every problem with its rule ID, its location in the file and a message. You need no account and no API key, and your file is processed in memory and not stored.
Open the validator · Use it from code (API quickstart)
What it checks
- XRechnung 3.0: UBL Invoice, UBL CreditNote and CII (UN/CEFACT Cross Industry Invoice).
- Peppol BIS Billing 3.0: UBL Invoice and UBL CreditNote.
- ZUGFeRD 2.5.2 / Factur-X 1.09.2: CII XML, profiles MINIMUM, BASIC WL, BASIC, EN 16931 and EXTENDED. A French Factur-X with a billing frame is also checked against the French rules (
BR-FR-…). - PDFs (ZUGFeRD, Factur-X, XRechnung in a PDF): we check the embedded invoice XML, the PDF itself against PDF/A-3 and that the PDF's metadata matches the XML. The invoice is only
validwhen all three pass. More on the ZUGFeRD / Factur-X validator page. - The XML schema and the Schematron business rules of the detected format: the European standard EN 16931 plus the national or network rules on top (the German XRechnung rules
BR-DE-…, the Peppol rulesPEPPOL-EN16931-…, the FeRD rules for ZUGFeRD). - The rule set is detected from the document, so you do not choose a format first. The result tells you which one was applied, for example
xrechnung-3.0.2-ubl-invoice.
The rules come from the official publishers (KoSIT for XRechnung, OpenPeppol for Peppol BIS, FeRD for ZUGFeRD / Factur-X) and are applied as published. In our own tests, every XRechnung sample must pass both our engine and the KoSIT reference validator.
How to use it
- Open the validator, paste the XML or upload the file (XML or PDF).
- Click Validate. You can first try the built-in valid and broken sample invoices.
- Read the list: each error shows the rule ID (for example
BR-DE-15), the location and what is wrong. Fix the invoice in your system and validate again.
From code: the same check as an API
curl -X POST https://valinvo.bmk-hub.com/v1/validate \
-H 'X-Accept-Terms: 1.0' \
-H 'Content-Type: application/xml' \
--data-binary @invoice.xml
An invoice with a problem is a normal 200 answer with valid: false:
{
"ruleSet": "xrechnung-3.0.2-ubl-invoice",
"valid": false,
"errors": [{
"rule": "BR-DE-15",
"message": "Das Element \"Buyer reference\" (BT-10) muss übermittelt werden.",
"location": "/*:Invoice[namespace-uri()='urn:oasis:names:specification:ubl:schema:xsd:Invoice-2'][1]"
}],
"warnings": []
}
For a PDF, send Content-Type: application/pdf and --data-binary @invoice.pdf. Warnings do not make an invoice invalid. More in the quickstart.
Common XRechnung errors
| Rule | What it means | Usual fix |
|---|---|---|
BR-DE-15 | The buyer reference (BT-10) is missing. | Add the buyer reference; for public buyers this is the Leitweg-ID. |
BR-DE-1 | The invoice has no payment instructions (BG-16). | Add the payment means, for example a SEPA credit transfer with IBAN. |
BR-DE-5, BR-DE-6, BR-DE-7 | The seller contact lacks a name, a phone number or an email address. | Fill in all three in the seller contact. |
PEPPOL-EN16931-R003 | A Peppol invoice needs a buyer reference or an order reference. | Add one of them. |
Questions
Is the validator really free? Yes. The online validator needs no account or API key. The API can also be tried without a key, with a small daily limit for creating invoices.
Is my invoice stored? No. The file is processed in memory and not stored. Please use sample data or invoices you are allowed to share.
Does "valid" mean the recipient accepts it? Not necessarily. The check applies the official rules as published. It cannot guarantee that a recipient or a tax authority accepts the invoice, and it is not tax or legal advice.
Can Valinvo also create the invoice? Yes. You send one JSON invoice and receive XRechnung, a ZUGFeRD / Factur-X PDF or Peppol BIS XML that has been checked against the same rules. See the quickstart.
By using the validator you accept the Terms of Use.
Quickstart · XRechnung validator · Peppol validator · ZUGFeRD / Factur-X validator · ZUGFeRD-csharp: your options · Error codes