BR-CO-20 A line carries an invoice line period (BG-26) with neither a start date (BT-134) nor an end date (BT-135)
Line 1 carries an invoice line period (BG-26) with neither a start date (BT-134) nor an end date (BT-135). Unlike the document level period (BG-14), a line period has no legal empty form: BT-8, the tax point date code that lets BG-14 exist without dates, is a document term and has no line equivalent, so a line period with no dates conveys nothing whatsoever. A line period exists to say that this line covers a different timeframe from the rest of the invoice — omit the group and the line simply inherits BG-14, which is usually what you want.
This rule is implemented and its error payload below is real, but the long-form write-up — normative text, worked example, divergence note — is not written yet. Everything the library knows about this rule is on this page. Ask and we will prioritise it.
- Business term
BG-26- Severity
fatal
What the library returns
The exact object in result.errors when this rule fires.
Generated by running @attestwire/en16931, not transcribed:
{
"rule": "BR-CO-20",
"field": "BG-26",
"severity": "fatal",
"message": "Line 1 carries an invoice line period (BG-26) with neither a start date (BT-134) nor an end date (BT-135). Unlike the document level period (BG-14), a line period has no legal empty form: BT-8, the tax point date code that lets BG-14 exist without dates, is a document term and has no line equivalent, so a line period with no dates conveys nothing whatsoever. A line period exists to say that this line covers a different timeframe from the rest of the invoice — omit the group and the line simply inherits BG-14, which is usually what you want.",
"fix": "Set line.period.startDate, line.period.endDate, or both, or remove line.period so the line falls back to the document level invoicing period. Note that line.period.descriptionCode is ignored at line level.",
"example": "\"period\": { \"startDate\": \"2026-07-01\", \"endDate\": \"2026-07-15\" }",
"xpath": "/ubl:Invoice/cac:InvoiceLine[1]/cac:InvoicePeriod",
"docsUrl": "https://attestwire.com/rules/BR-CO-20"
}
xpath locates the element in the generated UBL document,
which is where a KoSIT or Peppol validator will report the same problem.
A passing value
"period": { "startDate": "2026-07-01", "endDate": "2026-07-15" }The fix
Set line.period.startDate, line.period.endDate, or both, or remove line.period so the line falls back to the document level invoicing period. Note that line.period.descriptionCode is ignored at line level.