Skip to content

BR-CO – Conditions and calculations

BR-CO-19: invoicing period (BG-14) without start or end date

ErrorEN 16931 business rule (CEN)

The rule's own wording

[BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.

Source: CEN EN 16931, version 1.3.16

Meaning of the rule

Your invoice names an invoicing period, but the group is empty: neither a start nor an end date is given. The norm allows both together or one of the two, but not none. A period without a date tells the recipient nothing and is rejected. Often the software creates the group from a template and fills the dates only when the order holds a service period; for single deliveries it stays empty.

What usually goes wrong

  • The template always writes the group, but the order has no service period.
  • The date stands in a free-text field instead of the date fields.
  • Only the description code for the tax point date was set, without dates.

The fix in the XML

Enter in cac:InvoicePeriod at least cbc:StartDate or cbc:EndDate, preferably both, in the format YYYY-MM-DD; in CII ram:StartDateTime and ram:EndDateTime of the BillingSpecifiedPeriod. If there is no period, remove the group entirely.

Before – invalid
<cac:InvoicePeriod>
</cac:InvoicePeriod>
After – corrected
<cac:InvoicePeriod>
  <cbc:StartDate>2026-02-01</cbc:StartDate>
  <cbc:EndDate>2026-02-28</cbc:EndDate>
</cac:InvoicePeriod>

Questions and answers

Is a description code without a date enough in UBL?

In UBL yes, when only cbc:DescriptionCode is set; but that is the tax point date detail, not an invoicing period. For the period you need a date.

May the end date lie before the start date?

No. The end date must not precede the start date; BR-CO-19 only checks that at least one is present.

EN 16931 fields

  • BG-14
  • BT-73
  • BT-74

See also

Check your invoice

The EN 16931 validator reports this rule with the line number and location – right in your browser, without upload.

Open the EN 16931 validator

The rule in detail
UBL · Context (XPath)
cac:InvoicePeriod
UBL · Schematron test
exists(cbc:StartDate) or exists(cbc:EndDate) or (exists(cbc:DescriptionCode) and not(exists(cbc:StartDate)) and not(exists(cbc:EndDate)))
CII · Context (XPath)
//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod
CII · Schematron test
(ram:StartDateTime) or (ram:EndDateTime)

Explanation written on 14 September 2026