Zum Inhalt springen

BR-CO – Bedingungen und Berechnungen

BR-CO-15: Bruttobetrag (BT-112) ist nicht Netto plus Umsatzsteuer

FehlerGeschäftsregel EN 16931 (CEN)

Offizielle Meldung

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

Quelle: CEN EN 16931, Version 1.3.16

Was die Meldung bedeutet

Der Rechnungsbetrag inklusive Umsatzsteuer entspricht nicht dem Betrag ohne Umsatzsteuer plus dem Steuerbetrag. Diese einfache Gleichung prüft jeder Empfänger als Erstes: Netto plus Steuer muss exakt den Bruttobetrag ergeben, auf den Cent. Stimmt sie nicht, ist die Rechnung rechnerisch falsch, und der Empfänger lehnt sie ab, ohne den Fehler selbst zu suchen.

So beheben Sie den Fehler

Setzen Sie TaxInclusiveAmount auf die Summe von TaxExclusiveAmount und dem TaxAmount in Rechnungswährung, gerundet auf zwei Nachkommastellen. Prüfen Sie vorher, welcher der drei Werte tatsächlich falsch ist, statt nur den Bruttobetrag anzupassen.

Vorher – fehlerhaft
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
  <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">118.00</cbc:TaxInclusiveAmount>
</cac:LegalMonetaryTotal>
Nachher – korrigiert
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
  <cbc:TaxExclusiveAmount currencyID="EUR">100.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">119.00</cbc:TaxInclusiveAmount>
</cac:LegalMonetaryTotal>

Häufige Fragen

Welcher Wert ist falsch, wenn BR-CO-15 meldet?

Prüfen Sie die Kette: Positionssumme (BT-106), Netto (BT-109), Steuer (BT-110). Der erste Wert, der nicht aus den vorherigen folgt, ist der Fehler.

Zählt der Rundungsbetrag (BT-114) hier mit?

Nein. BR-CO-15 vergleicht nur Netto plus Steuer mit Brutto. Der Rundungsbetrag geht erst in den fälligen Betrag (BT-115) ein.

Auch anzutreffen, wenn …

  • Die Beträge wurden aus verschiedenen Quellen übernommen, etwa Netto aus dem Auftrag und Brutto aus dem Angebot.
  • Brutto wurde aus den Bruttopositionen addiert, Netto und Steuer aber getrennt gerundet.
  • Bei zwei Währungsangaben wurde der Steuerbetrag in Buchungswährung statt in Rechnungswährung verwendet.

Betroffene Felder

  • BT-112
  • BT-109
  • BT-110

Verwandte Regeln

Rechnung prüfen

Der XRechnung-Validator meldet diese Regel mit Zeilennummer und Fundstelle – direkt in Ihrem Browser, ohne Upload.

Zum XRechnung-Validator

Technische Details
UBL · Kontext (XPath)
/ubl:Invoice | /cn:CreditNote
UBL · Schematron-Test
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)
CII · Kontext (XPath)
/rsm:CrossIndustryInvoice
CII · Schematron-Test
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]) ) )
CII · Kontext (XPath)
/rsm:CrossIndustryInvoice
CII · Schematron-Test
every $Currency in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode satisfies ( count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))

Erklärung erstellt am 14.09.2026