Provide an exemption reason for an intra-community supply

Error BR-IC-10 EN 16931

A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).

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

For category K, both ExemptionReason and ExemptionReasonCode are missing. The VAT breakdown must include an appropriate exemption reason as text or as a code.

What the rule means

The exemption reason explains why the VAT breakdown is treated as an intra-community supply. It must be provided either as the exemption reason text BT-120 or the exemption reason code BT-121.

Affected fields BG-23 BT-118 BT-121 BT-120
Please add the exemption reason for the intra-community supply

No exemption reason is provided for the VAT breakdown with code K. You can add the reason as text or as a code.

What to do
  1. Add either ExemptionReason or ExemptionReasonCode to the affected ApplicableTradeTax.
  2. Provide the exemption reason for the intra-community supply.
  3. Check the call to AddApplicableTradeTax(...).
  4. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:ApplicableTradeTax>
  <ram:CategoryCode>K</ram:CategoryCode>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CategoryCode>K</ram:CategoryCode>
  <ram:ExemptionReason>Intra-community supply</ram:ExemptionReason>
</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 K, the XPath checks whether at least one of the sibling elements ExemptionReason or ExemptionReasonCode is present.

Where the rule applies

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

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