Sample e-invoices put to the test: 810 XRechnung and ZUGFeRD files against the current rules
Anyone building an e-invoice starts from a sample: the KoSIT test suite, a FeRD package, a library's test folder, or the "XRechnung sample to download" a software vendor offers. We collected 1,396 such files from 19 publishers and checked them on 19 October 2026 with the official KoSIT validator against the current rule set.
Run · Rule set v2026-08-31
Collected and checked with the official KoSIT validator by Dmytro Yalanskyi, NormAPI.
At a glance
- 810
- distinct files their publisher offers as a valid sample
- 548
- pass the current rule set
- 102
- are rejected without any rule applying: an outdated version, an unknown identifier, or not an e-invoice at all
- 22 / 53
- official ZUGFeRD samples: KoSIT and the validation report FeRD ships with them reach different verdicts
Why this exists
A sample gets copied, not checked. Whoever uses it as a template inherits its mistakes — and its version. KoSIT changes the rule set about twice a year; a sample that was valid when published stays online when the rules move.
So the question is not whether a sample was once valid, but whether it passes today — at a recipient who validates with the current rule set.
Method
Collected on 19 October 2026: the official KoSIT test suite as the control group, FeRD's current ZUGFeRD sample invoices (release 2.5.2 of 22 September 2026), CEN's EN 16931 examples, the sample folders of earlier FeRD packages (1.0 to 2.4) as they sit publicly on GitHub, the test files of Mustangproject and horstoeko, and the downloads offered on 12 vendor and guide sites. Freely downloadable files only; anything behind a form is not included.
Only files their publisher offers as a valid sample are counted — by folder name (correct, examples, Beispiele), README, or the wording on the download page. Deliberately broken test files are recorded separately and appear in none of the numbers below. Files with identical content (same SHA-256) count once.
Checked with KoSIT validator 1.6.3 and the XRechnung configuration v2026-08-31, the same one NormAPI's validator uses; for ZUGFeRD PDFs, the embedded XML. Every file gets exactly one verdict, and the verdict says why. A file declaring XRechnung 2.1 is rejected without a single rule being checked — so it counts as outdated, not as "failed the rules".
The official ZUGFeRD samples: two checks, two verdicts
FeRD ships a validation report with every sample invoice of release 2.5.2, produced with Valitool (DWC and validool UG). On 31 of the 53 invoices the KoSIT validator reaches the same verdict; on 22 it does not.
FeRD's report calls 19 EXTENDED invoices "GÜLTIGE eRechnung" (a valid e-invoice); the KoSIT configuration recommends rejecting them. It checks EXTENDED against the EN 16931 core rules, and EXTENDED permits elements those rules exclude — most often a formatted date (CII-DT-027), which FeRD's report does not object to. That is not necessarily a defect in the file. A recipient that validates with the KoSIT configuration rejects it all the same.
FeRD's report calls 3 invoices "FEHLERHAFT" (faulty); the KoSIT validator accepts them.
| Case | Profile | KoSIT | FeRD report | KoSIT codes |
|---|---|---|---|---|
| E22_01_RechnungsUebertragung | EN 16931 | accept | faulty | |
| X01_01_600700800900_Dauermietrechnung_unbefristet_ | EXTENDED | reject | valid | CII-DT-027 |
| X01_02_600700801000_NK_Abrechnung_zur_Dauermietrechnung | EXTENDED | reject | valid | CII-DT-027 |
| X01_03_7600700800900_Dauermietrechnung_KorrekturRE_ | EXTENDED | reject | valid | CII-DT-027 |
| X02_01_SubInvoiceLines_Buero_Material_Bsp3__ | EXTENDED | reject | valid | BR-CO-10, BR-S-08 |
| X03_01_Abschlagsrechnung_SubInvoiceLine_u_LV_Nr | EXTENDED | reject | valid | BR-22, BR-23, BR-26, BR-27, BR-CO-04, BR-CO-10, CII-DT-021, CII-SR-439 |
| X04_01_Sammelrechnung_3_Bestellungen | EXTENDED | reject | valid | CII-DT-027 |
| X05_03_einfach_Bau_Schlussrechnung_mit_Steuer_Zusammenstellung | EXTENDED | reject | valid | cvc-complex-type.2.4.a |
| X06_01_Fallschutz-Set_SubInvoiceLine_Bsp5 | EXTENDED | reject | valid | CII-DT-027 |
| X07_01_Fremdwaehrung | EXTENDED | accept | faulty | |
| X08_01_Herkunftsland_Zolltarif-Nummer__HS___UNSPSC__TST___eCl_ss__STQ | EXTENDED | reject | valid | CII-DT-027 |
| X09_01_InnergemeinschLieferungMehrereBestellungen | EXTENDED | accept | faulty | |
| X11_01_Kostenrechnung | EXTENDED | reject | valid | BR-CO-12, BR-S-08 |
| X12_01_Maschinen-Serial_NR__BT-X-307 | EXTENDED | reject | valid | CII-DT-027 |
| X13_01_Projektabschlussrechnung | EXTENDED | reject | valid | cvc-complex-type.2.4.a |
| X15_01_steuerfreie_Innergemeinschaftliche_Lieferung | EXTENDED | reject | valid | CII-DT-027 |
| X16_01_Stornogutschrift_zu_RE | EXTENDED | reject | valid | CII-DT-027 |
| X16_02_Rechnung_für_Storno_Gutschrift_ | EXTENDED | reject | valid | CII-DT-027 |
| X17_01_SubInvoiceLines_Hardware_Bsp2 | EXTENDED | reject | valid | BR-CO-10, BR-S-08 |
| X18_01_SubInvoiceLines_Kaffee_Bundle_Set_Bsp4___ | EXTENDED | reject | valid | BR-CO-04, BR-CO-10 |
| X19_01_Warenrechnung | EXTENDED | reject | valid | BR-CO-12, BR-S-08 |
| X20_01_SubInvoiceLines_Buero_Material_Bsp3__ | EXTENDED | reject | valid | BR-CO-10, BR-S-08 |
So the BDI's question — whose validation result is the authoritative one — already arises with the official samples. For senders: use EXTENDED only when the recipient explicitly processes it, and test with the recipient's check. ZUGFeRD EXTENDED or XRechnung?
The rules move, the samples stay
23 files fail exactly one rule: CII-SR-465, "only one seller contact point (BT-41)". The CEN rules flag it as a warning; KoSIT raised it to an error in release v2026-08-31, published on 2 September 2026. Mostly affected are the XRECHNUNG samples of FeRD packages 2.3 to 2.4.0 (2024–2025), as they sit on GitHub. They were valid when published. FeRD's current package 2.5.2 no longer contains XRECHNUNG samples.
Similarly BR-CL-25: several EN 16931 samples from FeRD packages 2.0 to 2.2 give the electronic address with scheme 9958, the former identifier for the Leitweg-ID. The current EAS code list no longer carries it; 0204 replaced it.
55 files declare a version the current rule set no longer knows: XRechnung 1.2 to 2.3 (29) and ZUGFeRD 1.0 (26). They are rejected without any rule being checked — with a message that names no rule.
The samples offered for download on vendor and guide sites
12 sites offer 57 sample files between them. 48 of those pass. On 4 sites at least one file does not; what exactly is listed below the table.
| Site | Files | pass | did not pass |
|---|---|---|---|
| rechnex.de | 20 | 20 | 0 |
| getzugferd.com | 12 | 10 | 2 |
| einvoicedesk.com | 6 | 6 | 0 |
| rechnora.de | 4 | 4 | 0 |
| sevdesk.de | 2 | 2 | 0 |
| namequick.app | 2 | 2 | 0 |
| digital-rechnung.de | 1 | 1 | 0 |
| xrechnung.pro | 1 | 1 | 0 |
| hyreka.de | 2 | 1 | 1 |
| orgaMAX | 2 | 0 | 2 |
| PDFlib | 3 | 1 | 2 |
| solytics.de | 2 | 0 | 2 |
- getzugferd.com
- Two files are MINIMUM and BASIC WL — labelled by the page itself as a booking aid, not a complete invoice. All the others pass.
- zugferd-minimum-beispiel.pdf — not an e-invoice (MINIMUM/BASIC WL)zugferd-basic-wl-beispiel.pdf — not an e-invoice (MINIMUM/BASIC WL)
- hyreka.de
- The XRechnung sample is rejected: the buyer reference BT-10 is missing (BR-DE-15), and so are the buyer's and seller's electronic addresses (PEPPOL-EN16931-R010, -R020). The ZUGFeRD sample passes.
- XRechnung-Beispiel.xml — rejected: business rules (BR-DE-15, PEPPOL-EN16931-R010, PEPPOL-EN16931-R020)
- orgaMAX
- The XRechnung sample (UBL) and the ZUGFeRD sample (a PDF carrying XRechnung in CII) are both rejected with PEPPOL-EN16931-R008: an empty element. In the XML file it is the buyer's electronic address, <cbc:EndpointID schemeID="EM"/>.
- orgaMAX_Beispielrechnung_XRechnung.xml — rejected: business rules (PEPPOL-EN16931-R008)orgaMAX_Beispielrechnung_ZUGFeRD.pdf — rejected: business rules (PEPPOL-EN16931-R008)
- PDFlib
- The files date from 2019/2020. The ZUGFeRD 1.0 sample is a version the rule set no longer carries; the ZUGFeRD 2.0 sample spells its profile identifier with "EN16931" in capitals, which the check does not recognise. The Factur-X sample passes.
- zugferd1_invoice_pdfa3b.pdf — outdated versionzugferd2_invoice_pdfa3b.pdf — unknown profile identifier
- solytics.de
- Both XRechnung samples declare "urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_3.0": the namespace of versions up to 2.x with the version number 3.0. No version defines that identifier, so the check does not recognise the files as XRechnung and rejects them without applying a rule. For 3.0 it reads "…#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0".
- xrechnung-beispiel-ubl.xml — unknown profile identifierxrechnung-beispiel-cii.xml — unknown profile identifier
Profiles that are not e-invoices
41 sample files are ZUGFeRD MINIMUM or BASIC WL. The German Federal Ministry of Finance lists ZUGFeRD from version 2.0.1 as a permitted format, excluding exactly these two profiles; they carry only an invoice's basic data. The KoSIT configuration has no scenario for them. They are no template for an invoice, though they are a fair example of the profile — when labelled as such.
Every publisher
A file counts once per publisher. Where the same publisher offers a file more than once (as the German and English edition of a package, say), it counts once.
| Publisher | Files | pass | rejected after checking | outdated / not an e-invoice | not judged |
|---|---|---|---|---|---|
| KoSIT XRechnung-Testsuiteofficial | 86 | 86 | 0 | 0 | 0 |
| FeRD ZUGFeRD 2.5.2 Beispielrechnungenofficial | 105 | 68 | 37 | 0 | 0 |
| CEN/TC 434 EN 16931 examplesofficial | 33 | 26 | 0 | 3 | 4 |
| ZUGFeRD-csharp (FeRD 1.0–2.4)library | 427 | 273 | 86 | 68 | 0 |
| ZUGFeRD/corpuslibrary | 191 | 105 | 22 | 42 | 22 |
| Mustangprojectlibrary | 19 | 8 | 1 | 9 | 1 |
| horstoeko/zugferdlibrary | 3 | 2 | 1 | 0 | 0 |
| rechnex.dewebsite | 20 | 20 | 0 | 0 | 0 |
| getzugferd.comwebsite | 12 | 10 | 0 | 2 | 0 |
| einvoicedesk.comwebsite | 6 | 6 | 0 | 0 | 0 |
| rechnora.dewebsite | 4 | 4 | 0 | 0 | 0 |
| sevdesk.dewebsite | 2 | 2 | 0 | 0 | 0 |
| namequick.appwebsite | 2 | 2 | 0 | 0 | 0 |
| digital-rechnung.dewebsite | 1 | 1 | 0 | 0 | 0 |
| xrechnung.prowebsite | 1 | 1 | 0 | 0 | 0 |
| hyreka.dewebsite | 2 | 1 | 1 | 0 | 0 |
| orgaMAXwebsite | 2 | 0 | 2 | 0 | 0 |
| PDFlibwebsite | 3 | 1 | 0 | 2 | 0 |
| solytics.dewebsite | 2 | 0 | 0 | 2 | 0 |
Of the rejections after checking, 94 are EXTENDED, where the KoSIT configuration is not the only authoritative tool (see above).
The most frequent reasons outside EXTENDED
Outside EXTENDED, 541 files were checked against a current scenario; 39 of them were rejected. These rules appeared most often in the reports (number of files):
- CII-SR-465 · 24
- BR-CL-25 · 10
- PEPPOL-EN16931-R008 · 2
- CII-DT-024 · 1
- BR-CL-11 · 1
- BR-TMP-2 · 1
- CII-SR-466 · 1
- BR-DE-15 · 1
- PEPPOL-EN16931-R010 · 1
- PEPPOL-EN16931-R020 · 1
Which samples you can use
- For XRechnung: the KoSIT test suite. All 86 files pass; it is the reference the rule set itself is tested against, and it is republished with every release.
- For ZUGFeRD: the BASIC and EN 16931 samples from FeRD's current package 2.5.2. All 28 pass the KoSIT validator.
- From a website: only with the date it was checked. The sites whose files all passed here are in the table above — as of 19 October 2026.
What follows if you generate e-invoices
- A sample is a snapshot. Re-check your templates and test files after every new KoSIT release — CII-SR-465 invalidated samples on 2 September that had passed until then.
- Check the profile identifier first. An outdated or misspelt identifier is rejected without a single rule message; it is the failure easiest to overlook in a report.
- EXTENDED only by agreement with the recipient, and tested with the recipient's tool.
- MINIMUM and BASIC WL are no template for an invoice.
The data
Every file as one row: publisher, file URL, SHA-256, declared profile, scenario, verdict and rule codes — including the deliberately broken and the unclear files, which the numbers above leave out. With the URL and the checksum every row can be re-checked. Under CC BY 4.0.
All results as CSVHow to cite this measurement
NormAPI (2026). Sample e-invoices put to the test: 810 XRechnung and ZUGFeRD files against the current rules. https://normapi.com/en/study/sample-invoices
A snapshot of one day. When a new KoSIT release appears we repeat the run and carry the date here forward. A correction is recorded as one.
What this measurement does not show
- A snapshot as of 19 October 2026. Sites and packages get updated; a finding from today may be out of date tomorrow.
- What was freely downloadable was checked. The FeRD Infopaket and FNFE's Factur-X packages sit behind a form and are not included; the sample folders of older FeRD packages come from a public copy on GitHub.
- One checking tool: the official KoSIT configuration. For EXTENDED it is not the only authoritative tool — see above.
- Peppol BIS files fall outside the XRechnung configuration and are not judged.
- Library test files count only where the library itself declares them valid. That is a weaker statement than a published sample.
- Corrections are welcome. If something here is wrong, write to us — it will be corrected with a date.
The other measurements: eleven online validators, the same invoice · two validators, 29 documents
NormAPI provides technical validation, not tax or legal advice.