Provide the Reverse Charge reason in the VAT breakdown

Error BR-AE-10 EN 16931

A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (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 AE, both ExemptionReasonCode and ExemptionReason are missing. At least one must state the reason Reverse Charge; the text may use the equivalent standard wording in another language.

What the rule means

The reason for the Reverse Charge VAT category must be stated in the VAT breakdown. The tax treatment is then identifiable from the reason code or reason text.

Affected fields BG-23 BT-118 BT-121 BT-120
Please add the Reverse Charge reason to the VAT breakdown

The VAT breakdown for Reverse Charge (AE) is missing a reason. You can provide either a reason code or a reason text.

What to do
  1. Provide ExemptionReasonCode with the reason code for Reverse Charge, or enter “Reverse charge” or equivalent standard wording in ExemptionReason.
  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>AE</ram:CategoryCode>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CategoryCode>AE</ram:CategoryCode>
  <ram:ExemptionReason>Reverse charge</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 category AE, the test requires at least one of ExemptionReason or ExemptionReasonCode; it does not require both.

Where the rule applies

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

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