Counterfoil rule note

BR-IC-11

Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.

Country
EU
Syntax
UBL
Severity
fatal
Last verified
2026-10-18

Official statement

In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.

Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-IC-11/

Peppol BIS Billing 3.0, May 2026 release, EN 16931 model bound to UBL

Severity note: fatal, from the Flag column of the Peppol BIS Billing 3.0 UBL rules index retrieved 2026-10-18.

Plain-language reading

An invoice with a VAT breakdown whose category is "Intra-community supply" must include an actual delivery date (BT-72) or an invoicing period (BG-14) that is not blank. The official message capitalizes "Actual delivery date" and "Invoicing period", and it has no comma before "the Actual". The published test passes when a VAT breakdown category code K exists and the actual delivery date has a string length greater than 1, or an invoicing-period child exists. It also passes when no VAT breakdown uses K. The negative branch is not(...) and does not call exists. Both branches require the tax scheme to be VAT. The tax-scheme comparison is written cbc:ID)='VAT' with no space before =. The category comparison is normalize-space(.) = 'K' with spaces around =. The official test has two spaces before and. The stored test keeps one. A K breakdown makes the first exists true, so the test does not also require an intra-community line.

What to change

On an invoice that has a K VAT breakdown, set the actual delivery date (BT-72) longer than one character, or add an invoicing period (BG-14) that has a child element.

Illustration

Illustration of the condition in the official statement. Not an example published by the source.

Fails the stated condition. A VAT breakdown uses category code K, the actual delivery date is missing or one character, and the invoicing period has no child.

Passes the stated condition. A VAT breakdown uses K, and the actual delivery date is longer than one character, or an invoicing period has a child.

Published context and test

Copied from the source. Not reimplemented on this page.

/ubl:Invoice | /cn:CreditNote
(exists(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'K']) and (string-length(cac:Delivery/cbc:ActualDeliveryDate) > 1 or (cac:InvoicePeriod/*))) or (not(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'K']))

All rule notes · JSON · Markdown · llms.txt · Invoice page · Privacy