Provide the VAT rate for the VAT breakdown

Error BR-48 EN 16931

Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.

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

The VAT breakdown is missing ram:RateApplicablePercent (BT-119), even though the VAT category is not O. For category O, the amount is not subject to VAT and this rule does not require a rate.

What the rule means

The VAT rate (BT-119) states the percentage for the VAT category. For amounts in category O, which are not subject to VAT, this rule does not require a rate.

Affected fields BG-23 BT-119
Please add the rate for the VAT category

A VAT breakdown is missing its rate, and the specified category is not O. Add the percentage, or use category O if the amount is not subject to VAT.

What to do
  1. Find the relevant ram:ApplicableTradeTax.
  2. Add ram:RateApplicablePercent, or set ram:CategoryCode to O if the amount is not subject to VAT.
  3. Check the call to AddApplicableTradeTax(...).
  4. Generate the invoice again and validate it once more.
What it looks like
✗ Triggers the message
<ram:ApplicableTradeTax>
  <ram:CategoryCode>S</ram:CategoryCode>
</ram:ApplicableTradeTax>
✓ Correct
<ram:ApplicableTradeTax>
  <ram:CategoryCode>S</ram:CategoryCode>
  <ram:RateApplicablePercent>20</ram:RateApplicablePercent>
</ram:ApplicableTradeTax>
Check in FactoorSharp
  • 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 test passes if ram:RateApplicablePercent is present or ram:CategoryCode has the value O.

Where the rule applies

The rule applies to each ram:ApplicableTradeTax within the document-level settlement.

Context (rule/@context)
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax
Test expression (assert/@test)
(ram:RateApplicablePercent) or (ram:CategoryCode = 'O')