Zum Inhalt springen

Ironfang Finance - Regelreferenz

BR-23: Das unitCode-Attribut an der Positionsmenge ergänzen

Das cbc:InvoicedQuantity oder cbc:CreditedQuantity jeder Position muss ein Attribut unitCode tragen, das seine Maßeinheit angibt.

EN 16931Fehler: Das Dokument ist ungültigPositionen und PreiseKernfelder

Auf dieser Seite

Die kurze Antwort

BR-23 schlägt fehl, wenn die Positionsmenge kein Attribut unitCode hat, wie in <cbc:InvoicedQuantity>2</cbc:InvoicedQuantity>. Ergänzen Sie unitCode mit dem Code aus der UN/ECE-Empfehlung 20 für die Einheit, in der die Menge gezählt wird, und verwenden Sie denselben Code bei cac:Price/cbc:BaseQuantity, falls die Position eine Basismenge hat.

Das Attribut muss direkt am Mengenelement stehen. Ein unitCodeListID ohne unitCode oder eine Einheit, die nur im Artikelnamen oder in der Artikelbeschreibung genannt wird, zählt nicht.

Was die Regel prüft

Für jede cac:InvoiceLine oder cac:CreditNoteLine ist die Regel erfüllt, wenn das Mengenelement der Position ein Attribut namens unitCode trägt. Sie prüft, ob das Attribut vorhanden ist, nicht, was darin steht.

Ein leeres oder nur aus Leerzeichen bestehendes Attribut kommt an dieser Regel vorbei und wird von anderen erfasst. Im Versuch meldeten unitCode="" und unitCode=" " jeweils BR-CL-23, weil keiner der beiden Werte ein anerkannter Code ist, und PEPPOL-EN16931-R130, weil keiner zum C62 der Basismenge passt. BR-23 selbst wurde nicht gemeldet.

Eine Position ganz ohne Mengenelement schlägt hier ebenfalls fehl, zusammen mit BR-22, weil es kein Element gibt, das das Attribut tragen könnte.

Die Einheit an cac:Price/cbc:BaseQuantity spielt für diese Regel keine Rolle. Als die Einheit sowohl an der Menge als auch an der Basismenge entfernt wurde, wurde nur BR-23 gemeldet: Der Peppol-Vergleich der Einheiten läuft nur bei einer Basismenge, die eine Einheit hat.

BegriffBedeutungUBL-Element
BT-130Code der Maßeinheit der in Rechnung gestellten Mengecac:InvoiceLine/cbc:InvoicedQuantity/@unitCode (cac:CreditNoteLine/cbc:CreditedQuantity/@unitCode in a credit note)
BT-129In Rechnung gestellte Mengecac:InvoiceLine/cbc:InvoicedQuantity
BT-150Code der Maßeinheit der Basismenge zum Artikelpreiscac:InvoiceLine/cac:Price/cbc:BaseQuantity/@unitCode

Wie es in einer Integration dazu kommt

Mögliche Ursachen, abgeleitet aus der Form der Regel und nicht aus gemessener Nutzung:

  • Das Quellsystem speichert Mengen als reine Zahlen und hat kein Einheitenfeld, das der Export verwenden könnte.
  • Der Serialisierer schreibt Attribute nur, wenn ein Wert vorhanden ist, und bei Dienstleistungspositionen oder manuell erfassten Positionen ist die Einheit null.
  • Die Einheit wird in unitCodeListID oder nur in der Artikelbeschreibung übermittelt, und das Attribut unitCode fehlt.
  • Eine Abbildung für Gutschriften baut cbc:CreditedQuantity neu auf und kopiert die Zahl ohne das Attribut.

So korrigieren Sie das Dokument

  1. Ermitteln Sie die Position anhand der Fundstelle des Befunds und dann die Einheit ihrer Menge in der Quelle: die Verkaufseinheit des Produkts oder die Einheit, in der die Dienstleistung abgerechnet wird.
  2. Ordnen Sie dieser Einheit ihren Code aus der UN/ECE-Empfehlung 20 zu, zum Beispiel C62 für Eins, H87 für Stück, HUR für Stunde oder KGM für Kilogramm, und schreiben Sie ihn in Großbuchstaben in unitCode an cbc:InvoicedQuantity oder cbc:CreditedQuantity.
  3. Schreiben Sie denselben Code an cac:Price/cbc:BaseQuantity, wenn die Position eine Basismenge hat. PEPPOL-EN16931-R130 weist eine Basismenge zurück, deren Einheit von der Einheit der Menge abweicht.
  4. Beheben Sie den Peppol-Befund nicht, indem Sie die Einheit auch aus der Basismenge entfernen. Das bringt PEPPOL-EN16931-R130 zum Schweigen und lässt BR-23 genau dort, wo es war.

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 Menge ist 2 ohne Einheit, während der Preis je 1 C62 gilt

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity>2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <!-- item omitted from this fragment -->
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Ausschnitt der korrigierten Rechnung: Die Menge und die Basismenge des Preises sind beide in C62

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <!-- item omitted from this fragment -->
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">12.5</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>

Der einzige Unterschied ist unitCode="C62" an cbc:InvoicedQuantity: in der fehlerhaften Rechnung fehlt es, in der korrigierten ist es vorhanden. Das fehlerhafte Dokument meldet außerdem PEPPOL-EN16931-R130 bei cbc:BaseQuantity: Die Basismenge des Preises lautet auf C62, und eine Menge ohne Einheit kann dazu nicht passen. Das Attribut an der Menge zu ergänzen 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 cbc:InvoicedQuantity in einer UBL Invoice und für cbc:CreditedQuantity in einer CreditNote. Im Versuch mit einer Gutschrift meldete das Entfernen des Attributs von der gutgeschriebenen Menge BR-23 und PEPPOL-EN16931-R130, dasselbe Paar wie bei der Rechnung.
  • Das UBL-Schema behandelt unitCode als optional, daher besteht ein Dokument ohne das Attribut den XSD-Prüfschritt, und die Lücke bleibt dieser Regel überlassen.
  • Welcher Code zulässig ist, entscheidet BR-CL-23, nicht diese Regel. Sobald das Attribut vorhanden ist, verschiebt ein Wert wie EACH oder pcs den Befund zu jener Regel.

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