BR-CO-15: Bruttobetrag (BT-112) ≠ Netto + Umsatzsteuer
Der Bruttobetrag muss genau Nettobetrag plus Umsatzsteuer-Gesamtbetrag sein.
Steckbrief
- Regel
BR-CO-15- Schweregrad
- Fehler – die Rechnung ist ungültig
- Regelwerk
- EN 16931 – gilt für XRechnung und ZUGFeRD/Factur-X
- Betroffene Felder
- BT-112, BT-109, BT-110
- Syntax
- CII & UBL
Rechnung jetzt prüfen
PDF oder XML hochladen – kostenlos, ohne Anmeldung, gegen die offiziellen Regelwerke.
Zum Online-ValidatorOffizieller Wortlaut
[BR-CO-15] Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
Quelle: offizielle Schematron zur EN 16931 (CEN), wie sie auch in XRechnung und ZUGFeRD/Factur-X geprüft wird.
Was die Regel verlangt
Der Gesamtbetrag mit Umsatzsteuer (BT-112) muss genau der Summe aus Gesamtbetrag ohne Umsatzsteuer (BT-109) und Umsatzsteuer-Gesamtbetrag (BT-110) entsprechen. Die Regel gehört zur EN 16931 und gilt für XRechnung, ZUGFeRD und Factur-X.
Bereits gezahlte Beträge (BT-113) und Rundungsbeträge (BT-114) verändern nicht BT-112, sondern erst den Zahlbetrag (BT-115).
Typische Ursachen
- Rundung pro Position: Der Bruttobetrag wird aus den gerundeten Bruttobeträgen der Positionen addiert statt aus Netto plus Steuer. Bei vielen Positionen weicht er dann um einige Cent ab.
- Eine Anzahlung wurde von BT-112 abgezogen statt in BT-113 angegeben.
- BT-110 enthält einen anderen Wert als die Summe der Steuerbeträge in der Aufschlüsselung (BT-117).
- Fremdwährung: Der Steuerbetrag in Buchungswährung (BT-111) wurde versehentlich in die Summe übernommen.
So sieht es im XML aus
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>300.00</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>300.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">57.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>357.01</ram:GrandTotalAmount> <!-- 300.00 + 57.00 = 357.00 -->
<ram:DuePayableAmount>357.01</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>300.00</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>300.00</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">57.00</ram:TaxTotalAmount>
<ram:GrandTotalAmount>357.00</ram:GrandTotalAmount>
<ram:DuePayableAmount>357.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
In UBL ist BT-112 cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount.
Lösung in C#
Berechnen Sie die Summen nacheinander aus den Werten, die tatsächlich in der Rechnung stehen – nie aus eigenen Zwischenwerten. Mit dem Facturexa Creator:
rechnung.TaxBasisAmount = rechnung.LineTotalAmount
- (rechnung.AllowanceTotalAmount ?? 0) + (rechnung.ChargeTotalAmount ?? 0); // BT-109
rechnung.TaxTotalAmount = rechnung.Taxes.Sum(t => t.TaxAmount ?? 0); // BT-110
rechnung.GrandTotalAmount = rechnung.TaxBasisAmount + rechnung.TaxTotalAmount; // BT-112
rechnung.DuePayableAmount = rechnung.GrandTotalAmount; // BT-115 (ohne Anzahlung)