Set the Reverse Charge tax amount to zero

Error BR-AE-09 EN 16931

The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" 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 a VAT breakdown in category AE, the tax amount in CalculatedAmount is not zero. AE denotes Reverse Charge.

What the rule means

For Reverse Charge, the tax amount in this VAT breakdown is reported as zero; the transfer of tax liability is not represented as a positive tax amount in this field.

Affected fields BT-117 BG-23 BT-118
Please set the Reverse Charge tax amount to zero

The VAT breakdown is marked as Reverse Charge (AE), 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 AE.
  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:CalculatedAmount>5.00</ram:CalculatedAmount>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CategoryCode>AE</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 AE, 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 AE.

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