Zum Inhalt springen

Ironfang Finance - Regelreferenz

UBL-DT-01: Jeden Betrag mit höchstens zwei Nachkommastellen schreiben

Ein Betrag hat mehr als zwei Ziffern nach dem Dezimalpunkt. Jedes Betragselement ist auf zwei begrenzt, außer dem Nettopreis des Artikels und Nachlässen auf den Preis.

EN 16931Fehler: Das Dokument ist ungültigSummenUmsatzsteuer

Auf dieser Seite

Die kurze Antwort

UBL-DT-01 schlägt einmal für jedes Element fehl, dessen Name auf Amount endet und dessen Text mehr als zwei Zeichen nach dem Dezimalpunkt hat. Der Ort des Befunds ist dieses Element; schreiben Sie seinen Wert mit höchstens zwei Nachkommastellen, zum Beispiel 11.70 statt 11.700.

Zwei Arten von Beträgen sind ausgenommen: cbc:PriceAmount und die Beträge eines Nachlasses innerhalb von cac:Price. Alles andere, von den Positionsbeträgen bis zur Umsatzsteuersumme, ist auf zwei Nachkommastellen begrenzt, und die meisten Beträge haben zusätzlich eine eigene BR-DEC-Regel, die neben dieser gemeldet wird.

Was die Regel prüft

Die Regel wählt Elemente nach ihrem Namen aus, in jeder Tiefe: alles, dessen Name auf Amount endet. Für jedes nimmt sie den Text, sucht den ersten Dezimalpunkt und schlägt fehl, wenn mehr als zwei Zeichen folgen. Nachgestellte Nullen zählen, ebenso nachgestellter Leerraum; im Versuch schlug 11.70 gefolgt von einem Leerzeichen fehl.

Die Ausnahmen hängen vom Elementnamen und seiner Position ab. Der Nettopreis des Artikels ist überall ausgenommen, wo er vorkommt, ebenso cbc:Amount und cbc:BaseAmount innerhalb von cac:Price/cac:AllowanceCharge, die den Preisnachlass und den Bruttopreis tragen. Die korrigierte Rechnung im aufgezeichneten Beispiel hat einen Nettopreis von 19.995 und wird ohne Befund validiert.

Die Umsatzsteuersumme direkt unter cac:TaxTotal hat in diesem Release keine funktionierende eigene Regel für Nachkommastellen: Die dafür vorgesehene Prüfung meldet nichts, daher ist diese Regel dort der einzige Befund für 11.700. Die Umsatzsteuersumme in einer Buchungswährung ist in derselben Lage; im Versuch meldete 13.456 in einer zweiten Steuersumme nur diese Regel.

Wo ein Betrag eine eigene Regel hat, kommen beide zusammen. Im Versuch ergab das Auffüllen aller zwölf Beträge mit zwei Nachkommastellen einer minimalen Rechnung auf drei Nachkommastellen zwölf Befunde von UBL-DT-01 und elf BR-DEC-Befunde: je einen für jeden Betrag außer der Umsatzsteuersumme.

BegriffBedeutungUBL-Element
-Jedes Element, dessen Name auf Amount endetAt any depth, for example cac:LegalMonetaryTotal/cbc:PayableAmount or cac:InvoiceLine/cac:AllowanceCharge/cbc:Amount
BT-110Gesamtbetrag der Umsatzsteuer (das Element im aufgezeichneten Beispiel)cac:TaxTotal/cbc:TaxAmount
BT-146Nettopreis des Artikels (ausgenommen)cac:InvoiceLine/cac:Price/cbc:PriceAmount (cac:CreditNoteLine/cac:Price/cbc:PriceAmount in a credit note)
BT-147Rabatt auf den Artikelpreis (ausgenommen)cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:Amount
BT-148Bruttopreis des Artikels (ausgenommen)cac:InvoiceLine/cac:Price/cac:AllowanceCharge/cbc:BaseAmount

