The short answer
PEPPOL-EN16931-R110 fails when a line cac:InvoicePeriod/cbc:StartDate is earlier than the cbc:StartDate of the document-level cac:InvoicePeriod. Either the line date is wrong and should be corrected, or the line really covers earlier days and the invoicing period should start on or before them.
The finding points at the line start date itself, so on a document with many lines it tells you which one is out of range. Line end dates are the business of PEPPOL-EN16931-R111.
What the rule checks
The rule runs only if the document-level period has a cbc:StartDate. When tried, the same early line date passed when the document period had only an end date, and again when there was no document period at all.
Each line period start date is then compared with the document start date as a calendar date. The same day passes: in the corrected invoice both periods start on 2026-08-01.
Only start dates take part. A line whose end date is after the document end date reports PEPPOL-EN16931-R111 instead; when tried, a line ending on 2026-09-05 in a period ending on 2026-08-31 did exactly that.
The rule does not ask whether a line starts after the invoicing period has ended. When tried, a line period with only a start date of 2026-09-05, beyond the document end date of 2026-08-31, passed every layer.
| Term | Meaning | UBL element |
|---|---|---|
| BT-134 | Invoice line period start date | cac:InvoiceLine/cac:InvoicePeriod/cbc:StartDate (cac:CreditNoteLine/cac:InvoicePeriod/cbc:StartDate in a credit note) |
| BT-73 | Invoicing period start date | cac:InvoicePeriod/cbc:StartDate |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The invoicing period is set to the current billing month while a line carries charges for earlier days, such as usage billed in arrears or a pro-rated first period.
- The document period is copied from the first line, and a later line starts earlier.
- Line dates and document dates go through different time zone conversions, so a line starting at local midnight is written as the previous day.
- A correction line keeps the service dates of the original invoice while the document period is the current one.
How to fix it
- For the line named in the finding, check its service dates in the source: is the start date right?
- If it is wrong, correct it at source and write the corrected date to that line
cac:InvoicePeriod/cbc:StartDate. - If it is right, the invoicing period does not cover the whole invoice. Set the document
cac:InvoicePeriod/cbc:StartDateto the earliest line start date, and compare the document end date with the latest line end date, whichPEPPOL-EN16931-R111requires. - Write every date as a plain
YYYY-MM-DDtaken from the calendar date in the business time zone, with no conversion to UTC.
Validate your corrected invoice
Before and after
These are fragments, not complete documents. The complete synthetic documents they come from are linked below.
Fragment of the failing invoice: the invoicing period starts on 1 August, the line period on 25 July
<cac:InvoicePeriod>
<cbc:StartDate>2026-08-01</cbc:StartDate>
<cbc:EndDate>2026-08-31</cbc:EndDate>
</cac:InvoicePeriod>
<!-- parties, VAT and totals omitted from this fragment -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:InvoicePeriod>
<cbc:StartDate>2026-07-25</cbc:StartDate>
<cbc:EndDate>2026-08-15</cbc:EndDate>
</cac:InvoicePeriod>
<!-- item and price omitted from this fragment -->
</cac:InvoiceLine>Fragment of the corrected invoice: the line period starts on 1 August, the first day of the invoicing period
<cac:InvoicePeriod>
<cbc:StartDate>2026-08-01</cbc:StartDate>
<cbc:EndDate>2026-08-31</cbc:EndDate>
</cac:InvoicePeriod>
<!-- parties, VAT and totals omitted from this fragment -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
<cac:InvoicePeriod>
<cbc:StartDate>2026-08-01</cbc:StartDate>
<cbc:EndDate>2026-08-15</cbc:EndDate>
</cac:InvoicePeriod>
<!-- item and price omitted from this fragment -->
</cac:InvoiceLine>Only the line start date differs: 2026-07-25 in the failing invoice, 2026-08-01 in the corrected one. The failing document reports only PEPPOL-EN16931-R110. Its EN 16931 layer passes because the line-level period rule there, BR-30, compares a line start date only with the end date of the same line, and 2026-08-15 is later than 2026-07-25.
What the validator reported
- The failing invoice reports PEPPOL-EN16931-R110. The corrected document passes every layer with no findings.Download the failing XMLDownload the corrected XML
Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.
Where it applies
- Applies to
InvoiceandCreditNote. In a credit note the line iscac:CreditNoteLine, whose period element is still calledcac:InvoicePeriod; when tried, the same early date reported this rule there. - This is a Peppol BIS rule and appears in the Peppol layer alone; the EN 16931 layer passed the recorded failing invoice.
- A date that is not a date at all, such as
25/07/2026, fails the XSD layer before this rule can run; one with a time zone suffix passes the XSD and is rejected byPEPPOL-EN16931-F001. - A line end date before its own start date is
BR-30; a line end date after the document end date isPEPPOL-EN16931-R111.
Related rules
- BR-29 checks that the invoicing period this rule measures against does not end before it starts
- BR-CO-19 requires a date in the invoicing period, and only a start date there brings this rule into play
- PEPPOL-EN16931-F001 rejects line and document period dates that carry a time zone
- Browse every rule in the reference
- Background: How Peppol invoice validation actually works
Scope and source
Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-24.1: source checked 2026-09-24, explanation last updated 2026-09-24.
The official definition of PEPPOL-EN16931-R110 carries the normative wording and test. This page is our explanation of it, not a copy.
Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.
