VAT rate of 0 for a reverse-charge charge

Error BR-AE-07 EN 16931

In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) 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 reverse-charge charge has no ram:RateApplicablePercent, or its value is not 0. The VAT rate must be exactly 0.

What the rule means

Category AE indicates reverse charge. The VAT rate for the charge must be 0.

Affected fields BG-21 BT-102 BT-103
Please set the VAT rate for the reverse-charge charge to 0

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

What to do
  1. Check the charge’s tax rate in AddTradeCharge(...).
  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>true</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CategoryTradeTax>
    <ram:CategoryCode>AE</ram:CategoryCode>
    <ram:RateApplicablePercent>10</ram:RateApplicablePercent>
  </ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
✓ Correct
<ram:SpecifiedTradeAllowanceCharge>
  <ram:ChargeIndicator>
    <udt:Indicator>true</udt:Indicator>
  </ram:ChargeIndicator>
  <ram:CategoryTradeTax>
    <ram:CategoryCode>AE</ram:CategoryCode>
    <ram:RateApplicablePercent>0</ram:RateApplicablePercent>
  </ram:CategoryTradeTax>
</ram:SpecifiedTradeAllowanceCharge>
Check in FactoorSharp
  • TaxCategoryCodes (BT-102)
  • FacturXInvoice.AddTradeCharge(basisAmount, currency, actualAmount, chargePercentage, reason, taxTypeCode, taxCategoryCode, taxPercent, reasonCode) (BG-21)
  • FacturXInvoice.AddTradeeCharge(basisAmount, currency, actualAmount, chargePercentage, reason, taxTypeCode, taxCategoryCode, taxPercent, reasonCode) (BG-21)
  • FacturXInvoice.GetTradeCharges() (BG-21)
  • AbstractTradeAllowanceCharge (Document level charge: BG-21)
Technical details

The XPath filters charges with ram:CategoryCode = 'AE' and requires ram:RateApplicablePercent = 0.

Where the rule applies

The rule applies to a document-level charge in ram:SpecifiedTradeAllowanceCharge whose ram:ChargeIndicator is true and whose ram:CategoryCode is AE.

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