VAT rate of 0 for a category Z allowance

Error BR-Z-06 EN 16931

In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).

Mandatory rule: As long as it is violated, the invoice is invalid and will be rejected by validators.
What is wrong

The allowance has no ram:RateApplicablePercent, or its value is not 0. For category Z, the VAT rate must be exactly 0.

What the rule means

Category Z indicates zero-rated VAT. The VAT rate for the allowance must therefore be 0.

Affected fields BG-20 BT-95 BT-96
Please set the VAT rate for the category `Z` allowance to 0

The allowance is assigned to category Z, but its VAT rate is missing or is not 0. You can adjust the value in the allowance details.

What to do
  1. Check the allowance’s tax rate in AddTradeAllowance(...).
  2. Set taxPercent to 0.
  3. Generate the invoice again and validate it once more.
What it looks like
✗ Triggers the message
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CategoryTradeTax>
    <ram:CategoryCode>Z</ram:CategoryCode>
    <ram:RateApplicablePercent>5</ram:RateApplicablePercent>
  </ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
✓ Correct
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>false</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CategoryTradeTax>
    <ram:CategoryCode>Z</ram:CategoryCode>
    <ram:RateApplicablePercent>0</ram:RateApplicablePercent>
  </ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
Check in FactoorSharp
  • TaxCategoryCodes (BT-95)
  • FacturXInvoice.AddTradeAllowance(basisAmount, currency, actualAmount, chargePercentage, reason, taxTypeCode, taxCategoryCode, taxPercent, reasonCode) (BG-20)
  • FacturXInvoice.GetTradeAllowances() (BG-20)
  • FacturXInvoice.TradeAllowanceCharges (BG-20)
  • AbstractTradeAllowanceCharge (Document level allowance: BG-20)
Technical details

The XPath filters allowances with ram:CategoryCode = 'Z' and requires ram:RateApplicablePercent = 0.

Where the rule applies

The rule applies to a document-level allowance in ram:SpecifiedTradeAllowanceCharge whose ram:ChargeIndicator is false and whose ram:CategoryCode is Z.

Context (rule/@context)
//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator='false']/ ram:CategoryTradeTax[ram:CategoryCode = 'Z']
Test expression (assert/@test)
ram:RateApplicablePercent = 0