Zum Inhalt springen

Ironfang Finance - Regelreferenz

BR-21: Jeder Position eine nicht leere Positionskennung geben

Das cbc:ID am Anfang jeder Rechnungs- oder Gutschriftposition muss Text enthalten. Eine leere oder nur aus Leerraum bestehende Positionskennung schlägt fehl; ihr Wert wird nicht geprüft.

EN 16931Fehler: Das Dokument ist ungültigKernfelderPositionen und Preise

Auf dieser Seite

Die kurze Antwort

BR-21 schlägt bei einer Position fehl, deren eigenes cbc:ID keinen Text hat. Im aufgezeichneten Beispiel beginnt die einzige cac:InvoiceLine mit <cbc:ID></cbc:ID>. Schreiben Sie die Positionsnummer oder eine andere Referenz, die diese Position von den anderen unterscheidet, in dieses Element jeder cac:InvoiceLine oder cac:CreditNoteLine.

Das Element zu löschen ist kein Ausweg. Das UBL-Schema verlangt in jeder Position ein cbc:ID, daher wird eine Position ohne dieses Element im XSD-Prüfschritt abgewiesen, und keine der Geschäftsregeln wird gemeldet.

Was die Regel prüft

Die Regel wird einmal pro Position ausgewertet, für jede cac:InvoiceLine in einer Rechnung und jede cac:CreditNoteLine in einer Gutschrift. Sie liest nur das cbc:ID, das direkt zur Position gehört, und ist erfüllt, wenn dieses Element mindestens ein Zeichen enthält, das kein Leerraum ist.

Leer und nur aus Leerraum bestehend werden gleich behandelt. Im Versuch meldeten ein Start- und End-Tag ohne Inhalt, ein selbstschließendes <cbc:ID/> und ein Element mit drei Leerzeichen jeweils BR-21 zusammen mit PEPPOL-EN16931-R008. Ein leeres cbc:ID mit einem Attribut schemeID schlug auf dieselbe Weise fehl, weil ein Attribut kein Inhalt ist.

Eine Position ganz ohne cbc:ID erreicht diese Regel nie. Im Versuch mit einer Rechnung und einer Gutschrift wies der XSD-Prüfschritt das Dokument ab, und die Prüfschritte EN 16931 und Peppol wurden übersprungen.

Über das Vorhandensein hinaus wird der Wert nicht untersucht. LINE-A besteht genauso wie 1, und im Versuch bestand eine Rechnung mit zwei Positionen, die beide die Nummer 1 trugen, jeden Prüfschritt. EN 16931 beschreibt die Positionskennung als innerhalb des Dokuments eindeutig; halten Sie sie daher eindeutig, auch wenn der Validator das nicht prüft.

BegriffBedeutungUBL-Element
BT-126Kennung der Rechnungspositioncac:InvoiceLine/cbc:ID (cac:CreditNoteLine/cbc:ID in a credit note)
BG-25Rechnungspositioncac:InvoiceLine (cac:CreditNoteLine 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:

  • Positionsnummern werden beim Buchen der Rechnung vergeben, und das XML wird aus einem Entwurf erzeugt, in dem das Feld noch leer ist.
  • Positionen, die der Export selbst hinzufügt, etwa Versandkosten oder eine Rundungsposition, haben keine Zeile in der Quelltabelle und daher keine Positionsnummer zum Übernehmen.
  • Eine Positionsreferenz mit dem Wert null wird als leeres Element serialisiert, statt aus der Reihenfolge der Position befüllt zu werden.
  • Die Kennung wird aus einem Feld gelesen, das es nur für manche Positionsarten gibt, etwa eine Bestellpositionsreferenz, und bei Freitextpositionen ist es leer.

So korrigieren Sie das Dokument

  1. Erkennen Sie am Ort des Befunds, etwa cac:InvoiceLine[1], welche Position betroffen ist. Jede Position mit leerer Kennung ergibt einen eigenen Befund.
  2. Nehmen Sie die Kennung aus der Quellposition: ihre Positionsnummer oder laufende Nummer auf der ausgestellten Rechnung. Hat die Quelle keine, nummerieren Sie die Positionen beim Erzeugen des XML in Dokumentreihenfolge: 1, 2, 3.
  3. Halten Sie die Kennungen innerhalb des Dokuments eindeutig und gleich wie auf jedem PDF oder jeder Kopie der Rechnung, damit der Käufer sich Ihnen gegenüber auf eine Position beziehen kann.
  4. Belassen Sie cbc:ID dort, wo das Schema es vorsieht, am Anfang der Position vor einem etwaigen cbc:Note und der Menge. Wird es verschoben oder entfernt, wird aus diesem Befund ein XSD-Fehler.

Korrigierte Rechnung prüfen

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 Positionskennung ist vorhanden, aber leer

<cac:InvoiceLine>
  <cbc:ID></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 Position hat die Nummer 1

<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>

Nur das cbc:ID der Position unterscheidet sich: leer in der fehlerhaften Rechnung, 1 in der korrigierten. Das fehlerhafte Dokument meldet außerdem PEPPOL-EN16931-R008, verortet an diesem cbc:ID statt an der Position, weil Peppol jedes Element ohne Inhalt ablehnt. Die Positionsnummer einzutragen behebt beide Befunde.

Was der Validator gemeldet hat

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 cac:InvoiceLine in einer UBL Invoice und für cac:CreditNoteLine in einer CreditNote. Im Versuch mit einer Gutschrift meldete eine leere Positionskennung BR-21 an cac:CreditNoteLine[1] und PEPPOL-EN16931-R008 an deren cbc:ID, dasselbe Paar wie bei der Rechnung.
  • Andere cbc:ID-Elemente liest diese Regel nicht: weder die Dokumentnummer direkt unter dem Wurzelelement, die BR-02 abdeckt, noch die in der Position verschachtelten, etwa den Code der Umsatzsteuerkategorie in cac:ClassifiedTaxCategory.

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-21 (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.