BR-AF-08: For each different value of VAT category rate (BT-119) where the VAT category code…
Peppol BIS Billing 3.0.21 · UBL
Original rule text
[BR-AF-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IGIC" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).
every $rate in xs:decimal(cbc:Percent) satisfies ((exists(//cac:InvoiceLine) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='L'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='L'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))))) or (exists(//cac:CreditNoteLine) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='L'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='L'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='L'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))))))BR-AF-08 is a fatal rule in the business layer of Peppol BIS Billing 3.0.21 · UBL. An invoice that breaks it is rejected. It refers to BT-119, BT-118, BT-116, BG-23, BT-131, BT-99, BT-92, BT-151, BT-102, BT-95, BT-152, BT-103, BT-96.
What this rule requires
This fatal rule requires that for each VAT breakdown (BG-23) with VAT category code IGIC (UBL: cbc:ID = L, CII: ram:CategoryCode = L), the VAT category taxable amount (BT-116) equals the sum of invoice line net amounts plus document-level charges minus document-level allowances, all having the same VAT rate. In UBL the test allows a tolerance of less than 1 currency unit (strictly between cbc:TaxableAmount - 1 and cbc:TaxableAmount + 1), while in CII the test requires exact equality after rounding each sum to 2 decimal places. A document fails when the taxable amount in an IGIC rate breakdown does not match that computed sum within the syntax-specific tolerance.
How to fix
In UBL, set cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:TaxableAmount for each IGIC rate to the exact sum of cbc:LineExtensionAmount from lines with cac:Item/cac:ClassifiedTaxCategory/cbc:ID = L and matching cbc:Percent, plus cbc:Amount from cac:AllowanceCharge with cbc:ChargeIndicator=true() and the same category/rate, minus cbc:Amount from allowances with cbc:ChargeIndicator=false(). In CII, set ram:BasisAmount in ram:ApplicableTradeTax to the exact (2-decimal rounded) sum of ram:LineTotalAmount from lines with ram:ApplicableTradeTax/ram:CategoryCode = L and matching ram:RateApplicablePercent, plus ram:ActualAmount from header ram:SpecifiedTradeAllowanceCharge with ram:ChargeIndicator/udt:Indicator=true() and matching category/rate, minus allowances with false. Ensure all relevant line items and document-level charges/allowances use category code L and the correct rate.
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-AF-08.
Validate an invoice against these rules · All release changes