PEPPOL-EN16931-R111: Positionszeitraum endet nach dem Rechnungszeitraum
Der Leistungszeitraum einer Rechnungsposition (BT-135) endet später als der Abrechnungszeitraum der Rechnung (BT-74). Typisch, wenn eine Leistung über das Monatsende hinausläuft.
End date of line period MUST be within invoice period.
Diese Regel ist das Gegenstück zu PEPPOL-EN16931-R110: Dort geht es um das Startdatum, hier um das Ende des Positionszeitraums.
Was die Regel prüft
Trägt die Rechnung einen Abrechnungszeitraum auf Dokumentebene (BG-14 mit Enddatum BT-74; BT steht für Business Term, das nummerierte Feld der Norm) und hat eine Position zusätzlich einen eigenen Leistungszeitraum (BG-26), dann darf das Enddatum der Position (BT-135) nicht hinter dem Enddatum des Dokumentzeitraums liegen. Alles, was die Rechnung abrechnet, muss innerhalb der Klammer liegen, die der Kopf aufspannt.
Geprüft wird nur, wenn beide Ebenen vorhanden sind. Fehlt der Kopfzeitraum oder haben die Positionen keine eigenen Zeiträume, kann die Regel nicht anschlagen.
Warum sie in der Praxis fehlschlägt
Häufigster Fall: Eine Leistung läuft über das Periodenende hinaus. Die Monatsrechnung für Juli trägt im Kopf den Zeitraum 01.07. bis 31.07., aber der letzte Wartungseinsatz zog sich bis zum 02.08. Die Position bekommt das echte Enddatum, der Kopf bleibt beim Kalendermonat, und beide widersprechen sich.
Zweiter Auslöser sind Abschlags- und Dauerrechnungen, bei denen der Kopfzeitraum aus dem Rechnungsdatum abgeleitet wird, während einzelne Positionen einen Vertragszeitraum tragen, der weiter in die Zukunft reicht, etwa eine Servicepauschale „bis Jahresende".
So behebst du den Fehler
Setz das Enddatum des Kopfzeitraums so, dass es das späteste Positionsende einschließt. Der Abrechnungszeitraum der Rechnung darf länger sein als ein Kalendermonat, er muss nur die abgerechneten Leistungen vollständig abdecken.
Wenn jede Position ohnehin ihren eigenen Zeitraum trägt, kannst du stattdessen den Kopfzeitraum weglassen, sofern dein Abnehmer ihn nicht ausdrücklich verlangt. Prüfe außerdem, ob das späte Positionsende überhaupt stimmt: Manchmal ist es schlicht ein Tippfehler oder ein aus dem Vertrag übernommenes Datum, das nicht die abgerechnete Periode beschreibt.
XML-Beispiel: vorher und nachher
Die Position endet am 02.08., der Kopfzeitraum schon am 31.07. (CII-Datumsformat JJJJMMTT, format="102"):
<!-- verletzt PEPPOL-EN16931-R111: Positionsende 02.08. liegt nach Kopfende 31.07. -->
<ram:SpecifiedLineTradeSettlement>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime><udt:DateTimeString format="102">20260728</udt:DateTimeString></ram:StartDateTime>
<ram:EndDateTime><udt:DateTimeString format="102">20260802</udt:DateTimeString></ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
</ram:SpecifiedLineTradeSettlement>
<!-- … -->
<ram:ApplicableHeaderTradeSettlement>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime><udt:DateTimeString format="102">20260701</udt:DateTimeString></ram:StartDateTime>
<ram:EndDateTime><udt:DateTimeString format="102">20260731</udt:DateTimeString></ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
</ram:ApplicableHeaderTradeSettlement>
Korrigiert: Das Kopfende deckt jetzt das späteste Positionsende ab:
<ram:ApplicableHeaderTradeSettlement>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime><udt:DateTimeString format="102">20260701</udt:DateTimeString></ram:StartDateTime>
<ram:EndDateTime><udt:DateTimeString format="102">20260802</udt:DateTimeString></ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
</ram:ApplicableHeaderTradeSettlement>
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.