Set the tax amount to zero for VAT-exempt supplies

Error BR-E-09 EN 16931

The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).

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

For a VAT breakdown in category E, the tax amount in CalculatedAmount is not zero. E denotes supplies exempt from VAT.

What the rule means

For the VAT-exempt category, no tax amount is calculated in the VAT breakdown; the amount must therefore be zero.

Affected fields BT-117 BG-23 BT-118
Please set the tax amount to zero for VAT-exempt supplies

The VAT breakdown is marked as exempt from VAT (E), but its tax amount is not zero. You can adjust the amount in the invoice and validate it again.

What to do
  1. Set CalculatedAmount to 0 in the VAT breakdown with CategoryCode E.
  2. Check the tax information supplied through AddApplicableTradeTax(...).
  3. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:ApplicableTradeTax>
  <ram:CategoryCode>E</ram:CategoryCode>
  <ram:CalculatedAmount>5.00</ram:CalculatedAmount>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CategoryCode>E</ram:CategoryCode>
  <ram:CalculatedAmount>0</ram:CalculatedAmount>
</ram:ApplicableTradeTax>
Check in FactoorSharp
  • TaxCategoryCodes (BT-118)
  • FacturXInvoice.AddApplicableTradeTax(basisAmount, percent, taxAmount, typeCode, categoryCode, allowanceChargeBasisAmount, exemptionReasonCode, exemptionReason, lineTotalBasisAmount) (BG-23)
  • FacturXInvoice.AnyApplicableTradeTaxes() (BG-23)
  • FacturXInvoice.GetApplicableTradeTaxes() (BG-23)
  • FacturXInvoice.Taxes (BG-23)
Technical details

For CategoryCode E, the test checks whether the associated CalculatedAmount is numerically equal to zero.

Where the rule applies

The rule applies to ApplicableTradeTax in the VAT breakdown when CategoryCode has the value E.

Context (rule/@context)
//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ ram:CategoryCode[. = 'E']
Test expression (assert/@test)
../ram:CalculatedAmount = 0