Invoice line VAT rate for reverse charge is zero

Error BR-AE-05 EN 16931

In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) 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

For an invoice line with VAT category code AE, RateApplicablePercent has a value other than zero. The invoice line VAT rate BT-152 must be zero.

What the rule means

Code AE denotes reverse charge. The VAT rate for this invoice line must be zero.

Affected fields BG-25 BT-151 BT-152
Please set the invoice line VAT rate to zero for reverse charge

The invoice line is marked with reverse-charge code AE but has a non-zero VAT rate. You can adjust the rate for this line.

What to do
  1. Check that the invoice line CategoryCode is set to AE.
  2. Set RateApplicablePercent to 0 for this ApplicableTradeTax.
  3. Check the TaxCategoryCode and TaxPercent properties of the TradeLineItem.
  4. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:ApplicableTradeTax>
  <ram:CategoryCode>AE</ram:CategoryCode>
  <ram:RateApplicablePercent>20</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CategoryCode>AE</ram:CategoryCode>
  <ram:RateApplicablePercent>0</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
Check in FactoorSharp
  • TradeLineItem.TaxCategoryCode (BT-151)
  • TradeLineItem.TaxPercent (BT-152)
  • TradeLineItem.TaxType (BT-151-0)
  • TaxCategoryCodes (BT-151)
Technical details

For CategoryCode AE, the test checks whether the child element RateApplicablePercent has the numeric value 0.

Where the rule applies

The rule applies to ApplicableTradeTax of an invoice line IncludedSupplyChainTradeLineItem when its CategoryCode is AE.

Context (rule/@context)
//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ ram:ApplicableTradeTax[ram:CategoryCode = 'AE']
Test expression (assert/@test)
ram:RateApplicablePercent = 0