Wie es in einer Integration dazu kommt

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

  • Ein Zahlenformatierer wird einmal konfiguriert, mit drei oder vier Nachkommastellen passend zu Preisen und Mengen, und auch auf Beträge angewandt.
  • Beträge werden in einem Typ mit höherer Genauigkeit berechnet und ohne Rundung geschrieben, sodass ein Wert wie 11.704 ins XML gelangt.
  • Eine Dezimalspalte der Datenbank mit drei oder mehr Nachkommastellen wird in voller Genauigkeit geschrieben, wodurch aus 11.7 11.700 wird.
  • Eine Template-Engine schreibt zusammen mit dem Wert ein Leerzeichen oder einen Zeilenumbruch in das Element.

So korrigieren Sie das Dokument

  1. Ermitteln Sie jedes Element anhand des Orts des Befunds. Jeder betroffene Betrag hat seinen eigenen Befund, daher ist die Liste vollständig.
  2. Runden Sie den Wert dort auf zwei Nachkommastellen, wo er berechnet wird, nicht nur dort, wo er formatiert wird, damit die darauf aufbauenden Summen dieselbe Zahl verwenden.
  3. Formatieren Sie jeden Betrag mit höchstens zwei Nachkommastellen und ohne umgebenden Leerraum. Behalten Sie zusätzliche Nachkommastellen nur bei cbc:PriceAmount und beim Nachlass innerhalb von cac:Price, wo sie erlaubt sind.
  4. Hat die Rundung einen Wert verändert, berechnen Sie die davon abhängigen Summen vor dem Versand neu.

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 Umsatzsteuersumme ist als 11.700 geschrieben

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">11.700</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
    <!-- tax category omitted from this fragment -->
  </cac:TaxSubtotal>
  <!-- zero-rated breakdown omitted from this fragment -->
</cac:TaxTotal>

Ausschnitt der korrigierten Rechnung: die Umsatzsteuersumme als 11.70 geschrieben, wie ihre Aufschlüsselung

<cac:TaxTotal>
  <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="GBP">58.50</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="GBP">11.70</cbc:TaxAmount>
    <!-- tax category omitted from this fragment -->
  </cac:TaxSubtotal>
  <!-- zero-rated breakdown omitted from this fragment -->
</cac:TaxTotal>

Die Umsatzsteuersumme direkt unter cac:TaxTotal ist in der fehlerhaften Rechnung als 11.700 und in der korrigierten als 11.70 geschrieben; die Aufschlüsselungen und alle anderen Summen sind identisch, und der Wert selbst ist derselbe. Das fehlerhafte Dokument meldet nur UBL-DT-01, an cac:TaxTotal/cbc:TaxAmount. Die Regel für Nachkommastellen aus EN 16931, die für die Umsatzsteuersumme gedacht ist, schlägt in diesem Release nicht an, und die Rechenprüfungen vergleichen Werte, die gleich sind, daher wird nichts weiter gemeldet.

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 UBL Invoice und CreditNote und für Beträge an beliebiger Stelle in beiden, einschließlich derer in cac:InvoiceLine und cac:CreditNoteLine. Im Versuch meldete eine Gutschrift mit einer Umsatzsteuersumme von 11.700 nur diese Regel, wie die Rechnung.
  • Sie wird vom Prüfschritt EN 16931 gemeldet, obwohl sie den UBL-Datentyp prüft und kein Informationselement. Der XSD-Prüfschritt läuft zuerst und akzeptiert 11.700 als gültige Dezimalzahl, daher zeigt sich das Problem erst hier.
  • Ein Wert, der gar keine Dezimalzahl ist, etwa einer mit Komma, oder ein leeres Betragselement scheitert stattdessen am XSD-Prüfschritt, und die Prüfschritte der Geschäftsregeln werden übersprungen.
  • Ein ungerundeter Wert ist ein anderer Fall als ein aufgefüllter. Im Versuch brachte 11.704 in der Umsatzsteuersumme zusätzlich BR-CO-14, weil er nicht die Summe der Aufschlüsselungen ist; 11.700 ist es und brachte nichts weiter.

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 UBL-DT-01 (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.