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.
<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><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.
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