Rule reference

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:

TeachingError
{
  "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

the shape this field expects
"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.

Arrived from a stack trace? The docsUrl on every error links straight here. Something wrong on this page — tell us.