BR-CO – Bedingungen und Berechnungen
BR-CO-11: Summe der Nachlässe (BT-107) stimmt nicht
FehlerGeschäftsregel EN 16931 (CEN)
Offizielle Meldung
[BR-CO-11]-Sum of allowances on document level (BT-107) = Σ Document level allowance amount (BT-92).Quelle: CEN EN 16931, Version 1.3.16
So beheben Sie den Fehler
Berechnen Sie BT-107 als Summe aller Nachlassbeträge auf Rechnungsebene und tragen Sie sie in cbc:AllowanceTotalAmount ein; ohne Nachlässe lassen Sie das Element weg oder setzen 0. Positionsnachlässe gehören nicht dazu, sie stecken bereits im Positionsnettobetrag.
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Mengenrabatt</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">50.00</cbc:Amount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Treuerabatt</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">25.50</cbc:Amount>
</cac:AllowanceCharge>
<cac:LegalMonetaryTotal>
<cbc:AllowanceTotalAmount currencyID="EUR">50.00</cbc:AllowanceTotalAmount>
</cac:LegalMonetaryTotal><cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Mengenrabatt</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">50.00</cbc:Amount>
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Treuerabatt</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">25.50</cbc:Amount>
</cac:AllowanceCharge>
<cac:LegalMonetaryTotal>
<cbc:AllowanceTotalAmount currencyID="EUR">75.50</cbc:AllowanceTotalAmount>
</cac:LegalMonetaryTotal>Was die Meldung bedeutet
Ihre Rechnung nennt in den Gesamtbeträgen eine Summe der Nachlässe, die nicht zu den einzelnen Nachlässen auf Rechnungsebene passt. Die Norm verlangt, dass diese Summe exakt der Addition aller Nachlassbeträge entspricht, gerundet auf zwei Nachkommastellen. Schon ein Cent Unterschied macht die Rechnung ungültig, weil die empfangende Software die Beträge nachrechnet. Typisch sind Rundungen je Nachlass, ein Nachlass, der nachträglich geändert wurde, oder ein Positionsrabatt, der fälschlich in die Rechnungssumme eingerechnet wurde.
Häufige Ursachen
- Ein Nachlass wurde nach der Berechnung der Summen geändert oder gelöscht.
- Positionsnachlässe wurden in die Summe auf Rechnungsebene einbezogen.
- Die Software rundet jeden Nachlass anders als die Summe.
Häufige Fragen
Muss BT-107 angegeben werden, wenn es keine Nachlässe gibt?
Nein. Ohne Nachlässe auf Rechnungsebene darf das Element fehlen; ist es vorhanden, muss es 0 oder die exakte Summe enthalten.
Werden Nachlässe mit negativem Vorzeichen angegeben?
Nein. Nachlassbeträge sind positiv; das Kennzeichen ChargeIndicator false macht sie zum Abzug. Ein negativer Betrag wäre ein weiterer Fehler.
Betroffene Felder
- BT-107
- BT-92
- BG-20
- BG-22
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)
cac:LegalMonetaryTotal- UBL · Schematron-Test
xs:decimal(cbc:AllowanceTotalAmount) = (round(sum(../cac:AllowanceCharge[cbc:ChargeIndicator=false()]/xs:decimal(cbc:Amount)) * 10 * 10) div 100) or (not(cbc:AllowanceTotalAmount) and not(../cac:AllowanceCharge[cbc:ChargeIndicator=false()]))- CII · Kontext (XPath)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation- CII · Schematron-Test
(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()]/ram:ActualAmount[1])* 10 * 10 ) div 100)- CII · Kontext (XPath)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation- CII · Schematron-Test
(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()]/ram:ActualAmount)* 10 * 10 ) div 100)
Erklärung erstellt am 14.09.2026