VAT amount for intra-community supply is zero

Error BR-IC-09 EN 16931

The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" 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

In a VAT breakdown with CategoryCode K, the amount in CalculatedAmount is not zero. For this category, the VAT amount BT-117 must be zero.

What the rule means

Code K denotes an intra-community supply. The corresponding VAT amount in the VAT breakdown must therefore be zero.

Affected fields BT-117 BG-23 BT-118
Please set the VAT amount for an intra-community supply to zero

The VAT breakdown is marked as an intra-community supply but contains a non-zero tax amount. You can adjust the amount in the invoice.

What to do
  1. Check the CategoryCode and the amount in CalculatedAmount of the affected ApplicableTradeTax.
  2. Set the tax amount for code K to 0.
  3. Check the call to AddApplicableTradeTax(...).
  4. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>25</ram:CalculatedAmount>
  <ram:CategoryCode>K</ram:CategoryCode>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CalculatedAmount>0</ram:CalculatedAmount>
  <ram:CategoryCode>K</ram:CategoryCode>
</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

The rule applies when CategoryCode has the value K and checks whether the sibling element CalculatedAmount has the numeric value 0.

Where the rule applies

The rule applies to the CategoryCode of a document-level VAT breakdown ApplicableTradeTax when the code is K.

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