Auf dieser Seite
Die kurze Antwort
PEPPOL-EN16931-R100 schlägt fehl, wenn eine cac:InvoiceLine oder cac:CreditNoteLine mehr als eine cac:DocumentReference enthält. Eine Position kann ein abgerechnetes Objekt nennen, etwa einen Zähler, ein Fahrzeug oder ein Abonnement, geben Sie daher jedem Objekt eine eigene Position.
Dieselbe Position wird im Prüfschritt EN 16931 auch als UBL-SR-52 gemeldet, das genau dieselbe Zählung vornimmt. Beide verschwinden, sobald die Position eine einzige Referenz hat.
Was die Regel prüft
Die Regel zählt die Kindelemente cac:DocumentReference jeder Position und schlägt ab dem zweiten fehl. Sie schaut nicht hinein: Im Versuch meldete eine zweite Referenz mit dem Typcode 50 statt 130 dieselben zwei Regeln wie das aufgezeichnete Beispiel.
Diese Variante brachte PEPPOL-EN16931-R101 nicht mit, die Regel, die eine Referenz an einer Position auf den Typ 130 beschränkt, weil sie erfüllt ist, sobald eine Referenz der Position 130 trägt. Mit einer einzigen Referenz ohne Typcode wurde PEPPOL-EN16931-R101 allein gemeldet.
Die Grenze gilt je Position, daher dürfen verschiedene Positionen je ein anderes Objekt nennen.
Die Kennung des abgerechneten Objekts für das ganze Dokument ist ein anderes Element mit eigener Grenze. Im Versuch meldeten zwei cac:AdditionalDocumentReference vom Typ 130 auf Wurzelebene UBL-SR-04, nicht diese Regel.
| Begriff | Bedeutung | UBL-Element |
|---|---|---|
| BT-128 | Objektkennung auf Ebene der Rechnungsposition | cac:InvoiceLine/cac:DocumentReference/cbc:ID (cac:CreditNoteLine/cac:DocumentReference/cbc:ID 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:
- Eine Position rechnet mehrere Zähler, Geräte oder Verträge zusammen ab, und der Export schreibt je Objekt eine Referenz.
- Das Mapping nutzt die Dokumentreferenz der Position auch für andere Dokumente, etwa einen Lieferschein oder einen Stundenzettel, neben der Objektkennung.
- Ein wiederholter Quelldatensatz, etwa derselbe Zähler zweimal abgelesen, erzeugt eine doppelte Referenz.
So korrigieren Sie das Dokument
- Finden Sie die Position über den Befund, zum Beispiel
cac:InvoiceLine[1], und listen Sie die Referenzen auf, die sie trägt. - Behalten Sie diejenige, die das abgerechnete Objekt kennzeichnet, mit dem
cbc:DocumentTypeCode130. - Deckt die Position mehrere Objekte ab, teilen Sie sie in eine Position je Objekt auf, jede mit eigener Menge, eigenem Nettobetrag und eigener
cac:DocumentReference, und berechnen Sie die Summen aus den neuen Positionen neu. - Verlagern Sie Referenzen, die keine abgerechneten Objekte sind, von der Position weg: Eine rechnungsbegründende Unterlage gehört in eine
cac:AdditionalDocumentReferenceauf Dokumentenebene. - Entfernen Sie reine Dubletten.
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: Position 1 nennt zwei Zähler
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:DocumentReference>
<cbc:ID>METER-001</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<cac:DocumentReference>
<cbc:ID>METER-002</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<!-- item and price omitted from this fragment -->
</cac:InvoiceLine>Ausschnitt der korrigierten Rechnung: Position 1 nennt einen Zähler, METER-001
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:DocumentReference>
<cbc:ID>METER-001</cbc:ID>
<cbc:DocumentTypeCode>130</cbc:DocumentTypeCode>
</cac:DocumentReference>
<!-- item and price omitted from this fragment -->
</cac:InvoiceLine>Die fehlerhafte Rechnung führt an Position 1 zwei Zähler, METER-001 und METER-002, als Dokumentreferenzen; die korrigierte Rechnung behält nur METER-001 und ist sonst identisch. Zwei Befunde stehen an dieser Position: PEPPOL-EN16931-R100 im Prüfschritt Peppol und UBL-SR-52 im Prüfschritt EN 16931, das die Referenzen auf dieselbe Weise zählt. Die zweite Referenz zu entfernen behebt beide; wären tatsächlich beide Zähler abzurechnen, bräuchte jeder eine eigene Position.
Was der Validator gemeldet hat
- Die fehlerhafte Rechnung meldet
UBL-SR-52und PEPPOL-EN16931-R100. 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
InvoiceundCreditNote. Im Versuch meldete einecac:CreditNoteLinemit zwei ReferenzenPEPPOL-EN16931-R100undUBL-SR-52an dieser Position. - Eine Regel aus Peppol BIS, gemeldet im Prüfschritt Peppol. Ihr Gegenstück aus EN 16931,
UBL-SR-52, hat in dieser Referenz keine eigene Seite. - Der Inhalt der einen Referenz wird anderswo geprüft:
PEPPOL-EN16931-R101verlangt den Typcode130, undBR-CL-07prüft ein Schema an der Kennung gegen UNTDID 1153.
Verwandte Regeln
- PEPPOL-EN16931-R101 verlangt, dass die eine Referenz der Position ein abgerechnetes Objekt ist, Typ 130
- BR-CL-07 prüft das Schema der Kennung eines abgerechneten Objekts gegen UNTDID 1153
- PEPPOL-EN16931-R080 ist die Grenze von höchstens einer Projektreferenz in einer Gutschrift
- Alle Regeln der Referenz ansehen
- Hintergrund (auf Englisch): How Peppol invoice validation actually works
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-28.1: Quelle geprüft am 2026-09-28, Erklärung zuletzt aktualisiert am 2026-09-28.
Die offizielle Definition von PEPPOL-EN16931-R100 (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.

