Account
English

PEPPOL-EN16931-R110: Line period starts before the invoice period

Peppol BIS Billing 3.0 rule · Error · UBL / CII

StandardPeppol BIS Billing 3.0 (OpenPeppol)SeverityError: the invoice is rejectedSyntaxUBL, CIIApplies toInvoices and credit notes sent over the Peppol network (UBL) and, because XRechnung embeds the Peppol rule set, every XRechnung as well.

Official rule text

[PEPPOL-EN16931-R110] Start date of line period MUST be within invoice period.

Why this error occurs

When both the document and a line give a billing period, the line period must lie inside the document period; this rule checks the start date. It compares cac:InvoiceLine/cac:InvoicePeriod/cbc:StartDate with the header cac:InvoicePeriod/cbc:StartDate (UBL) or the line ram:BillingSpecifiedPeriod/ram:StartDateTime with the header ram:BillingSpecifiedPeriod/ram:StartDateTime (CII). It typically fails when the header period is set to the current month while lines carry earlier service dates, or when the header period is copied from the payment period.

How to fix it

Set the header period (BT-73/BT-74) to span all line periods: start on the earliest line start date and end on the latest line end date. Alternatively drop the header period and keep only the line periods (BG-26), or drop the line periods if they are all identical to the header. In CII keep format="102" with YYYYMMDD values, because the comparison is done on the date strings. Use real dates, not placeholders.

Example (valid)

<cac:InvoicePeriod>
  <cbc:StartDate>2026-09-01</cbc:StartDate>
  <cbc:EndDate>2026-09-30</cbc:EndDate>
</cac:InvoicePeriod>
...
<cac:InvoiceLine>...<cac:InvoicePeriod><cbc:StartDate>2026-09-05</cbc:StartDate><cbc:EndDate>2026-09-20</cbc:EndDate></cac:InvoicePeriod>...</cac:InvoiceLine>

What the validator checks

Checked element (context):

UBL

ubl-invoice:Invoice[cac:InvoicePeriod/cbc:StartDate]/cac:InvoiceLine/cac:InvoicePeriod/cbc:StartDate | ubl-creditnote:CreditNote[cac:InvoicePeriod/cbc:StartDate]/cac:CreditNoteLine/cac:InvoicePeriod/cbc:StartDate

Test (XPath):

xs:date(text()) >= xs:date(../../../cac:InvoicePeriod/cbc:StartDate)

CII

rsm:SupplyChainTradeTransaction[ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime]/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime

Test (XPath):

udt:DateTimeString >= ../../../../ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString

Check your invoice

Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.

Check your invoice →

Same check via API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Related rules

Frequently asked questions

What does PEPPOL-EN16931-R110 mean?

PEPPOL-EN16931-R110 is a peppol bis billing 3.0 rule: Start date of line period MUST be within invoice period.

Will my invoice be rejected because of PEPPOL-EN16931-R110?

Yes. PEPPOL-EN16931-R110 is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals) reject the invoice until it is fixed.

Which formats does PEPPOL-EN16931-R110 apply to?

Invoices and credit notes sent over the Peppol network (UBL) and, because XRechnung embeds the Peppol rule set, every XRechnung as well. Syntax: UBL and CII.

Source: Peppol BIS Billing 3.0.20 (November 2025). Catalogue generated from the official schematron on 2026-10-14.