Peppol BIS Billing 3.0.20 · UBL

BR-O-11: An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118)…

Peppol BIS Billing 3.0.20 · UBL

fatalbusiness

Original rule text

[BR-O-11]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).

Stored validation assertion
(exists(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O']) and count(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[normalize-space(cbc:ID) != 'O'][cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']) = 0) or not(cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID[normalize-space(.) = 'O'])

BR-O-11 is a fatal rule in the business layer of Peppol BIS Billing 3.0.20 · UBL. An invoice that breaks it is rejected. It refers to BG-23, BT-118.

What this rule requires

The rule is fatal. In UBL, an invoice that contains a VAT breakdown group (BG-23) with VAT category code (BT-118) "Not subject to VAT" (code O) must not contain any other VAT breakdown group with a VAT category code different from O. The UBL test checks that if any cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory has cac:TaxScheme/cbc:ID (case-insensitive) equal to VAT and cbc:ID equal to O, then the number of such cac:TaxCategory elements with cbc:ID not equal to O must be zero. Multiple O VAT breakdowns are permitted by the test. In CII, the rule applies to ram:ApplicableTradeTax elements with ram:CategoryCode equal to O and ram:TypeCode (case-insensitive) equal to VAT; the test then requires that there are no ram:ApplicableTradeTax elements anywhere in the document with a ram:CategoryCode different from O. This CII test is stricter than the message and UBL test because it does not restrict the ram:TypeCode of the other ApplicableTradeTax elements to VAT; it forbids any non-O category code regardless of tax type.

How to fix

For UBL, check all cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory elements where cac:TaxScheme/cbc:ID (case-insensitive) is VAT. If any such element has cbc:ID equal to O, then no other such element may have a cbc:ID different from O. Either remove the O breakdown or change/remove the other VAT breakdowns so that all VAT breakdowns have O, or remove all VAT breakdowns if the invoice is not subject to VAT. For CII, when an ram:ApplicableTradeTax has ram:CategoryCode O and ram:TypeCode VAT, ensure that there are no ram:ApplicableTradeTax elements anywhere in the document with a ram:CategoryCode different from O. This includes non-VAT taxes, so check all ApplicableTradeTax elements, not only those with TypeCode VAT. If your invoice uses CII and contains non-VAT tax categories alongside an O VAT category, the document will be rejected; you must remove those non-O categories or remove the O VAT tax if it is not appropriate.

Guidance on this rule. The original text above is authoritative.

Where to go next

No published Peppol BIS Billing UBL release comparison lists a change to BR-O-11.

Validate an invoice against these rules · All release changes