BR-30: Invoice line period end date (BT-135) is before the start date (BT-134)
Official message
[BR-30] If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).
[BR-30] If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).
[BR-30] If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).
- Severity
- Error The invoice is invalid and may be rejected by the recipient.
- Applies to
- EN 16931 (CII), EN 16931 (UBL), Factur-X / ZUGFeRD EN 16931
- Affected fields
- BT-134, BT-135
What does this mean?
If both the invoice line period start date (BT-134) and end date (BT-135) of an invoice line are given, the end date shall not be before the start date; both may be equal.
Typical causes
The line's start and end date were swapped.
Day and month were mixed up.
CII: A date is not in format 102 (YYYYMMDD).
How to fix the error
For the line concerned, enter start and end date so that the end is equal to or later than the start.
CII: ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod with ram:StartDateTime and ram:EndDateTime (format="102"), UBL: cac:InvoiceLine/cac:InvoicePeriod with cbc:StartDate and cbc:EndDate.
Generate and validate the invoice again.
In E-Rechnungsfreund
In the invoice form ("Experte" view), section "Rechnungspositionen (BG-25)" (invoice lines), check the fields "Zeitraum Start (BT-134)" (period start) and "Zeitraum Ende (BT-135)" (period end) of the line concerned.
Example
Wrong
<ram:SpecifiedLineTradeSettlement>
...
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260430</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20260401</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
...
</ram:SpecifiedLineTradeSettlement>
Correct
<ram:SpecifiedLineTradeSettlement>
...
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260401</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20260430</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
...
</ram:SpecifiedLineTradeSettlement>
For developers: test expression per syntax
EN 16931 (CII) (CII)
Context: //ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod
(ram:EndDateTime/udt:DateTimeString[@format = '102']) >= (ram:StartDateTime/udt:DateTimeString[@format = '102']) or not (ram:EndDateTime) or not (ram:StartDateTime)
EN 16931 (UBL) (UBL)
Context: cac:InvoiceLine/cac:InvoicePeriod | cac:CreditNoteLine/cac:InvoicePeriod
(exists(cbc:EndDate) and exists(cbc:StartDate) and xs:date(cbc:EndDate) >= xs:date(cbc:StartDate)) or not(exists(cbc:StartDate)) or not(exists(cbc:EndDate))
Factur-X / ZUGFeRD EN 16931 (CII)
Technical ID in the source: FX-SCH-A-000212
Context: //ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod
(ram:EndDateTime/udt:DateTimeString[@format = '102']) >= (ram:StartDateTime/udt:DateTimeString[@format = '102']) or not (ram:EndDateTime) or not (ram:StartDateTime)
Related validation rules
Last updated:
Explanation of the validation rule, not legal or tax advice.