What does BR-CO-20 mean?
If a period is used for an invoice line, the start or the end date must be set. That way the period is defined.
Common causes of BR-CO-20
- The invoice line period was created, but neither start nor end date was set.
- The line's delivery date was written into the wrong element.
- An empty 'ram:BillingSpecifiedPeriod' was left on line level.
How to fix BR-CO-20
- Find the faulty spot in the XML. Open the XML of the invoice and go to field BG-26 along this XPath:
//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod - Apply the fix. If an invoice line period (BG-26, 'ram:BillingSpecifiedPeriod' inside the line) is used, at least the start date (BT-134, 'ram:StartDateTime') or the end date (BT-135, 'ram:EndDateTime') must be filled. Add one of the two dates in the line period group or remove the empty group.
- Validate again. Save the file and validate it again to check that BR-CO-20 is no longer reported.
If an invoice line period (BG-26, 'ram:BillingSpecifiedPeriod' inside the line) is used, at least the start date (BT-134, 'ram:StartDateTime') or the end date (BT-135, 'ram:EndDateTime') must be filled. Add one of the two dates in the line period group or remove the empty group.
//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriodBefore / after: the XML example
This is the spot in question before and after the fix (Cross Industry Invoice, ZUGFeRD/Factur-X).
<ram:SpecifiedLineTradeSettlement>
<ram:BillingSpecifiedPeriod>
</ram:BillingSpecifiedPeriod>
</ram:SpecifiedLineTradeSettlement>
<ram:SpecifiedLineTradeSettlement>
<ram:BillingSpecifiedPeriod>
<ram:StartDateTime>
<udt:DateTimeString format="102">20260401</udt:DateTimeString>
</ram:StartDateTime>
</ram:BillingSpecifiedPeriod>
</ram:SpecifiedLineTradeSettlement>
Frequent questions about BR-CO-20
How does BR-CO-20 differ from BR-CO-19?
Where does the invoice line period sit in CII?
Related error codes
Check BR-CO-20 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.