Aller au contenu

Ironfang Finance - Référence des règles

BR-CL-18 : Utiliser un code de catégorie de TVA autorisé pour l'article de chaque ligne

La catégorie de la ligne dans cac:ClassifiedTaxCategory/cbc:ID doit être un code autorisé comme S, Z ou E. Un code interne comme SR est rejeté.

EN 16931Erreur : le document n'est pas valideTVAListes de codes

Sur cette page

La réponse courte

BR-CL-18 échoue lorsque le cbc:ID du cac:ClassifiedTaxCategory de l'article d'une ligne ne fait pas partie des codes de catégorie de TVA autorisés. Remplacez-le par le code de la catégorie dans laquelle la ligne a réellement été taxée ; dans l'exemple enregistré, la ligne indique SR et le code du taux normal est S.

Tant que la ligne porte un code non reconnu, elle n'appartient à aucune catégorie : la ventilation qui devrait la totaliser ne correspond donc plus, et les règles de catégorie le signalent aussi.

Ce que la règle vérifie

La règle s'exécute sur chaque cbc:ID d'un cac:ClassifiedTaxCategory, qui dans ces documents appartient à l'article de chaque cac:InvoiceLine ou cac:CreditNoteLine. Les ventilations et les remises et frais au niveau du document relèvent de BR-CL-17 à la place.

Elle accepte les dix mêmes codes que la règle de la ventilation : S, Z, E, AE, K, G, O, L, M et B. Les espaces qui entourent la valeur sont retirés, mais la comparaison est sensible à la casse, et un s minuscule sur la ligne a été rejeté lors d'un essai.

Un cbc:ID vide sur la ligne échoue ici, et non au titre de BR-CO-04, qui demande seulement que l'élément existe. Lors d'un essai, il a aussi entraîné PEPPOL-EN16931-R008.

Un code de la liste est accepté même s'il n'est pas la bonne catégorie pour l'article. La cohérence avec la ventilation est testée par les règles de catégorie, pas par celle-ci.

TermeSignificationÉlément UBL
BT-151Code de catégorie de TVA de l'article facturécac:InvoiceLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID (cac:CreditNoteLine/cac:Item/cac:ClassifiedTaxCategory/cbc:ID in a credit note)

Comment une intégration en arrive là

Causes possibles, déduites de la forme de la règle et non d'une utilisation mesurée :

  • Le code fiscal de l'article issu du référentiel produits, comme SR ou ZR, est copié sur la ligne sans traduction.
  • La ventilation est construite au moyen d'une table de correspondance, mais pas les lignes, si bien que les deux portent des jeux de codes différents.
  • Une description comme Standard ou un taux comme 20 est écrit dans le champ du code.
  • Une bibliothèque ou un modèle produit le code en minuscules.

Comment corriger le document

  1. Utilisez l'emplacement du constat pour trouver la ligne et son code actuel.
  2. Traduisez-le en code autorisé de la catégorie dans laquelle l'article a été taxé, avec la même correspondance que pour la ventilation.
  3. Vérifiez que la ligne relève désormais d'une ventilation de même catégorie et de même taux, afin que la base imposable de cette ventilation corresponde à ses lignes.
  4. Rejetez à l'export les codes fiscaux d'article sans correspondance.

Valider votre facture corrigée

Avant et après

Ce sont des extraits, pas des documents complets. Les documents synthétiques complets dont ils proviennent sont liés ci-dessous.

Fragment de la facture en échec : la ligne est codée SR alors que sa ventilation est codée S

<cac:TaxSubtotal>
  <cbc:TaxableAmount currencyID="GBP">25.00</cbc:TaxableAmount>
  <cbc:TaxAmount currencyID="GBP">5.00</cbc:TaxAmount>
  <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>20</cbc:Percent>
    <!-- tax scheme omitted from this fragment -->
  </cac:TaxCategory>
</cac:TaxSubtotal>

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example service</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>SR</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

Fragment de la facture corrigée : la ligne utilise le code S du taux normal

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">2</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example service</cbc:Name>
    <cac:ClassifiedTaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>20</cbc:Percent>
      <cac:TaxScheme>
        <cbc:ID>VAT</cbc:ID>
      </cac:TaxScheme>
    </cac:ClassifiedTaxCategory>
  </cac:Item>
  <!-- price omitted from this fragment -->
</cac:InvoiceLine>

La facture en échec a SR dans le cac:ClassifiedTaxCategory/cbc:ID de l'article de la ligne ; la facture corrigée a S, et rien d'autre ne diffère. Deux règles de ventilation se déclenchent aussi, car avec SR sur l'unique ligne, rien dans le document n'est au taux normal alors que la ventilation l'est toujours. BR-S-01 conteste une ventilation au taux normal sans ligne, remise ou frais au taux normal derrière elle. BR-S-08 ne trouve aucune ligne au taux normal à 20 % pour justifier la base imposable de 25.00. Corriger le code efface les trois constats.

Ce que le validateur a signalé

Enregistré avec phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, le moteur du validateur gratuit, sur des données synthétiques. Un résultat enregistré est une preuve de non-régression pour ces documents ; ce n'est pas une certification.

Où la règle s'applique

  • S'applique à Invoice et CreditNote en UBL. Dans un avoir, la ligne est cac:CreditNoteLine ; avec SR sur sa ligne, l'avoir a signalé les trois mêmes règles lors d'un essai.
  • Les constats associés dépendent de la catégorie que la ligne aurait dû avoir. Lors d'un essai, ZR sur la ligne au taux zéro d'une facture mixte a entraîné BR-Z-08 à la place.
  • Si la ventilation porte le même mauvais code, les règles de catégorie se taisent et c'est BR-CL-17 qui est signalée à côté de cette règle.
  • Signalée par l'étape EN 16931 ; l'exemple enregistré réussit l'étape Peppol.

Portée et source

Rédigé pour Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, tel qu'appliqué aux documents Invoice et CreditNote en UBL 2.1. D'autres profils, syntaxes et versions peuvent définir cet identifiant autrement. Version du catalogue d'aide 2026-09-24.1 : source vérifiée le 2026-09-24, explication mise à jour le 2026-09-24.

La définition officielle de BR-CL-18 (en anglais) contient le texte normatif et le test. Cette page en est notre explication, pas une copie.

Cette aide ne modifie pas le verdict du moteur. Corriger ce constat ne signifie pas que le document passe toutes les étapes de validation, et la validation ne certifie pas la conformité juridique ou fiscale et ne transmet aucun document via Peppol.