Peppol BIS Billing 3.0.20 · UBL

BR-O-14: 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-14]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".

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:AllowanceCharge[cbc:ChargeIndicator=true()]/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-14 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, BG-21, BT-102.

What this rule requires

The rule requires that if an invoice contains a VAT breakdown group (BG-23) with VAT category code 'Not subject to VAT' (code O under VAT scheme), then all document level charges must also have VAT category code O. In UBL, the test checks that when a cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory with cac:TaxScheme/cbc:ID = VAT and cbc:ID = O exists, the count of //cac:AllowanceCharge[cbc:ChargeIndicator=true()] whose cac:TaxCategory/cbc:ID is not O under VAT must be zero. The UBL test uses //, so it actually counts charges anywhere in the document, not only document-level. In CII, the test is evaluated for every ram:ApplicableTradeTax with ram:CategoryCode = O and ram:TypeCode = VAT; it requires that no ram:CategoryTradeTax anywhere has ram:CategoryCode other than O, which is broader than the message. A document fails when it has both an O VAT breakdown and at least one conflicting charge/tax category.

How to fix

For UBL: ensure that every cac:AllowanceCharge with cbc:ChargeIndicator=true() (document-level or line-level, since the test uses //) has cac:TaxCategory/cbc:ID = O when its cac:TaxScheme/cbc:ID is VAT; if any such charge has a different VAT category code, change it to O or remove the charge if it is not actually not subject to VAT. For CII: if the invoice has an ram:ApplicableTradeTax with ram:CategoryCode = O and ram:TypeCode = VAT, then every ram:CategoryTradeTax in the document must have ram:CategoryCode = O; find any ram:CategoryTradeTax with a different category code and correct it. If taxable charges are intended, check whether the O VAT breakdown is correct.

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-14.

Validate an invoice against these rules · All release changes