Auf dieser Seite
Die kurze Antwort
BR-S-08 schlägt fehl, wenn das cbc:TaxableAmount einer Umsatzsteueraufschlüsselung zum Normalsatz nicht zu dem passt, was das Dokument zu diesem Satz enthält. Nehmen Sie das cbc:Percent der Aufschlüsselung, addieren Sie das cbc:LineExtensionAmount jeder Position mit Kategorie S zu diesem Satz, addieren Sie die Zuschläge auf Dokumentenebene mit Kategorie S zu diesem Satz, ziehen Sie die Nachlässe auf Dokumentenebene mit Kategorie S zu diesem Satz ab und schreiben Sie das Ergebnis als Steuerbasisbetrag.
Gruppiert wird nach Satz ebenso wie nach Kategorie. Positionen zu einem anderen Normalsatz und Positionen in anderen Kategorien gehören in andere Aufschlüsselungen.
Was die Regel prüft
Die Regel läuft einmal für jede Aufschlüsselung, deren cac:TaxCategory die cbc:ID S im Schema VAT hat, mit dem eigenen Satz dieser Aufschlüsselung. Sätze werden als Zahlen verglichen, sodass 20 in der Aufschlüsselung zu 20.00 auf einer Position passt.
Zuerst muss zu diesem Satz etwas zum Normalsatz existieren: eine Position oder ein Nachlass oder Zuschlag mit einer cac:TaxCategory. Eine Aufschlüsselung mit 19 % über Positionen mit 20 % schlägt an dieser Stelle fehl, gleich wie ihre Beträge gesetzt sind.
Dann wird der Steuerbasisbetrag verglichen mit: Nettobeträgen der Positionen plus Zuschlägen auf Dokumentenebene minus Nachlässen auf Dokumentenebene, jeweils gefiltert auf Kategorie S und denselben Satz. Nur Elemente cac:AllowanceCharge direkt unter der Dokumentwurzel gehen in die Summe ein; Nachlässe und Zuschläge auf Positionsebene sind bereits im Nettobetrag der Position enthalten.
Der Vergleich hat eine Toleranz. Die Regel besteht, wenn der Steuerbasisbetrag weniger als 1.00 vom berechneten Wert abweicht, und schlägt bei einer Differenz von genau 1.00 fehl. Gegenüber berechneten 58.50 bestehen Steuerbasisbeträge von 57.51 und 59.49; 57.50 und 59.50 schlagen fehl.
Innerhalb der Toleranz zu liegen macht den Betrag nicht richtig. Ein Steuerbasisbetrag von 59.40 gegenüber berechneten 58.50 bestand in unserem Versuch jeden Prüfschritt, und er liegt trotzdem 0.90 daneben. Senden Sie den berechneten Wert.
Zwei Aufschlüsselungen für denselben Normalsatz schlagen beide fehl, weil jede mit der gesamten Summe für diesen Satz verglichen wird.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-116 | Kategoriespezifischer Steuerbasisbetrag | cac:TaxTotal/cac:TaxSubtotal/cbc:TaxableAmount |
| BT-119 | Kategoriespezifischer Umsatzsteuersatz | cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:Percent |
| BT-131 | Nettobetrag der Rechnungsposition | cac:InvoiceLine/cbc:LineExtensionAmount |
| BT-152 | Umsatzsteuersatz für den in Rechnung gestellten Artikel | cac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:Percent |
| BT-99 | Betrag des Zuschlags auf Dokumentenebene | cac:AllowanceCharge[cbc:ChargeIndicator = true]/cbc:Amount |
| BT-92 | Betrag des Nachlasses auf Dokumentenebene | cac:AllowanceCharge[cbc:ChargeIndicator = false]/cbc:Amount |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Der Steuerbasisbetrag wird nur aus den Positionen gebildet, und der Zuschlag oder Nachlass auf Dokumentenebene wird vergessen oder mit falschem Vorzeichen angewendet.
- Positionen werden nach Kategorie, aber nicht nach Satz gruppiert, sodass zwei Normalsätze in einer Aufschlüsselung landen.
- Negative Positionen, etwa Korrekturen oder Rücksendungen, werden beim Summieren übersprungen.
- Positionen zum Nullsatz oder steuerbefreite Positionen werden in den Steuerbasisbetrag zum Normalsatz einbezogen.
- Der Satz der Aufschlüsselung stammt aus einer anderen Quelle als die Sätze der Positionen, und beide weichen voneinander ab, etwa nach einer Satzänderung.
- Der Steuerbasisbetrag wird rückwärts aus einem Bruttowert abgeleitet, statt aus den Nettobeträgen im Dokument summiert zu werden.
So korrigieren Sie das Dokument
- Sammeln Sie die Positionen, deren
cac:Item/cac:ClassifiedTaxCategorydiecbc:IDShat, und gruppieren Sie sie nachcbc:Percent. - Summieren Sie für jeden Satz die Werte
cbc:LineExtensionAmountder Positionen, addieren Sie die Beträge der Elementecac:AllowanceChargeauf Wurzelebene mitcbc:ChargeIndicatorgleichtruein KategorieSzu diesem Satz und ziehen Sie die mitfalseab. Verwenden Sie Dezimalarithmetik. - Erzeugen Sie genau ein
cac:TaxSubtotalpro Satz, mit diesem Wert alscbc:TaxableAmountund dem Satz alscbc:Percent. - Berechnen Sie das
cbc:TaxAmountder Aufschlüsselung aus dem korrigierten Steuerbasisbetrag neu.BR-S-09undBR-CO-17prüfen es, und daraus folgen die Umsatzsteuersumme und der Gesamtbetrag einschließlich Umsatzsteuer.
Das aufgezeichnete Beispiel hat zwei Positionen zum Normalsatz mit 20 %, eine Position zum Nullsatz sowie einen Nachlass und einen Zuschlag auf Dokumentenebene, beide zum Normalsatz mit 20 %.
Positionen zum Normalsatz mit 20 %: 58.00 + (-2.00) = 56.00 Zuschlag auf Dokumentenebene, S mit 20 %: + 3.50 Nachlass auf Dokumentenebene, S mit 20 %: - 1.00 Steuerbasisbetrag für S mit 20 %: 56.00 + 3.50 - 1.00 = 58.50 Die Position zum Nullsatz über 10.00 gehört nicht zu diesem Wert Gesendet: 60.00, also 1.50 daneben, daher schlägt die Regel fehl
Vorher und nachher
Dies sind Ausschnitte, keine vollständigen Dokumente. Die vollständigen synthetischen Dokumente, aus denen sie stammen, sind unten verlinkt.
Ausschnitt der fehlerhaften Rechnung: 60.00 Steuerbasisbetrag, während der Inhalt zum Normalsatz mit 20 % netto 58.50 ergibt
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<!-- reason code and reason omitted from this fragment -->
<cbc:Amount currencyID="GBP">1.00</cbc:Amount>
<!-- tax category S at 20 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<!-- reason code, reason, multiplier and base amount omitted from this fragment -->
<cbc:Amount currencyID="GBP">3.50</cbc:Amount>
<!-- tax category S at 20 omitted from this fragment -->
</cac:AllowanceCharge>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">60.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<!-- Standard rated lines at 20: LineExtensionAmount 58.00 and -2.00. Zero rated line: 10.00 -->Ausschnitt der korrigierten Rechnung: 58.00 - 2.00 + 3.50 - 1.00 = 58.50
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>20</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>Nur das cbc:TaxableAmount zum Normalsatz unterscheidet sich: 60.00 in der fehlerhaften Rechnung, 58.50 in der korrigierten. Das Dokument meldet nur BR-S-08. Der Steuerbetrag von 11.70 liegt 0.30 neben 20 % von 60.00, also innerhalb der Toleranz von BR-CO-17 und BR-S-09, und Umsatzsteuersumme und Gesamtbeträge sind in beiden Dokumenten gleich.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-S-08. Das korrigierte Dokument besteht jeden Prüfschritt ohne Befunde.Fehlerhaftes XML herunterladenKorrigiertes XML herunterladen
Aufgezeichnet mit phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, der Engine hinter dem kostenlosen Validator, mit synthetischen Daten. Ein aufgezeichnetes Ergebnis ist ein Regressionsnachweis für diese Dokumente, keine Zertifizierung.
Wo die Regel gilt
- Gilt für UBL
InvoiceundCreditNote. In einer Gutschrift sind die Positionencac:CreditNoteLine, und die Summe wird genauso gebildet; eine Gutschrift mit denselben 60.00 meldet dieselbe Regel. - Nur Aufschlüsselungen zum Normalsatz sind betroffen. Die anderen Umsatzsteuerkategorien haben eigene Regeln für den Steuerbasisbetrag.
- Die Regel sieht sich
cac:LegalMonetaryTotalnicht an. Die Summe ohne Umsatzsteuer prüft gesondertBR-CO-13. - Eine Position zum Normalsatz mit einem Satz, für den es keine Aufschlüsselung gibt, meldet diese Regel nicht, denn sie geht von den vorhandenen Aufschlüsselungen aus.
Verwandte Regeln
- BR-S-09 prüft den aus diesem Steuerbasisbetrag berechneten Steuerbetrag zum Normalsatz
- BR-S-01 verlangt eine Aufschlüsselung zum Normalsatz, sobald Inhalt zum Normalsatz existiert
- BR-CO-13 prüft die Summe ohne Umsatzsteuer, gebildet aus denselben Positionen, Nachlässen und Zuschlägen
- BR-CO-10 prüft die Summe der Nettobeträge der Positionen, die in diesen Wert einfließen
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): Understanding EN 16931 validation errors
Umfang und Quelle
Geschrieben für Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, angewendet auf Invoice- und CreditNote-Dokumente in UBL 2.1. Andere Profile, Syntaxen und Releases können diese Kennung anders definieren. Version des Hinweiskatalogs 2026-09-24.1: Quelle geprüft am 2026-09-24, Erklärung zuletzt aktualisiert am 2026-09-20.
Die offizielle Definition von BR-S-08 (auf Englisch) enthält den normativen Wortlaut und den Test. Diese Seite ist unsere Erklärung dazu, keine Kopie.
Die Erklärung ändert das Urteil der Engine nicht. Dass Sie diesen Befund beheben, heißt nicht, dass das Dokument jeden Prüfschritt besteht. Die Validierung bescheinigt keine rechtliche oder steuerliche Konformität und überträgt kein Dokument über Peppol.

