On this page
The short answer
BR-CL-06 fails when cbc:DescriptionCode in a cac:InvoicePeriod holds anything other than 3, 35 or 432. Each of the three names the event that fixes when VAT becomes due: 3 the invoice issue date, 35 the actual delivery date, 432 the date of payment.
The recorded example sent 131, a code from the full UNTDID 2005 list of date qualifiers that EN 16931 does not allow here; the corrected invoice uses 3. PEPPOL-EN16931-CL006 checks the same element against the same three codes, so a wrong value is reported by both rules.
What the rule checks
Any cac:InvoicePeriod is covered, at document level or on a line. When tried, 131 in a line period was reported by this rule and PEPPOL-EN16931-CL006, together with the warning UBL-CR-523, which advises against a code on a line period at all.
The value is trimmed and must then be exactly 3, 35 or 432. When tried, 3 with spaces around it passed, and 03 with a leading zero failed.
An empty cbc:DescriptionCode fails as well. When tried, it reported this rule, PEPPOL-EN16931-CL006 and PEPPOL-EN16931-R008.
The code is checked on its own. Whether it may stand beside cbc:TaxPointDate is decided by BR-CO-03, and nothing compares it with the period dates or the delivery date.
| Term | Meaning | UBL element |
|---|---|---|
| BT-8 | Value added tax point date code | cac:InvoicePeriod/cbc:DescriptionCode |
| BT-7 | Value added tax point date | cbc:TaxPointDate |
How an integration ends up here
Possible causes, from the shape of the rule rather than from measured usage:
- The code is taken from the full UNTDID 2005 list rather than from the three that EN 16931 allows, for example
131, which EDIFACT invoices use to qualify a tax point date. - Codes are stored with a fixed width, producing
03or035. - The element is filled with a description of the period, because
cbc:DescriptionCodeis mistaken for the free-textcbc:Description. - An empty element is written when the source has no VAT point code, instead of leaving the element out.
How to fix it
- Decide what fixes the VAT point for the invoice: its issue date (
3), the actual delivery date (35) or payment (432, Paid to date). - Write that one code, digits only, in
cbc:DescriptionCodeof the document-levelcac:InvoicePeriod. - If you know the VAT point as a date rather than as an event, send it in
cbc:TaxPointDateand drop the code; the two must not appear together. - Keep codes off line periods. A line period takes dates only, and any code there draws the warning
UBL-CR-523.
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 carries VAT point date code 131
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2026-08-01</cbc:StartDate>
<cbc:EndDate>2026-08-31</cbc:EndDate>
<cbc:DescriptionCode>131</cbc:DescriptionCode>
</cac:InvoicePeriod>Fragment of the corrected invoice: code 3, the invoice issue date
<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:InvoicePeriod>
<cbc:StartDate>2026-08-01</cbc:StartDate>
<cbc:EndDate>2026-08-31</cbc:EndDate>
<cbc:DescriptionCode>3</cbc:DescriptionCode>
</cac:InvoicePeriod>Only the code in the invoicing period differs: 131 in the failing invoice, 3 in the corrected one, with the August 2026 start and end dates unchanged. The failing document also reports PEPPOL-EN16931-CL006, the Peppol layer check of the same element against the same three codes, and the one correction clears both.
What the validator reported
- The failing invoice reports BR-CL-06 and PEPPOL-EN16931-CL006. 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. When tried, a credit note whose period held only the code131reported this rule andPEPPOL-EN16931-CL006. - No value separates the pair: both trim the code and accept the same three values, so they fail and pass together.
- The element is optional, and a document without a VAT point date code is not checked by this rule.
Related rules
- PEPPOL-EN16931-CL006 is the Peppol layer copy of this check
- BR-CO-03 forbids the code beside a VAT point date
- BR-CO-19 accepts an invoicing period that holds only this code
- BR-CL-05 checks the VAT accounting currency code, another optional VAT reporting field
- Browse every rule in the reference
- Background: Understanding EN 16931 validation errors
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-28.1: source checked 2026-09-28, explanation last updated 2026-09-28.
The official definition of BR-CL-06 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.

