Rapprocher le montant de TVA de la catégorie S

Erreur BR-FXEXT-S-09b Factur-X

[BR-FXEXT-S-09b] - Pour chaque valeur différente du taux de la catégorie de TVA (BT-119) pour laquelle le code de catégorie de TVA (BT-118) est égal à « S » (« Taux normal »), Valeur absolue de (montant de taxe de la catégorie de TVA (BT-117) - montant taxable de la catégorie de TVA (BT-116) multiplié par le taux de la catégorie de TVA (BT-119)/100) <= 0,01 * ((Nombre de montants nets de ligne de facture (BT-131) + Nombre de montants de Remise au niveau du document (BT-92) + Nombre de montants de Charges ou Frais au niveau du document (BT-99) + Nombre de montants de frais de service logistique (BT-X-272)), lorsque le code de catégorie de TVA (BT-151, BT-95, BT-102, BT-X-273) est « Taux normal » (S), et que le taux de TVA (BT-152, BT-96, BT-103, BT-X-274) est égal au taux de la catégorie de TVA (BT-119), et uniquement pour les lignes pour lesquelles le « Sous-type de la ligne de facture » (EXT-FR-FE-163 / BT-X-8) a la valeur « DETAIL » ou n'est pas spécifié, ou la même règle mais en tenant également compte des motifs d'exonération en texte (BT-120) et en code (BT-121) dans BG-23 et des motifs d'exonération sur chaque ligne (BT-X-96 / BT-X-97), sur les Remises au niveau du document (BT-173 / BT-174), sur les Charges ou Frais au niveau du document (BT-175 / BT-176) et sur les frais de service logistique (BT-X-591 / BT-X-592). L'une des deux règles doit être suivie, étant entendu que seule la seconde devra finalement être suivie.

Règle obligatoire : tant qu'elle n'est pas respectée, la facture est invalide et sera rejetée par les validateurs.
Ce qui ne va pas

Le montant de TVA indiqué dans ram:CalculatedAmount diffère trop du résultat de ram:BasisAmount multiplié par ram:RateApplicablePercent et arrondi à deux décimales. Le test tolère 0,01 par ligne de facture, remise, majoration ou service logistique pris en compte ; il accepte un décompte avec ou sans rapprochement des données d’exonération.

Ce que signifie la règle

Pour la catégorie S, la TVA est calculée à partir de la base imposable et du taux applicable. Le montant de TVA indiqué doit correspondre à ce résultat dans la tolérance d’arrondi autorisée.

Veuillez rapprocher le montant de TVA de la catégorie `S`

Le montant de TVA de catégorie S ne correspond pas suffisamment au calcul fondé sur la base imposable et le taux. Vérifiez également quels montants associés sont pris en compte dans le calcul de la tolérance.

Que faire ?
  1. Calculez le montant de TVA attendu à partir de ram:BasisAmount et de ram:RateApplicablePercent, puis comparez-le à ram:CalculatedAmount.
  2. Vérifiez TaxCategoryCodes, TradeLineItem.LineTotalAmount et AbstractTradeAllowanceCharge.ActualAmount pour les montants pris en compte dans le calcul de la tolérance.
  3. Vérifiez que AssociatedDocument.LineStatusReasonCode ou LineStatusReasonCodes vaut DETAIL ou est absent, et que la catégorie, le taux et, le cas échéant, les données d’exonération correspondent.
  4. Générez de nouveau la facture et vérifiez-la à nouveau.
À vérifier dans FactoorSharp
  • TaxCategoryCodes (BT-151; BT-95; BT-102; BT-118)
  • AbstractTradeAllowanceCharge.ActualAmount (Document level allowance: BT-92; Document level charge: BT-99)
  • AssociatedDocument.LineStatusReasonCode (BT-X-8)
  • LineStatusReasonCodes (BT-X-8)
  • TradeLineItem.LineTotalAmount (BT-131)
Bon à savoir

Pour la tolérance d’arrondi, les montants peuvent être comptés avec des données d’exonération correspondantes ou tous les montants de même catégorie et de même taux peuvent être comptés.

Détails techniques

Compare ram:CalculatedAmount à ram:BasisAmount multiplié par ram:RateApplicablePercent et arrondi à deux décimales. La tolérance est de 0,01 multiplié par le nombre d’entrées pertinentes ; le test prévoit deux modes de décompte, avec ou sans filtre sur les données d’exonération.

Où la règle s'applique

La règle s’applique à ram:ApplicableTradeTax de catégorie S dans ram:ApplicableHeaderTradeSettlement et vérifie le calcul du montant de TVA à partir de la base imposable et du taux.

Message d'origine du Schematron
[BR-FXEXT-S-09b] - For each different value of VAT rate (BT-119) where the VAT category code (BT-118) is equal to “S” ("Standard rated"), Absolute Value of (VAT  category  tax  amount  (BT-117) - VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119)/100) <= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level allowance amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Standard rated " (S), and the VAT rate (BT-152, BT-96, BT-103, BT-X-274) equals the VAT category rate (BT-119), and only for lines where the "Subtype of invoice line item" (EXT-FR-FE-163 / BT-X-8) has the value "DETAIL" or is not specified or the same rule but also taking into account the exemption reasons in Text (BT-120) and Code (BT-121) in BG-23 and the exemption reasons on each line (BT-X-96 / BT-X-97), on Document level Allowances (BT-173 / BT-174) and on Document Level Charges (BT-175 / BT-176) and on Service logistic charges (BT-X-591 / BT-X-592). One of the two rules must be followed, bearing in mind that ultimately only the second one will have to be followed.
Contexte (rule/@context)
//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='S']
Expression de contrôle (assert/@test)
( for $rate in xs:decimal(ram:RateApplicablePercent), $exempReasonText in normalize-space(ram:ExemptionReason), $exempReasonCode in normalize-space(ram:ExemptionReasonCode), $basisAmount in xs:decimal(ram:BasisAmount), $nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:IncludedSupplyChainTradeLineItem[ ( not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ) and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = 'S' and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate and normalize-space(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ ram:ExemptionReason) = $exempReasonText ])), $nbLineItemsini in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:IncludedSupplyChainTradeLineItem[ ( not(ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode) or ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode = 'DETAIL' ) and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = 'S' and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate ])), $nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:CategoryTradeTax/ram:CategoryCode='S' and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate and normalize-space(ram:CategoryTradeTax/ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:CategoryTradeTax/ram:ExemptionReason) = $exempReasonText ])), $nbAllowancesOrChargesini in xs:decimal(count(/rsm:CrossIndustryInvoice/ rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeAllowanceCharge[ ram:CategoryTradeTax/ram:CategoryCode='S' and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate ])), $nblogisticCharge in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ ram:AppliedTradeTax/ram:CategoryCode='S' and ram:AppliedTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate and normalize-space(ram:AppliedTradeTax/ram:ExemptionReasonCode) = $exempReasonCode and normalize-space(ram:AppliedTradeTax/ram:ExemptionReason) = $exempReasonText ])), $nblogisticChargeini in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ ram:AppliedTradeTax/ram:CategoryCode='S' and ram:AppliedTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate ])), $vATAmountBT117 in xs:decimal(ram:CalculatedAmount), $calculatedBT117 in xs:decimal(round($basisAmount * $rate div 100 * 100) div 100) return (abs($vATAmountBT117 - $calculatedBT117) le 0.01 * ($nbLineItems + $nbAllowancesOrCharges + $nblogisticCharge)) or (abs($vATAmountBT117 - $calculatedBT117) le 0.01 * ($nbLineItemsini + $nbAllowancesOrChargesini + $nblogisticChargeini)) )