What does BR-29 mean?
If the invoice carries both an invoicing period start date (BT-73) and an invoicing period end date (BT-74), the end must be the same as or later than the start. Both dates sit in ram:BillingSpecifiedPeriod as udt:DateTimeString in format 102 (YYYYMMDD). The rule only applies when both dates are set.
Common causes of BR-29
- Start date and end date were swapped.
- A typo in the date, for example the wrong month or the wrong year.
- The end date was set to a day before the start.
How to fix BR-29
- Find the faulty spot in the XML. Open the XML of the invoice and go to field BT-74 along this XPath:
//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString - Apply the fix. Correct ram:EndDateTime (BT-74) in ram:BillingSpecifiedPeriod so that it is the same as or later than ram:StartDateTime (BT-73). Both values in format 102 (YYYYMMDD), for example 20260430.
- Validate again. Save the file and validate it again to check that BR-29 is no longer reported.
Correct ram:EndDateTime (BT-74) in ram:BillingSpecifiedPeriod so that it is the same as or later than ram:StartDateTime (BT-73). Both values in format 102 (YYYYMMDD), for example <udt:DateTimeString format="102">20260430</udt:DateTimeString>.
//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeStringBefore / after: the XML example
This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260401</udt:DateTimeString>
</ram:StartDateTime>
<ram:EndDateTime>
<udt:DateTimeString format="102">20260331</udt:DateTimeString>
</ram:EndDateTime>
</ram:BillingSpecifiedPeriod>
<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>
Frequent questions about BR-29
May the end be the same as the start?
Which format do the dates use?
What if I only have one date?
Related error codes
Check BR-29 automatically
Instead of digging through the XML by hand you can validate your ZUGFeRD or XRechnung file online – upload the PDF or the XML and you get every error with rule ID, affected field, fix and XPath, as a readable report or as JSON through the API.