BR-12: Summe der Positionsnettobeträge fehlt
In der Rechnung fehlt die Summe der Positionsnettobeträge (BT-106). Meist legt die Software den Summenblock unvollständig an oder lässt ihn bei positionslosen Belegen leer.
An Invoice shall have the Sum of Invoice line net amount (BT-106).
BR-12 ist die erste von vier Regeln, die den Summenblock am Ende der Rechnung absichern: BR-12 bis BR-15 verlangen je einen der vier Pflichtbeträge.
Was die Regel prüft
Die Rechnung muss die Summe aller Positionsnettobeträge enthalten, in der Norm BT-106 (BT = Business Term, das nummerierte Feld der Norm). Das ist die reine Addition der Nettobeträge aller Rechnungszeilen (BT-131), noch vor Abzug von Nachlässen und vor Zuschlägen auf Dokumentebene. In der CII-Syntax von ZUGFeRD und XRechnung ist das ram:LineTotalAmount innerhalb der ram:SpecifiedTradeSettlementHeaderMonetarySummation.
Ob der Wert auch rechnerisch stimmt, prüft eine andere Regel: BR-CO-10 verlangt BT-106 = Σ BT-131. BR-12 verlangt nur, dass das Feld überhaupt da ist.
Warum sie in der Praxis fehlschlägt
Erster Auslöser: Die erzeugende Software schreibt den Summenblock nur teilweise, etwa Gesamtbetrag und Zahlbetrag, aber keine Zeilensumme. Das passiert gern bei selbstgebauten Konvertern, die eine PDF-Rechnung nachbauen: Auf dem Papier steht die Zeilensumme oft nicht als eigene Zahl, also wird sie im Mapping vergessen.
Zweiter Auslöser: Belege ohne echte Positionen, zum Beispiel Abschlags- oder Pauschalrechnungen, bei denen nur ein Endbetrag erfasst wurde. Ohne Positionen berechnet die Software keine Zeilensumme, und das Feld bleibt leer. Dann meldet der Validator meist zusätzlich BR-16 (mindestens eine Rechnungszeile).
So behebst du den Fehler
Stell sicher, dass die Rechnung mindestens eine Position mit Nettobetrag hat und die Software daraus ram:LineTotalAmount befüllt. Der Wert ist keine Eingabe, sondern eine Ableitung: Summe aller ram:LineTotalAmount der einzelnen Positionen, mit maximal zwei Nachkommastellen (BR-DEC-09). Belegschmied berechnet den kompletten Summenblock automatisch aus den Positionen, dieses Feld kann dort nicht fehlen.
Wenn du XML von Hand oder per Skript baust: Schreib alle vier Summenfelder (BT-106, BT-109, BT-112, BT-115) immer zusammen, dann erledigst du BR-12 bis BR-15 in einem Zug.
XML-Beispiel: vorher und nachher
Der Summenblock enthält nur Gesamt- und Zahlbetrag:
<!-- verletzt BR-12: LineTotalAmount fehlt -->
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:GrandTotalAmount>1190.00</ram:GrandTotalAmount>
<ram:DuePayableAmount>1190.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
Korrigiert mit Zeilensumme (BT-106) und Nettobetrag (BT-109):
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>1000.00</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">190.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>1190.00</ram:GrandTotalAmount>
<ram:DuePayableAmount>1190.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
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.