BR-04: Rechnungstyp-Code (BT-3) fehlt
Die Rechnung sagt nicht, welche Art Dokument sie ist (Rechnung, Gutschrift, korrigierte Rechnung). Meist fehlt der Code, weil das erzeugende System den Belegtyp nicht auf die UNTDID-1001-Codeliste abbildet.
An Invoice shall have an Invoice type code (BT-3).
Der Rechnungstyp-Code entscheidet, wie der Empfänger das Dokument verbucht: als normale Rechnung, als Gutschrift oder als Korrektur. Ohne ihn kann keine automatische Verarbeitung starten.
Was die Regel prüft
BT-3 (BT = Business Term, das nummerierte Feld der Norm EN 16931) muss vorhanden sein. Der Wert ist ein numerischer Code aus der Codeliste UNTDID 1001. Die wichtigsten Werte im deutschen Alltag: 380 Handelsrechnung, 381 Gutschrift, 384 korrigierte Rechnung, 326 Teilrechnung, 389 Gutschrift im Gutschriftverfahren. In der CII-Syntax steht der Code in rsm:ExchangedDocument/ram:TypeCode.
BR-04 verlangt nur, dass ein Code da ist. Welche Codes die XRechnung zulässt, regelt zusätzlich BR-DE-17; und wer 384 nutzt, braucht wegen BR-DE-26 eine Referenz auf die Vorgängerrechnung.
Warum sie in der Praxis fehlschlägt
Der häufigste Auslöser ist ein fehlendes Mapping: Das Vorsystem kennt Belegarten wie „Ausgangsrechnung" oder „Storno" als interne Kürzel, und beim XML-Export wird vergessen, sie in UNTDID-1001-Codes zu übersetzen, das Feld bleibt leer. Zweiter Fall: Ein Freitext oder das interne Kürzel („RG", „Rechnung") landet im Element; dann schlägt zwar meist erst die Codelisten-Prüfung an, manche Validatoren werten das Feld aber als nicht vorhanden. Dritter Fall sind selbst gebaute Templates, die ram:TypeCode schlicht nicht enthalten, weil das Beispiel, von dem kopiert wurde, es auch nicht hatte.
So behebst du den Fehler
Bilde jede Belegart deines Systems fest auf einen UNTDID-1001-Code ab und schreib diesen Code nach ram:TypeCode. Für den Normalfall einer Rechnung ist 380 richtig. Nutz keine Fantasiewerte: Der Code wird gegen die Codeliste geprüft. In Belegschmied wird der Typ-Code aus der gewählten Belegart abgeleitet, das Feld kann dort nicht leer bleiben.
XML-Beispiel: vorher und nachher
<rsm:ExchangedDocument>
<ram:ID>RE-2026-0142</ram:ID>
<!-- verletzt BR-04: ram:TypeCode fehlt komplett -->
<ram:IssueDateTime>
<udt:DateTimeString format="102">20260810</udt:DateTimeString>
</ram:IssueDateTime>
</rsm:ExchangedDocument>
<rsm:ExchangedDocument>
<ram:ID>RE-2026-0142</ram:ID>
<ram:TypeCode>380</ram:TypeCode>
<ram:IssueDateTime>
<udt:DateTimeString format="102">20260810</udt:DateTimeString>
</ram:IssueDateTime>
</rsm:ExchangedDocument>
Rechnung selbst prüfen
Lade deine Datei hoch und sieh in Sekunden, welche Regeln sie besteht und welche nicht. Kostenlos, ohne Anmeldung, nichts wird gespeichert.