Counterfoil rule note
Quoted from a public specification. This page is not a validator, and it is not tax, legal, or accounting advice.
An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95, BT-118 or BT-102) is “Split payment" shall not contain an invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95, BT-118 or BT-102) is “Standard rated”.
Source: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-B-02/
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.
An invoice that contains a line, a document-level allowance, or a document-level charge whose VAT category code (BT-151, BT-95, BT-118 or BT-102) is “Split payment" must not contain an invoice line, a document-level allowance, or a document-level charge whose VAT category code is “Standard rated”. The statement says “shall not contain”. The first quoted name opens with U+201C and closes with a straight quote. The name “Standard rated” uses U+201C and U+201D. The second clause says “an invoice line” with a lowercase i. The published test compares category id B with category id S. A tax-category or allowance comparison writes cbc:ID ='B' or cbc:ID ='S' with a space before = and no space after =. A classified comparison writes cbc:ID = 'B' or cbc:ID = 'S' with spaces around =. Neither comparison requires the tax scheme. Neither branch calls exists. The other branch is not(...).
Do not send category id S on a tax category, an allowance or charge category, or a classified tax category when one of those uses category id B. The statement says the invoice shall not contain “Standard rated” when the category is “Split payment".
Illustration of the condition in the official statement. Not an example published by the source.
Fails the stated condition. A tax category, an allowance or charge category, or a classified tax category uses id B, and one of those uses id S.
Passes the stated condition. One of those uses id B, and none of them uses id S. The test also passes when none of those three places uses id B.
Copied from the source. Not reimplemented on this page.
/ubl:Invoice | /cn:CreditNote
((cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID ='B' or cac:AllowanceCharge/cac:TaxCategory/cbc:ID ='B' or //cac:ClassifiedTaxCategory/cbc:ID = 'B') and (not(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID ='S' or cac:AllowanceCharge/cac:TaxCategory/cbc:ID ='S' or //cac:ClassifiedTaxCategory/cbc:ID = 'S'))) or (not(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:ID ='B' or cac:AllowanceCharge/cac:TaxCategory/cbc:ID ='B' or //cac:ClassifiedTaxCategory/cbc:ID = 'B'))
All rule notes · JSON · Markdown · llms.txt · Invoice page · Privacy