Counterfoil rule note

BR-B-01

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

An Invoice where the VAT category code (BT-151, BT-95 or BT-102) is “Split payment” shall be a domestic Italian invoice.

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

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

If the VAT category code (BT-151, BT-95 or BT-102) is “Split payment”, the invoice must be a domestic Italian invoice. The statement says “shall be”, not “shall contain”, and it does not say “at least one”. The published test compares the category id to B. A tax-category comparison is cbc:ID ='B' with a space before = and no space after =. A classified-tax-category comparison is cbc:ID = 'B' with spaces around =. Neither comparison requires the tax scheme, and neither uses normalize-space. Neither branch calls exists. The other branch is not(...). The country comparison is != 'IT' with spaces around !=.

What to change

When a tax category id or a classified tax category id is B, make every identification code IT. The statement calls that category “Split payment” and asks for a domestic Italian invoice.

Illustration

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

Fails the stated condition. A tax category or a classified tax category uses id B, and an identification code is not IT.

Passes the stated condition. A tax category uses id B and every identification code is IT. The test also passes when no tax category id is B and no classified tax category id is B.

Published context and test

Copied from the source. Not reimplemented on this page.

/ubl:Invoice | /cn:CreditNote
(not(//cbc:IdentificationCode != 'IT') and (//cac:TaxCategory/cbc:ID ='B' or //cac:ClassifiedTaxCategory/cbc:ID = 'B')) or (not(//cac:TaxCategory/cbc:ID ='B' or //cac:ClassifiedTaxCategory/cbc:ID = 'B'))

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