BR-CO-15: Bruttogesamtbetrag stimmt nicht

Der Gesamtbetrag einschließlich Umsatzsteuer (BT-112) muss Nettogesamtbetrag (BT-109) plus Umsatzsteuer-Gesamtbetrag (BT-110) sein.

Regelwerk
EN 16931 (CEN)
Syntax
UBL und CII
Betroffene Felder
BT-109, BT-110, BT-112

Offizieller Regeltext

Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).

Regeltext aus den Validierungsartefakten zu EN 16931 in Version 1.3.16 (CEN/TC 434, veröffentlicht von ConnectingEurope), Lizenz EUPL 1.2; enthalten in der XRechnung-Validatorkonfiguration 2026-08-31.

Schweregrad

Ein Verstoß führt im Szenario „XRechnung“ des KoSIT-Validators zur Ablehnung der Rechnung.

Typische Ursachen

Der Bruttobetrag wird separat berechnet oder aus einem Kassensystem übernommen und weicht durch Rundung ab.

So behebst du den Fehler

BT-112 immer als BT-109 plus BT-110 bilden.

Geprüftes Beispiel: falsch und richtig

Die Auszüge stammen aus vollständigen, synthetischen Rechnungen des E-Rechnungs-Testkorpus. Geänderte Zeilen sind hervorgehoben. Beide Dateien werden in den automatischen Tests mit dem KoSIT-Validator geprüft.

Beispiel in UBL

Änderung gegenüber der gültigen Rechnung: Rechnungsbetrag mit USt (BT-112) um 1 Cent zu hoch, Zahlbetrag angepasst.

Falsch – ab Zeile 107
  <cbc:LineExtensionAmount currencyID="EUR">501.55</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">501.55</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">596.85</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">596.85</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
Richtig – ab Zeile 107
  <cbc:LineExtensionAmount currencyID="EUR">501.55</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">501.55</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">596.84</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">596.84</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-CO-15 Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110). Fundstelle: /Invoice[1]

Vollständige Dateien im Testkorpus: br-co-15-bruttobetrag-falsch_ubl.xml (falsch) und standard_ubl.xml (richtig).

Beispiel in CII

Änderung gegenüber der gültigen Rechnung: Rechnungsbetrag mit USt (BT-112) um 1 Cent zu hoch, Zahlbetrag angepasst.

Falsch – ab Zeile 207
    <ram:TaxBasisTotalAmount>501.55</ram:TaxBasisTotalAmount>
    <ram:TaxTotalAmount currencyID="EUR">95.29</ram:TaxTotalAmount>
    <ram:GrandTotalAmount>596.85</ram:GrandTotalAmount>
    <ram:DuePayableAmount>596.85</ram:DuePayableAmount>
  </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>
Richtig – ab Zeile 207
    <ram:TaxBasisTotalAmount>501.55</ram:TaxBasisTotalAmount>
    <ram:TaxTotalAmount currencyID="EUR">95.29</ram:TaxTotalAmount>
    <ram:GrandTotalAmount>596.84</ram:GrandTotalAmount>
    <ram:DuePayableAmount>596.84</ram:DuePayableAmount>
  </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
</ram:ApplicableHeaderTradeSettlement>

Prüfergebnis (KoSIT-Validator 1.6.3, Konfiguration 2026-08-31): falsche Datei abgelehnt, korrigierte Datei angenommen. Meldungen zur falschen Datei:

  • BR-CO-15 Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110). Fundstelle: /CrossIndustryInvoice[1]

Vollständige Dateien im Testkorpus: br-co-15-bruttobetrag-falsch_cii.xml (falsch) und standard_cii.xml (richtig).

Testdateien zu BR-CO-15

Technische Details: Kontext und Prüfausdruck aus dem Schematron

CII

Kontext:

/rsm:CrossIndustryInvoice

Prüfausdruck:

every $Currency in /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode satisfies ( ( count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $Currency]) = 1 and xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount)[1]) = round( ( xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount)[1]) + xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID = $Currency])[1]) ) * 100 ) div 100 ) or ( xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount)[1]) = xs:decimal((/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount)[1]) ) )

UBL

Kontext:

/ubl:Invoice | /cn:CreditNote

Prüfausdruck:

every $Currency in cbc:DocumentCurrencyCode satisfies (count(cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) eq 1) and (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxInclusiveAmount) = round( (cac:LegalMonetaryTotal/xs:decimal(cbc:TaxExclusiveAmount) + cac:TaxTotal/xs:decimal(cbc:TaxAmount[@currencyID=$Currency])) * 10 * 10) div 100)

Technische Formatprüfung nach XRechnung 3.0.2; keine steuerliche oder rechtliche Beratung.