BR-CO-15: Rechnungsgesamtbetrag mit Umsatzsteuer weicht ab
Der Bruttobetrag der Rechnung (BT-112) muss exakt die Summe aus Nettogesamtbetrag (BT-109) und Umsatzsteuersumme (BT-110) sein. Meist fehlt oder überzählt ein Cent, weil brutto kalkuliert oder ein Rundungsbetrag eingerechnet wurde.
[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).
Betroffen:BT-109BT-110BT-112
Was die Regel prüft
Auf Deutsch: Gesamtbetrag der Rechnung mit Umsatzsteuer (BT-112) = Gesamtbetrag ohne Umsatzsteuer (BT-109) + Summe der Umsatzsteuer (BT-110). In der Visualisierung heißen BT-109 und BT-112 beide „Gesamtsumme“; gemeint ist einmal der Netto-, einmal der Bruttobetrag.
| Begriff | UBL | CII |
|---|---|---|
| BT-109 netto | cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount | ram:TaxBasisTotalAmount |
| BT-110 Umsatzsteuer | cac:TaxTotal/cbc:TaxAmount mit currencyID der Rechnungswährung | ram:TaxTotalAmount mit currencyID der Rechnungswährung |
| BT-112 brutto | cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount | ram:GrandTotalAmount |
UBL: Es muss genau ein cbc:TaxAmount direkt in cac:TaxTotal geben, dessen currencyID der Rechnungswährung (BT-5) entspricht. Dann gilt BT-112 = round((BT-109 + BT-110) × 100) ÷ 100, ohne Toleranz.
CII: Dieselbe Rechenregel, ebenfalls mit genau einem passenden ram:TaxTotalAmount. Zusätzlich gilt die Regel als erfüllt, wenn ram:GrandTotalAmount gleich ram:TaxBasisTotalAmount ist. Das deckt Rechnungen ohne Umsatzsteuer ab, bei denen BT-110 fehlt.
Nicht in BT-112 gehören bereits gezahlte Beträge (BT-113) und der Rundungsbetrag (BT-114). Beide wirken erst auf den fälligen Betrag (BT-115).
Typische Ursachen
- Brutto-Kalkulation: Die Software addiert die Bruttopreise zu BT-112 und rechnet Netto und Steuer daraus zurück. Ein selbst gerechnetes Beispiel (nicht aus der Testsuite): zwei Artikel zu je 9,99 € brutto bei 19 %. Brutto zusammen 19,98 €. Netto je Artikel 8,39 €, zusammen 16,78 €; Steuer 16,78 € × 19 % = 3,19 €; Netto plus Steuer ergibt 19,97 €. Steht 19,98 € in BT-112, schlägt BR-CO-15 an.
- Eine Rundung auf glatte Beträge, etwa auf 5 Cent, wird in BT-112 eingerechnet statt als Rundungsbetrag BT-114 ausgewiesen.
- Eine Anzahlung wird von BT-112 abgezogen. BT-112 bleibt unverändert, die Anzahlung gehört in BT-113.
- UBL mit Steuerwährung (BT-6): Der zweite
cac:TaxTotalfür die Steuer in Buchungswährung (BT-111) trägt versehentlich ebenfalls die Rechnungswährung alscurrencyID. Dann gibt es zwei passende Steuerbeträge, und die Bedingung „genau einer“ schlägt fehl. - Das Attribut
currencyIDfehlt an BT-110 oder ist anders geschrieben, etwaeur. Dann findet der Validator keinen Steuerbetrag in Rechnungswährung.
Beispiel aus der KoSIT-Testsuite
Testdatei 01.17a zeigt den Unterschied zwischen BT-112 und dem Zahlbetrag. Die Rechnung hat einen Steuersatz von 7 % und einen Rundungsbetrag von 0,01 €:
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">22.04</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">314.86</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">22.04</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>7</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">314.86</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">314.86</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">336.9</cbc:TaxInclusiveAmount>
<cbc:PayableRoundingAmount currencyID="EUR">0.01</cbc:PayableRoundingAmount>
<cbc:PayableAmount currencyID="EUR">336.91</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/standard/01.17a-INVOICE_ubl.xml (Apache 2.0)
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
<ram:LineTotalAmount>314.86</ram:LineTotalAmount>
<ram:TaxBasisTotalAmount>314.86</ram:TaxBasisTotalAmount>
<ram:TaxTotalAmount currencyID="EUR">22.04</ram:TaxTotalAmount>
<ram:RoundingAmount>0.01</ram:RoundingAmount>
<ram:GrandTotalAmount>336.9</ram:GrandTotalAmount>
<ram:DuePayableAmount>336.91</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/standard/01.17a-INVOICE_uncefact.xml (Apache 2.0)
| Schritt | Rechnung | Ergebnis |
|---|---|---|
| Umsatzsteuer BT-110 | 314,86 € × 7 % = 22,0402 € | 22,04 € |
| BR-CO-15: BT-109 + BT-110 | 314,86 € + 22,04 € | 336,90 € = BT-112 |
| Fälliger Betrag BT-115 | 336,90 € + Rundungsbetrag 0,01 € | 336,91 € |
Hätte die Software den Rundungscent in BT-112 eingerechnet und dort 336,91 € geschrieben, wäre BR-CO-15 verletzt. Dass BT-112 in der Datei als 336.9 mit nur einer Nachkommastelle steht, ist unschädlich, weil der Validator Dezimalzahlen vergleicht.
Lösung
In der Rechnungssoftware
- Stellen Sie die Summenbildung für E-Rechnungen auf Netto-Basis um: Positionen netto summieren, Steuer je Steuersatz aus der Nettosumme berechnen, Brutto als Netto plus Steuer bilden.
- Bei Bruttopreisen im Einzelhandel prüfen Sie, ob Ihr Programm eine eigene Rundungslogik für E-Rechnungen anbietet; die Differenz zum gewohnten Bruttobetrag gehört dann in den Rundungsbetrag.
- Erfassen Sie Anzahlungen als gezahlten Betrag (BT-113), nicht als Abzug vom Rechnungsbetrag.
Im XML
- UBL:
cbc:TaxInclusiveAmount=cbc:TaxExclusiveAmount+cac:TaxTotal/cbc:TaxAmountin Rechnungswährung; Rundung incbc:PayableRoundingAmount. - CII:
ram:GrandTotalAmount=ram:TaxBasisTotalAmount+ram:TaxTotalAmountmitcurrencyIDder Rechnungswährung; Rundung inram:RoundingAmount. - Bei abweichender Steuerwährung: zweiten
cac:TaxTotalnur mitcbc:TaxAmountin der Steuerwährung ausgeben, ohnecac:TaxSubtotal. - Prüfen Sie die Datei erneut mit E-Rechnung prüfen; bleibt ein Cent Differenz, liegt die Ursache meist schon in BT-109 oder in BR-CO-10.
Quellen
- EN16931 Validation artefacts v1.3.16 (CEN-Schematron)ConnectingEurope, eInvoicing-EN16931 (GitHub), 13. April 2026 · geprüft am 7. November 2026
- Validator-Konfiguration XRechnung 2026-08-31 (Release v2026-08-31, verwendet CEN-Schematron 1.3.16)KoSIT (GitHub itplr-kosit), 2. September 2026 · geprüft am 7. November 2026
- XRechnung-Testsuite 2026-08-31 (Release v2026-08-31)KoSIT (GitHub itplr-kosit), 2. September 2026 · geprüft am 7. November 2026