BR-CO – Bedingungen und Berechnungen
BR-CO-16: Fälliger Betrag (BT-115) geht nicht auf
FehlerGeschäftsregel EN 16931 (CEN)
Originaltext der Regel
[BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).Quelle: CEN EN 16931, Version 1.3.16
Korrektur im XML
Tragen Sie die Anzahlung in cbc:PrepaidAmount und eine Rundung in cbc:PayableRoundingAmount ein und setzen Sie cbc:PayableAmount auf BT-112 minus BT-113 plus BT-114. Skonto bleibt außen vor; es wird in den Zahlungsbedingungen beschrieben, nicht abgezogen.
<cac:LegalMonetaryTotal>
<cbc:TaxInclusiveAmount currencyID="EUR">1115.51</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">615.51</cbc:PayableAmount>
</cac:LegalMonetaryTotal><cac:LegalMonetaryTotal>
<cbc:TaxInclusiveAmount currencyID="EUR">1115.51</cbc:TaxInclusiveAmount>
<cbc:PrepaidAmount currencyID="EUR">500.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="EUR">615.51</cbc:PayableAmount>
</cac:LegalMonetaryTotal>Bedeutung der Regel
Der Betrag, den Ihre Rechnung als fällig ausweist, passt nicht zu den anderen Gesamtbeträgen. Die Norm rechnet: Bruttobetrag mit Umsatzsteuer, minus bereits gezahlter Betrag, plus Rundungsbetrag, ergibt den fälligen Betrag. Fehlt eine Anzahlung, gilt sie als null; fehlt der Rundungsbetrag, ebenso. Der Fehler entsteht oft, wenn eine Anzahlung nur im Text erwähnt, aber nicht als gezahlter Betrag eingetragen wird, oder wenn Skonto vorab abgezogen wurde, obwohl es nicht in den Zahlbetrag gehört.
Woran es meist liegt
- Eine Anzahlung wurde vom fälligen Betrag abgezogen, aber nicht in BT-113 eingetragen.
- Skonto oder ein Zahlungsziel-Rabatt wurde in den Zahlbetrag eingerechnet.
- Der Rundungsbetrag wurde angewendet, aber nicht in BT-114 ausgewiesen.
Fragen und Antworten
Wie gebe ich Skonto richtig an?
Als Text in den Zahlungsbedingungen BT-20, in XRechnung mit dem Muster #SKONTO#TAGE=14#PROZENT=2.00#. Der fällige Betrag bleibt der volle Betrag.
Darf der fällige Betrag negativ sein?
Ja, etwa wenn eine Anzahlung den Rechnungsbetrag übersteigt; dann schuldet der Aussteller die Differenz. Die Rechenregel gilt unverändert.
Felder der EN 16931
- BT-115
- BT-112
- BT-113
- BT-114
- BG-22
Siehe auch
Rechnung prüfen
Der XRechnung-Validator meldet diese Regel mit Zeilennummer und Fundstelle – direkt in Ihrem Browser, ohne Upload.
Die Regel im Detail
- UBL · Kontext (XPath)
cac:LegalMonetaryTotal- UBL · Schematron-Test
(exists(cbc:PrepaidAmount) and not(exists(cbc:PayableRoundingAmount)) and (xs:decimal(cbc:PayableAmount) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and not(exists(cbc:PayableRoundingAmount)) and xs:decimal(cbc:PayableAmount) = xs:decimal(cbc:TaxInclusiveAmount)) or (exists(cbc:PrepaidAmount) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = xs:decimal(cbc:TaxInclusiveAmount)))- CII · Kontext (XPath)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation- CII · Schematron-Test
(xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) - xs:decimal(ram:TotalPrepaidAmount[1]) + xs:decimal(ram:RoundingAmount[1])) or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) + xs:decimal(ram:RoundingAmount[1])) and not(ram:TotalPrepaidAmount)) or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1]) - xs:decimal(ram:TotalPrepaidAmount[1])) and not(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount[1]) = xs:decimal(ram:GrandTotalAmount[1])) and not(ram:TotalPrepaidAmount) and not(ram:RoundingAmount))- CII · Kontext (XPath)
//ram:SpecifiedTradeSettlementHeaderMonetarySummation- CII · Schematron-Test
(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))
Erklärung erstellt am 14.09.2026