Konto
Deutsch

BR-CO-16: Fälliger Betrag (BT-115) geht nicht auf

EN-16931-Kernregel · Fehler · UBL / CII

StandardEN 16931-1 (europäisches Datenmodell der E-Rechnung)SchweregradFehler: die Rechnung wird abgelehntSyntaxUBL, CIIGeschäftsbegriffe
  • BT-112 Invoice total amount with VAT
  • BT-113 Paid amount
  • BT-114 Rounding amount
  • BT-115 Amount due for payment
Gilt fürJede EN-16931-Rechnung: XRechnung, ZUGFeRD 2.x / Factur-X (Profile EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0 sowie nationale CIUS.

Offizieller Regeltext

[BR-CO-16] Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

Der normative Text ist Englisch und wird unverändert zitiert.

Warum dieser Fehler auftritt

Der fällige Betrag (BT-115) muss dem Bruttobetrag (BT-112) abzüglich des bereits gezahlten Betrags (BT-113) zuzüglich des Rundungsbetrags (BT-114) entsprechen. Die Regel prüft cac:LegalMonetaryTotal/cbc:PayableAmount gegen cbc:TaxInclusiveAmount, cbc:PrepaidAmount und cbc:PayableRoundingAmount (UBL) bzw. ram:DuePayableAmount gegen ram:GrandTotalAmount, ram:TotalPrepaidAmount und ram:RoundingAmount (CII). Sie schlägt meist fehl, wenn die Software nach einer Teilzahlung den offenen Restbetrag schreibt, ohne auch die Anzahlung auszuweisen, oder das Vorzeichen des Rundungsbetrags falsch setzt.

So beheben Sie den Fehler

Formel: BT-115 = BT-112 - BT-113 + BT-114, auf 2 Nachkommastellen gerundet; fehlende BT-113 oder BT-114 zählen als 0. Bei erhaltener Anzahlung diese als positiven Wert in cbc:PrepaidAmount / ram:TotalPrepaidAmount eintragen und cbc:PayableAmount / ram:DuePayableAmount entsprechend reduzieren. cbc:PayableRoundingAmount / ram:RoundingAmount nur für Bargeldrundung verwenden, mit dem Vorzeichen der Anpassung (z. B. -0.02 oder 0.03). Bei einer vollständig bezahlten Rechnung ist PrepaidAmount gleich TaxInclusiveAmount und PayableAmount 0.00.

Beispiel (gültig)

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">238.00</cbc:TaxInclusiveAmount>
  <cbc:PrepaidAmount currencyID="EUR">100.00</cbc:PrepaidAmount>
  <cbc:PayableAmount currencyID="EUR">138.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Was der Validator prüft

Geprüftes Element (Kontext):

UBL

cac:LegalMonetaryTotal

Test (XPath):

(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

//ram:SpecifiedTradeSettlementHeaderMonetarySummation

Test (XPath):

(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)))

Rechnung prüfen

Legen Sie Ihre XML- oder PDF-Datei im Validator ab; jede verletzte Regel ist mit ihrer Seite hier verlinkt. Kostenlos, ohne Konto, die Datei wird nicht gespeichert.

Rechnung prüfen →

Dieselbe Prüfung per API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Verwandte Regeln

Häufige Fragen

Was bedeutet BR-CO-16?

BR-CO-16 ist eine EN-16931-Kernregel: Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).

Wird meine Rechnung wegen BR-CO-16 abgelehnt?

Ja. BR-CO-16 ist als „fatal“ eingestuft; Validatoren (KoSIT, Peppol Access Points, ZRE/OZG-RE) weisen die Rechnung zurück, bis der Fehler behoben ist.

Für welche Formate gilt BR-CO-16?

Jede EN-16931-Rechnung: XRechnung, ZUGFeRD 2.x / Factur-X (Profile EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0 sowie nationale CIUS. Syntax: UBL und CII.

Quelle: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Katalog erzeugt aus dem offiziellen Schematron am 2026-10-14.