Zum Inhalt springen

BR-CO-10: Summe der Positionsnettobeträge (BT-106) weicht ab

Die „Summe aller Positionen“ (BT-106) muss genau der Summe der Nettobeträge aller Rechnungspositionen (BT-131) entsprechen. Schon ein Cent Abweichung führt zum Fehler.

Stand:

BR-CO-10· CEN-Schematron 1.3.16 (EN 16931), Validator-Konfiguration XRechnung 2026-08-31
[BR-CO-10]-Sum of Invoice line net amount (BT-106) = Σ Invoice line net amount (BT-131).

Betroffen:BT-106BT-131

Was die Regel prüft

Auf Deutsch: Summe der Nettobeträge der Rechnungspositionen (BT-106) = Σ Nettobetrag der Rechnungsposition (BT-131). Die Regel gehört zum europäischen Kern der EN 16931 und hat die Stufe „fatal“; sie gilt für XRechnung ebenso wie für andere Formate nach der Norm.

SyntaxBT-106BT-131 (je Position)
UBLcac:LegalMonetaryTotal/cbc:LineExtensionAmountcac:InvoiceLine/cbc:LineExtensionAmount bzw. cac:CreditNoteLine/cbc:LineExtensionAmount
CIIram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmountram:IncludedSupplyChainTradeLineItem/…/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount
Bedingung in UBL und CII, ohne Toleranz
BT-106 = round(Σ BT-131 × 100) ÷ 100

Der Validator addiert die BT-131-Werte so, wie sie in der Datei stehen, rundet die Summe auf zwei Nachkommastellen und vergleicht exakt mit BT-106. Mengen und Preise der Positionen spielen für BR-CO-10 keine Rolle.

Nachlässe und Zuschläge auf Belegebene (BT-92, BT-99) gehören nicht in BT-106, sie wirken erst auf den Nettogesamtbetrag BT-109 (Regel BR-CO-13). Nachlässe und Zuschläge auf Positionsebene sind dagegen schon in BT-131 enthalten.

Typische Ursachen

  • BT-106 wird aus ungerundeten Produkten Menge × Preis summiert, während BT-131 gerundet ausgegeben wird. Bei Preisen mit vier oder mehr Nachkommastellen oder vielen Positionen entstehen so Cent-Differenzen; das Beispiel unten zeigt einen solchen Fall.
  • Ein Rabatt auf die ganze Rechnung wird von BT-106 abgezogen. Richtig bleibt BT-106 die reine Positionssumme, der Rabatt gehört als Nachlass auf Belegebene (BG-20) in die Rechnung.
  • Positionsrabatte werden doppelt berücksichtigt: einmal im BT-131 der Position und noch einmal bei der Summenbildung.
  • Positionen mit negativem Betrag, etwa Rücknahmen, werden beim Export weggelassen oder mit positivem Vorzeichen summiert. Testdatei 02.06a zeigt eine gültige Rechnung mit einer Position über −19,00 €.
  • Text- oder Zwischensummenzeilen der Druckvorlage fließen in die Summe ein, werden aber nicht als Position exportiert, oder umgekehrt.

Beispiel aus der KoSIT-Testsuite

Testdatei 03.05a ist eine Energierechnung mit drei Positionen, darunter ein Messpreis von 386,52 € je 366 Tage, abgerechnet für 31 Tage. Die Summen stehen in UBL und CII so in der Datei:

UBL: BT-106 in cbc:LineExtensionAmount
<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">44682.01</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">44682.01</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">53171.59</cbc:TaxInclusiveAmount>
  <cbc:PayableAmount currencyID="EUR">53171.59</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/standard/03.05a-INVOICE_ubl.xml (Apache 2.0)

CII: BT-106 in ram:LineTotalAmount der Kopfsummen
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:LineTotalAmount>44682.01</ram:LineTotalAmount>
  <ram:TaxBasisTotalAmount>44682.01</ram:TaxBasisTotalAmount>
  <ram:TaxTotalAmount currencyID="EUR">8489.58</ram:TaxTotalAmount>
  <ram:GrandTotalAmount>53171.59</ram:GrandTotalAmount>
  <ram:DuePayableAmount>53171.59</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/standard/03.05a-INVOICE_uncefact.xml (Apache 2.0)

