# E-invoice validator

Upload an XRechnung or the XML file of a ZUGFeRD invoice, or paste its content. BelegDock has it checked by the official validator of KoSIT, with the same configuration every e-invoice BelegDock creates must pass. Free, no sign-up.

<form id="validator">
<div class="field"><label for="validator-file">XML file (2 MB at most)</label><input id="validator-file" name="file" type="file" accept=".xml,application/xml,text/xml"></div>
<div class="field"><label for="validator-xml">or paste the XML content</label><textarea id="validator-xml" name="xml" rows="8" spellcheck="false" autocomplete="off"></textarea><small>If a file is selected, the file is checked.</small></div>
<button class="button" type="submit">Check e-invoice</button>
</form>
<div id="validator-result" aria-live="polite" hidden></div>
<script src="/validate.js?v=1" defer></script>

**Your file is not stored.** BelegDock only passes it to the validation service, shows you the result and discards it. It does not go into any database or log. To keep the service available for everyone, each connection can run 20 checks per 15 minutes.

**A passed check is not a tax or legal review.** The validator checks the structure and business rules of the standard, not whether the VAT rate, the service or the amounts are factually right. For your case, ask your tax adviser.

## What is checked

The check uses KoSIT Validator 1.6.3 with the official validation configuration for XRechnung 3.0.2 of 31 August 2026. This configuration recognises:

- **XRechnung 3.0** invoices and credit notes in UBL and in CII, including the extension
- **EN 16931 invoices** in UBL or CII, including the XML of a **ZUGFeRD or Factur-X invoice in the EN 16931 profile** (formerly COMFORT) or the XRECHNUNG profile

This configuration does not recognise the ZUGFeRD profiles MINIMUM, BASIC WL, BASIC and EXTENDED; it then reports "no supported format". The service does not accept PDF files. For a ZUGFeRD PDF, check the embedded XML file (usually `factur-x.xml` or `zugferd-invoice.xml`), which many PDF readers list under "attachments".

## Reading the result

- **Accepted** means the file meets the XML schema, the EN 16931 rules and, for an XRechnung, the German additional rules. Warnings may still appear; they do not prevent acceptance.
- **Not accepted** means at least one rule is broken. A recipient with an incoming-invoice check usually rejects such an invoice.

Each finding names its **rule**. Rules starting with `BR-DE-` are the German XRechnung rules, for example BR-DE-15 for a missing buyer reference ([more on that](/en/guides/leitweg-id-buyer-reference)). Rules starting with `BR-` without `DE` come from EN 16931 itself. Codes like `cvc-…` are schema errors: an element is missing, in the wrong place or has an invalid value. The **location** is the path to the element concerned, or the line and column in the file. The validator writes most German rule messages in German.

## Why the KoSIT validator

KoSIT (the German Coordinating Office for IT Standards) maintains the XRechnung standard for the federal and state governments and publishes the validator and its configuration. Many public-sector invoice portals check with exactly these rules. Other tools, such as Mustangproject, implement the same standard but can judge individual cases differently.

## E-invoices from Stripe

Do you bill with Stripe? [BelegDock](/en/xrechnung-for-stripe) creates an XRechnung with the same number from every finalized Stripe invoice, checks it with this validator and sends it only when it is accepted. The cases it covers are listed under [scope](/en/scope).

## Sources

- [KoSIT validator](https://github.com/itplr-kosit/validator) and [XRechnung validation configuration](https://github.com/itplr-kosit/validator-configuration-xrechnung) (KoSIT, GitHub)
- [XRechnung: versions and bundles](https://xeinkauf.de/xrechnung/versionen-und-bundles/) (KoSIT, German)
- [ZUGFeRD profiles](https://www.ferd-net.de/) (Forum elektronische Rechnung Deutschland)
