Peppol BIS Billing 3.0.20 · UBL

BR-O-08: In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT"…

Peppol BIS Billing 3.0.20 · UBL

fatalbusiness

Original rule text

[BR-O-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Not subject to VAT".

Stored validation assertion
(exists(//cac:InvoiceLine) and (xs:decimal(../cbc:TaxableAmount) = (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='O']/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='O']/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='O']/xs:decimal(cbc:Amount))))) or (exists(//cac:CreditNoteLine) and (xs:decimal(../cbc:TaxableAmount) = (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='O']/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='O']/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='O']/xs:decimal(cbc:Amount)))))

BR-O-08 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, BT-116, BT-131, BT-92, BT-99, BT-151, BT-95, BT-102.

What this rule requires

In UBL, for a cac:TaxCategory with cbc:ID = O under a VAT cac:TaxScheme, the cbc:TaxableAmount in the parent cac:TaxSubtotal must equal the sum of cbc:LineExtensionAmount values from invoice lines (or credit note lines, if no invoice lines) whose cac:ClassifiedTaxCategory/cbc:ID is O, plus document-level cac:AllowanceCharge/cbc:Amount where cbc:ChargeIndicator is true and cac:TaxCategory/cbc:ID is O, minus those where cbc:ChargeIndicator is false. In CII, for an ram:ApplicableTradeTax with ram:CategoryCode = O and VAT ram:TypeCode, the ram:BasisAmount must equal the sum of ram:LineTotalAmount for lines with ram:CategoryCode = O, plus ram:ActualAmount of applicable header charges with ram:CategoryCode = O and ram:ChargeIndicator true, minus allowances with false; in CII the test rounds each summed component to two decimal places before comparing.

How to fix

For UBL, set cac:TaxSubtotal/cbc:TaxableAmount (BT-116) in the VAT breakdown with category O to the sum of net line amounts (cbc:LineExtensionAmount) for lines with category O, minus document-level allowances with category O (cac:AllowanceCharge[cbc:ChargeIndicator=false()]/cbc:Amount), plus document-level charges with category O (cac:AllowanceCharge[cbc:ChargeIndicator=true()]/cbc:Amount). For CII, set ram:ApplicableTradeTax/ram:BasisAmount to the same calculation using ram:LineTotalAmount and ram:ActualAmount for allowance/charge records with category code O; note that each component is rounded to two decimals in the CII test. Also check that all line items, document-level allowances, and charges that are not subject to VAT actually carry category code O; correct any misclassified category codes.

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

Validate an invoice against these rules · All release changes