Konto
Deutsch

BR-CO-13: Nettosumme der Rechnung (BT-109) 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-107 Sum of allowances on document level
  • BT-108 Sum of charges on document level
  • BT-109 Invoice total amount without VAT
  • BT-131 Invoice line net amount
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-13] Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).

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

Warum dieser Fehler auftritt

Der Rechnungsgesamtbetrag ohne Umsatzsteuer (BT-109) muss der Summe der Positionsnettobeträge (BT-106) abzüglich der Nachlässe (BT-107) zuzüglich der Zuschläge auf Dokumentebene (BT-108) entsprechen. Die Regel prüft cac:LegalMonetaryTotal/cbc:TaxExclusiveAmount gegen cbc:LineExtensionAmount, cbc:AllowanceTotalAmount und cbc:ChargeTotalAmount (UBL) bzw. ram:TaxBasisTotalAmount gegen ram:LineTotalAmount, ram:AllowanceTotalAmount und ram:ChargeTotalAmount (CII). Abweichungen entstehen meist, wenn die Software BT-109 aus der Steueraufschlüsselung oder aus Bruttosummen ableitet statt aus diesen drei Feldern.

So beheben Sie den Fehler

Formel: BT-109 = BT-106 - BT-107 + BT-108, auf 2 Nachkommastellen gerundet; fehlende BT-107 oder BT-108 zählen als 0. In UBL das Ergebnis in cbc:TaxExclusiveAmount schreiben, in CII in ram:TaxBasisTotalAmount. Zuerst sicherstellen, dass BT-106, BT-107 und BT-108 selbst stimmen (BR-CO-10 bis BR-CO-12), dann BT-109 aus den tatsächlich geschriebenen Werten neu berechnen. Umsatzsteuer, Rundungsbetrag und Anzahlungen gehören nicht hinein.

Beispiel (gültig)

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">250.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">245.90</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">292.62</cbc:TaxInclusiveAmount>
  <cbc:AllowanceTotalAmount currencyID="EUR">10.00</cbc:AllowanceTotalAmount>
  <cbc:ChargeTotalAmount currencyID="EUR">5.90</cbc:ChargeTotalAmount>
  <cbc:PayableAmount currencyID="EUR">292.62</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Was der Validator prüft

Geprüftes Element (Kontext):

UBL

cac:LegalMonetaryTotal

Test (XPath):

((cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10) div 100 ))  or (not(cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10 ) div 100)) or ((cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount)) * 10 * 10 ) div 100)) or (not(cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = xs:decimal(cbc:LineExtensionAmount)))

CII

//ram:SpecifiedTradeSettlementHeaderMonetarySummation

Test (XPath):

(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or      ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100)  and not (ram:ChargeTotalAmount)) or      ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100)  and not (ram:AllowanceTotalAmount)) or      ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount))  *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))

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-13?

BR-CO-13 ist eine EN-16931-Kernregel: Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).

Wird meine Rechnung wegen BR-CO-13 abgelehnt?

Ja. BR-CO-13 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-13?

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.