Auf dieser Seite
Die kurze Antwort
BR-12 schlägt fehl, wenn cac:LegalMonetaryTotal kein Kindelement cbc:LineExtensionAmount hat. Fügen Sie es als erstes Element der Gesamtbeträge ein, mit der Summe der cbc:LineExtensionAmount aller Positionen, gerundet auf zwei Nachkommastellen.
Derselbe Elementname steht an jeder Position, daher wird diese Summe leicht übersehen. Die Beträge der Positionen zählen nicht dafür: Die Summe auf Dokumentenebene muss zusätzlich geschrieben werden, auch wenn bei nur einer Position beide Werte gleich sind.
Was die Regel prüft
Die Regel läuft auf cac:LegalMonetaryTotal und verlangt ein Element cbc:LineExtensionAmount direkt darin. Sein Wert wird hier nicht untersucht; ob er der Summe der Positionen entspricht, entscheidet BR-CO-10.
Eine leere Positionssumme kommt nie so weit. Das Schema verlangt, dass jeder Betrag eine Dezimalzahl ist, daher scheiterte im Versuch ein leeres cbc:LineExtensionAmount in den Gesamtbeträgen am XSD-Prüfschritt, und der Prüfschritt EN 16931 wurde übersprungen.
Innerhalb der Gesamtbeträge verlangt das UBL-Schema nur den fälligen Betrag, weshalb ein Dokument ohne Positionssumme den XSD-Prüfschritt besteht. Der Block der Gesamtbeträge selbst ist Pflicht: Im Versuch scheiterte ein Dokument ohne cac:LegalMonetaryTotal am Schema.
Die Nettobeträge an cac:InvoiceLine oder cac:CreditNoteLine sind eigene Elemente und erfüllen die Regel nicht, egal wie viele es sind.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-106 | Summe der Nettobeträge aller Rechnungspositionen | cac:LegalMonetaryTotal/cbc:LineExtensionAmount |
| BT-131 | Nettobetrag der Rechnungsposition | cac:InvoiceLine/cbc:LineExtensionAmount (cac:CreditNoteLine/cbc:LineExtensionAmount in a credit note) |
Wie es in einer Integration dazu kommt
Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:
- Der Summenblock wird aus einer festen Liste von Feldern aufgebaut, die nur die Summen enthält, die das Quellsystem speichert, etwa Netto- und Bruttosumme, und die Positionssumme gehört nicht dazu.
- Das Mapping hält die Positionssumme für überflüssig, wenn es keine Nachlässe oder Zuschläge auf Dokumentenebene gibt, weil sie dann der Summe ohne Umsatzsteuer entspräche.
- Die Positionssumme wird erst berechnet, nachdem der Summenblock geschrieben ist; sie ist also noch null, wenn der Serialisierer sie erreicht, und wird übersprungen.
So korrigieren Sie das Dokument
- Nehmen Sie das
cbc:LineExtensionAmountjeder Position genau so, wie es geschrieben wurde, und addieren Sie die Werte mit Dezimalarithmetik; behalten Sie dabei das Vorzeichen negativer Positionen bei. - Runden Sie die Summe auf zwei Nachkommastellen und schreiben Sie sie als
cbc:LineExtensionAmount, mit der Dokumentwährung incurrencyID, als erstes Kindelement voncac:LegalMonetaryTotal. Im Versuch scheiterte das Element nachcbc:TaxExclusiveAmountam XSD-Prüfschritt. - Prüfen Sie, dass die Summe ohne Umsatzsteuer der neuen Positionssumme minus Summe der Nachlässe plus Summe der Zuschläge entspricht, damit auch
BR-CO-13besteht.
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: Die Gesamtbeträge beginnen mit der Summe ohne Umsatzsteuer, während die Position ihren eigenen Nettobetrag behält
<cac:LegalMonetaryTotal>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="GBP">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="GBP">0.00</cbc:ChargeTotalAmount>
<!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<!-- item and price omitted from this fragment -->
</cac:InvoiceLine>Ausschnitt der korrigierten Rechnung: Die Positionssumme von 25.00 eröffnet die Gesamtbeträge
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="GBP">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="GBP">0.00</cbc:ChargeTotalAmount>
<!-- prepaid, rounding and payable amounts omitted from this fragment -->
</cac:LegalMonetaryTotal>Die korrigierte Rechnung hat ein cbc:LineExtensionAmount von 25.00 als erstes Kindelement von cac:LegalMonetaryTotal; der fehlerhaften fehlt es, und ihre einzige Position ist unverändert. Zwei weitere Regeln aus EN 16931 werden an derselben Stelle gemeldet. BR-CO-10 vergleicht die Positionssumme mit der Summe der Positionen, und eine fehlende Summe kann nicht 25.00 ergeben. BR-CO-13 leitet die erwartete Summe ohne Umsatzsteuer aus der Positionssumme ab und kann ohne Positionssumme die übermittelten 25.00 nicht bestätigen. Das Element wiederherzustellen behebt alle drei Befunde.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet BR-12, BR-CO-10 und BR-CO-13. 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; die Gesamtbeträge heißen in beiden gleich. Im Versuch meldete eine Gutschrift ohne Positionssumme dieselben drei Regeln. - Behandeln Sie
BR-CO-10undBR-CO-13neben dieser Regel als Folgen des einen fehlenden Elements, nicht als eigene Fehler. Im Versuch mit dem umfangreicheren Beispiel mit Nachlässen und Zuschlägen auf Dokumentenebene ergab das Entfernen seiner Positionssumme von 66.00 dieselben drei Regeln und sonst nichts. - Das Element an jeder Position ist eine andere Sache. Das Schema verlangt es dort, daher scheiterte im Versuch eine Position ohne eigenes
cbc:LineExtensionAmountam XSD-Prüfschritt, und für sie wurde keine Geschäftsregel gemeldet.
Verwandte Regeln
- BR-CO-10 prüft, ob diese Positionssumme, sobald vorhanden, der Summe der Positionen entspricht
- BR-CO-13 leitet die Summe ohne Umsatzsteuer aus dieser Positionssumme ab
- BR-13 ist die entsprechende Vorhandenseinsregel für die Summe ohne Umsatzsteuer
- 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-24.
Die offizielle Definition von BR-12 (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.

