Konto
Deutsch

BR-S-08: Bemessungsgrundlage Regelsatz (BT-116) passt nicht zu den Positionen

EN-16931-Kernregel · Fehler · UBL / CII

StandardEN 16931-1 (europäisches Datenmodell der E-Rechnung)SchweregradFehler: die Rechnung wird abgelehntSyntaxUBL, CIIGeschäftsbegriffe
  • BG-23 VAT breakdown
  • BT-92 Document level allowance amount
  • BT-95 Document level allowance VAT category code
  • BT-96 Document level allowance VAT rate
  • BT-99 Document level charge amount
  • BT-102 Document level charge VAT category code
  • BT-103 Document level charge VAT rate
  • BT-116 VAT category taxable amount
  • BT-118 VAT category code
  • BT-119 VAT category rate
  • BT-131 Invoice line net amount
  • BT-151 Invoiced item VAT category code
  • BT-152 Invoiced item VAT rate
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-S-08] For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).

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

Warum dieser Fehler auftritt

Für jede Steueraufschlüsselung zum Regelsteuersatz (Kategorie S, bestimmter Satz) muss die Bemessungsgrundlage (BT-116) der Summe der Positionsnettobeträge (BT-131) mit Kategorie S und diesem Satz plus Zuschlägen (BT-99) minus Nachlässen (BT-92) auf Dokumentebene mit gleicher Kategorie und gleichem Satz entsprechen. Die Regel liest cac:TaxSubtotal/cbc:TaxableAmount und vergleicht mit cac:InvoiceLine/cbc:LineExtensionAmount und cac:AllowanceCharge/cbc:Amount, gefiltert nach cac:ClassifiedTaxCategory / cac:TaxCategory (UBL), bzw. ram:BasisAmount mit ram:LineTotalAmount und ram:ActualAmount, gefiltert nach ram:ApplicableTradeTax / ram:CategoryTradeTax (CII). Typische Ursachen: eine 7%-Position in der 19%-Basis, nochmals abgezogene Positionsnachlässe oder eine S-Position mit anderem Percent-Wert als die Aufschlüsselung.

So beheben Sie den Fehler

Formel je (S, Satz): BT-116 = Σ BT-131[S, Satz] + Σ BT-99[S, Satz] - Σ BT-92[S, Satz], auf 2 Nachkommastellen gerundet. Je verwendetem Satz ein cac:TaxSubtotal / ram:ApplicableTradeTax anlegen (19 und 7 brauchen zwei). Sicherstellen, dass jede Position und jeder Dokumentnachlass/-zuschlag Kategoriecode und exakten Satz trägt, damit die Zuordnung stimmt. Positionsnachlässe stecken bereits in BT-131 und dürfen nicht nochmals abgezogen werden.

Beispiel (gültig)

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="EUR">245.90</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="EUR">46.72</cbc:TaxAmount>
  <cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
</cac:TaxSubtotal>

Was der Validator prüft

Geprüftes Element (Kontext):

UBL

/*/cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) = 'S'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']

Test (XPath):

every $rate in xs:decimal(cbc:Percent) satisfies (((exists(//cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID) = 'S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]) or exists(//cac:AllowanceCharge[cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate])) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))))) or (exists(//cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID) = 'S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]) or exists(//cac:AllowanceCharge[cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate])) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount))))))

CII

//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.='S']

Test (XPath):

every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = 'S' and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode='S' and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode='S' and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))

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-S-08?

BR-S-08 ist eine EN-16931-Kernregel: For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).

Wird meine Rechnung wegen BR-S-08 abgelehnt?

Ja. BR-S-08 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-S-08?

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.