Back to the error catalogue
BR-DE-17BT-3
input

Germany

The invoice type code is not in the expected list

`Invoice type code` (BT-3) should be 326, 380, 381, 384, 389, 875, 876 or 877 from the UNTDID 1001 code list.

Only the issuer holds this value: Factlint reports it and never fabricates it. Test your invoice to find out whether it is affected.

The message your validator prints

Copied verbatim from the sealed artefact: this is the exact sentence the check prints when this rule fails.

[BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice).

Quoted from schematron-xrechnung 3.0.2, licensed under Apache-2.0.

Common searches around this code

These phrases mirror what an integrator searches for: code, syntax, rule, business field and correction.

BR-DE-17 The invoice type code is not in the expected listBR-DE-17 XRechnung Schematron package (KoSIT)BR-DE-17 BT-3[BR-DE-17] Mit dem Element "Invoice type code" (BT-3) sollen ausschließlich folgende Codes aus der Codeliste UNTDID 1001 übermittelt werden: 326 (Partial invoice), 380 (Commercial invoice), 384 (Corrected invoice), 389 (Self-billed invoice) und 381 (Credit note),875 (Partial construction invoice), 876 (Partial final construction invoice), 877 (Final construction invoice).BR-DE-17 correction

Test your file with this error in mind

Upload the invoice involved: the report will say whether this code appears, where it appears in the document, and whether Factlint can only report it or also fix it.

To automate this check in an ERP flow, call the validation API and link every returned code to its public page.

Why this error happens

XRechnung narrows a list that EN 16931 leaves wide. The last three codes — 875, 876, 877 — are specific to German construction (interim and final construction invoices). A code that is technically valid but outside the list, such as 388 (*tax invoice*), passes European validation and stops here.

How to fix it

Pick the code that actually describes the document in your system. Factlint does not replace it: an invoice type is a legal qualification, not a formatting detail — turning a 388 into a 380 would change what the document claims to be.

XML correction example

BEFORE (invalid)
<ram:TypeCode>325</ram:TypeCode>
AFTER (compliant)
<ram:TypeCode>380</ram:TypeCode>