Zum Hauptinhalt springen
EN 16931 · Zeilen

UBL-SR-48-Fehler: eine Rechnungszeile mit zwei Steuern oder ohne Steuer

In der europäischen E-Rechnung trägt jede Zeile eine USt-Kategorie, und nur eine. In Odoo kann eine Zeile mehrere Steuern oder keine haben, deshalb tritt der Konflikt häufig auf: In der Datei ist es UBL-SR-48, und Odoo stoppt vor der Erzeugung mit einer eigenen Meldung. Zur selben Gruppe gehören BR-CO-04, BR-25 und BR-16.

FlexigoTech · Verantwortlich: Víctor Gómez · Aktualisiert am 4. November 2026

Das Wichtigste

Versionen
Odoo 17, 18, 19 und 20
Geprüft
im Quellcode des Moduls, Version 17.0 und 20.0 · in den Quellen am Ende
Lesezeit
3 Min.

Was jede Regel sagt

Alle vier sind im Schematron von EN 16931 (validation-1.3.17) fatal:

UBL-SR-48
«Invoice lines shall have one and only one classified tax category.» Eine UBL-Syntaxregel: eine Zeile, eine Kategorie.
BR-CO-04
«Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).» Die andere Seite: keine Zeile ohne Kategorie.
BR-25
«Each Invoice line (BG-25) shall contain the Item name (BT-153).» Jede Zeile mit Bezeichnung.
BR-16
«An Invoice shall have at least one Invoice line (BG-25)» Mindestens eine Zeile.
Karte der Regel UBL-SR-48 von EN 16931
Eine USt-Kategorie pro Zeile (BT-151), mit BR-CO-04, BR-25 und BR-16.

Die Meldung von Odoo

Odoo wartet nicht auf den Validator. Vor der Erzeugung des UBL durchläuft es die Zeilen und stoppt, wenn eine nicht genau eine Steuer hat, mit: «Each invoice line shall have one and only one tax.» Das geschieht in allen vier Versionen, mit einer Nuance:

  • Odoo 17: zählt die Steuern der Zeile ohne die Steuern mit festem Betrag, etwa Ökosteuern; es muss eine übrig bleiben.
  • Odoo 18, 19 und 20: zählt die Steuerkategorien, die in die Zeile der Datei geschrieben werden; es muss eine geben.

Im selben Schritt prüft es BR-25: Eine Zeile ohne Produkt und ohne Beschreibung stoppt mit «Each invoice line should have a product or a label.»

Die Fälle, die es auslösen

Fall in OdooWas zu tun ist
Zeile ohne Steuer, zum Beispiel ein weiterberechneter AufwandSetzen Sie die passende Steuer, auch wenn sie 0 % oder befreit ist.
Zwei USt-Steuern in derselben ZeileBehalten Sie eine: Bei zwei verschiedenen Sätzen teilen Sie die Zeile.
USt plus Zuschlag oder Einbehalt in der ZeilePrüfen Sie, ob diese zweite Steuer in der E-Rechnung als Steuer oder anders zu erfassen ist; das hängt von Ihrem Land ab.
Textzeile ohne Produkt oder BeschreibungSchreiben Sie die Beschreibung oder wandeln Sie sie in eine Notiz um.

Abschnitte und Notizen in Odoo zählen nicht als Zeilen und lösen daher die Meldung nicht aus.

Mit unserem Modul XRechnung und ZUGFeRD

Das Modul erzeugt das XML mit eigenem Code und führt die Prüfung von Odoo nicht aus: Eine Zeile ohne Steuer oder mit zwei gelangt so in die Datei. Wir haben es mit dem Validator von KoSIT geprüft:

  • Zeile ohne Steuer: Sie geht ohne USt-Kategorie hinaus. In XRechnung UBL ergibt das UBL-SR-48, BR-CO-04 und BR-Z-08; in XRechnung CII, dem Standardformat des Moduls, BR-CO-04, BR-Z-01 und BR-Z-08.
  • Zeile mit zwei Steuern: In UBL wird nur die erste prozentuale Steuer geschrieben, die Gesamtsumme mit USt enthält aber beide, und BR-CO-15 schlägt an. In CII stehen beide in der Zeile, und die USt-Gesamtsumme stimmt nicht mit der Aufschlüsselung überein, BR-CO-14 schlägt an.
  • Zeile mit einer 0-%-Steuer: In UBL geht sie als Z hinaus, und KoSIT akzeptiert sie. In CII geht sie als S hinaus, und KoSIT meldet BR-S-05 sowie BR-Z-01 und BR-Z-08.

Prüfen Sie die Steuern jeder Zeile, bevor Sie erzeugen.

Odoo-20-Rechnung mit dem Reiter XRechnung / ZUGFeRD des Moduls
Validierungsergebnis und Ready to send auf der Rechnung. Screenshot aus Odoo 20 mit Demodaten; der Bericht im Screenshot ist ein Testbericht.

In Odoo 18, 19 und 20 wird mit dem Abonnement FlexigoTech Cloud jede XRechnung und jede ZUGFeRD EN 16931 gegen die Regeln von KoSIT validiert, und die fehlschlagenden Regeln bleiben unter Validation Errors stehen. In Odoo 17 validiert die veröffentlichte Version nicht: Diese Dateien gehen ohne Warnung hinaus.

Schritte

  1. Lesen Sie die Meldung: Sie zeigt, ob es um die Steuer oder den Zeilennamen geht.
  2. Öffnen Sie die Rechnung im Entwurf und prüfen Sie die Steuerspalte Zeile für Zeile.
  3. Korrigieren Sie, buchen Sie und erzeugen Sie die Datei erneut.

Weiterlesen

Fehler BR-E-10, BR-AE-10, BR-IC-10 und BR-G-10: der Befreiungsgrund der UmsatzsteuerBR-E-10, BR-AE-10, BR-IC-10, BR-G-10 und BR-O-10 verlangen den Befreiungsgrund, BR-S-10 und BR-Z-10 verbieten ihn. So setzen ihn Odoo 17 bis 20.Fehler BR-CL-23: Die Maßeinheit der Zeile ist kein UN/ECE-CodeBR-CL-23 verlangt UN/ECE-Codes für die Einheit jeder Zeile, BR-23 deren Vorhandensein, Peppol R130 die Übereinstimmung mit der Preiseinheit.Fehler BR-CO-15 in der E-Rechnung: Gesamtbetrag mit USt ist nicht Netto plus UStBR-CO-15, BR-CO-14, BR-CO-16 und BR-CO-17 prüfen, ob die Summen der E-Rechnung stimmen. Was jede summiert und welche bei einem Cent Abweichung scheitern.
Geprüft im Quellcode des Moduls (Version 17.0 und 20.0) und in den verlinkten Quellen

Quellen