BR-CO-20: Positions-Leistungszeitraum ohne Start- und Enddatum
Eine Rechnungsposition enthält einen Leistungszeitraum (BG-26), aber weder Startdatum noch Enddatum. Meist hat die Software das Zeitraum-Element leer angelegt.
If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.
Das ist das Positions-Gegenstück zu BR-CO-19: Ein Leistungszeitraum in einer einzelnen Rechnungszeile darf existieren oder fehlen, aber nicht leer sein.
Was die Regel prüft
Jede Rechnungsposition kann einen eigenen Leistungszeitraum tragen, die Gruppe BG-26 (BG = Business Group, eine Feldgruppe der Norm EN 16931). Sie besteht aus Startdatum (BT-134) und Enddatum (BT-135). BR-CO-20 verlangt: Steht die Gruppe in der Position, muss mindestens eines der beiden Daten gefüllt sein.
Nützlich ist der Positions-Zeitraum vor allem, wenn Zeilen unterschiedliche Zeiträume abdecken, etwa ein Wartungsvertrag für Q2 und eine Reparatur vom 3. Juli auf derselben Rechnung. Gilt für alle Positionen derselbe Zeitraum, gehört er auf Dokumentebene (BG-14, geprüft von BR-CO-19).
Warum sie in der Praxis fehlschlägt
Der typische Auslöser ist derselbe wie bei BR-CO-19, nur eine Ebene tiefer: Die Software legt ram:BillingSpecifiedPeriod in jeder Position an und füllt es nur, wenn der Nutzer Daten eingibt. Bei Positionen ohne Zeitraum bleibt die leere Hülle stehen. Weil das pro Zeile passiert, meldet der Validator den Fehler dann oft mehrfach, einmal je Position.
Zweiter Fall: Beim Übertragen aus einem Vorsystem (Auftrag, Lieferschein) wird die Zeitraum-Struktur mitkopiert, die Datumswerte gehen beim Mapping aber verloren.
So behebst du den Fehler
Prüfe für jede gemeldete Position: Soll sie einen Leistungszeitraum haben? Dann Start- und Enddatum eintragen. Wenn nicht, muss das komplette Zeitraum-Element aus der Position entfernt werden, nicht nur die Datumsfelder.
Beachte zusätzlich die PEPPOL-Regeln R110 und R111: Wenn die Rechnung auch einen Zeitraum auf Dokumentebene hat, müssen die Positions-Zeiträume innerhalb dieses Rahmens liegen.
XML-Beispiel: vorher und nachher
Eine Position mit leerem Zeitraum-Element:
<!-- verletzt BR-CO-20: BillingSpecifiedPeriod in der Position ohne Datum -->
<ram:IncludedSupplyChainTradeLineItem>
<!-- … -->
<ram:SpecifiedLineTradeSettlement>
<ram:BillingSpecifiedPeriod/>
<!-- … -->
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
Korrigiert mit Startdatum (BT-134) und Enddatum (BT-135):
<ram:IncludedSupplyChainTradeLineItem>
<!-- … -->
<ram:SpecifiedLineTradeSettlement>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260401</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20260630</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
<!-- … -->
</ram:SpecifiedLineTradeSettlement>
</ram:IncludedSupplyChainTradeLineItem>
Rechnung selbst prüfen
Lade deine Datei hoch und sieh in Sekunden, welche Regeln sie besteht und welche nicht. Kostenlos, ohne Anmeldung, nichts wird gespeichert.