CII: Preis je 366 Tage und abgerechnete Menge der ersten Position (Messpreis)
<ram:SpecifiedLineTradeAgreement>
  <ram:NetPriceProductTradePrice>
    <ram:ChargeAmount>386.52</ram:ChargeAmount>
    <ram:BasisQuantity unitCode="DAY">366</ram:BasisQuantity>
  </ram:NetPriceProductTradePrice>
</ram:SpecifiedLineTradeAgreement>
<ram:SpecifiedLineTradeDelivery>
  <ram:BilledQuantity unitCode="DAY">31</ram:BilledQuantity>
</ram:SpecifiedLineTradeDelivery>

Quelle: KoSIT XRechnung-Testsuite 2026-08-31, Datei instances/standard/03.05a-INVOICE_uncefact.xml (Apache 2.0)

Nachgerechnet aus Testdatei 03.05a
PositionMenge × Preis ÷ BasismengeErgebnis ungerundetBT-131 in der Datei
1 Messpreis31 × 386,52 € ÷ 36632,738032…32,74
2 Grundpreis2.100 × 3,2916 €6.912,366.912,37
3 Arbeitspreis616.290 × 0,061232374 €37.736,899772…37.736,90
Summe44.681,997805… (gerundet 44.682,00)44.682,01

BR-CO-10 rechnet mit der rechten Spalte: 32,74 + 6.912,37 + 37.736,90 = 44.682,01. Genau dieser Wert steht in BT-106, die Datei ist gültig. Hätte die Software BT-106 aus den ungerundeten Produkten gebildet, stünde dort 44.682,00, und BR-CO-10 würde einen Fehler melden, obwohl jede Position für sich plausibel aussieht.

Position 2 weicht in der Testdatei um einen Cent vom Produkt ab. Das prüft nicht BR-CO-10, sondern die Warnregel PEPPOL-EN16931-R120 im XRechnung-Schematron, die je Position eine Toleranz von 0,02 zulässt.

Lösung

In der Rechnungssoftware

  1. Stellen Sie ein, dass jeder Positionsbetrag auf zwei Nachkommastellen gerundet wird und BT-106 aus genau diesen gerundeten Beträgen entsteht.
  2. Erfassen Sie Rabatte auf die gesamte Rechnung als Nachlass auf Belegebene, nicht als Kürzung der Positionssumme.
  3. Prüfen Sie, ob Zwischensummen- oder Textzeilen der Vorlage als Positionen gezählt werden.

Im XML

  1. UBL: cbc:LineExtensionAmount in cac:LegalMonetaryTotal = Summe der cbc:LineExtensionAmount aller cac:InvoiceLine bzw. cac:CreditNoteLine.
  2. CII: ram:LineTotalAmount in ram:SpecifiedTradeSettlementHeaderMonetarySummation = Summe der ram:LineTotalAmount aller Positionen.
  3. Rechnen Sie danach BT-109 und BT-112 neu, denn beide bauen auf BT-106 auf; sonst folgt BR-CO-15.
  4. Prüfen Sie das Ergebnis mit E-Rechnung prüfen; die Regel ist für XRechnung und ZUGFeRD dieselbe.

E-Rechnung prüfen

Quellen

  1. EN16931 Validation artefacts v1.3.16 (CEN-Schematron)ConnectingEurope, eInvoicing-EN16931 (GitHub), 13. April 2026 · geprüft am 7. November 2026
  2. Validator-Konfiguration XRechnung 2026-08-31 (Release v2026-08-31, verwendet CEN-Schematron 1.3.16)KoSIT (GitHub itplr-kosit), 2. September 2026 · geprüft am 7. November 2026
  3. XRechnung-Testsuite 2026-08-31 (Release v2026-08-31)KoSIT (GitHub itplr-kosit), 2. September 2026 · geprüft am 7. November 2026

Weiterlesen

Grundlage: CEN-Schematron 1.3.16 (EN 16931), Validator-Konfiguration XRechnung 2026-08-31. Stand .