Aller au contenu

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

PEPPOL-EN16931-R043 : Écrire l'indicateur de frais sous la forme true ou false, et non 1 ou 0

Peppol veut que cbc:ChargeIndicator des remises et frais du document et des lignes soit écrit true ou false. Le schéma autorise aussi 1 et 0 ; Peppol, non.

Peppol BIS BillingErreur : le document n'est pas valideRemises et frais

Sur cette page

La réponse courte

PEPPOL-EN16931-R043 échoue lorsque cbc:ChargeIndicator d'un cac:AllowanceCharge au niveau du document ou de la ligne contient autre chose que les mots true ou false. Écrivez true pour des frais et false pour une remise. Dans l'exemple enregistré, les frais du document étaient écrits 1.

Le schéma UBL type l'élément comme un booléen, qui autorise aussi 1 et 0 : l'étape XSD passe donc, et l'étape EN 16931 lit 1 comme des frais. Seule l'étape Peppol s'y oppose.

Ce que la règle vérifie

La règle s'exécute sur chaque cac:AllowanceCharge placé directement sous la racine du document et directement sous chaque cac:InvoiceLine ou cac:CreditNoteLine. Elle retire les espaces autour du texte de cbc:ChargeIndicator et accepte exactement true ou false, en minuscules.

Les espaces autour de la valeur sont tolérés : true avec des espaces a passé toutes les étapes lors d'un essai.

Les graphies que le schéma refuse n'atteignent jamais cette règle. Lors d'un essai, TRUE a échoué à l'étape XSD, et les étapes EN 16931 et Peppol ont été ignorées.

La remise sur le prix dans cac:Price est hors de son champ. Un 1 ou un 0 à cet endroit est signalé par PEPPOL-EN16931-R044, qui n'accepte que false.

Les règles EN 16931 comparent l'indicateur comme un booléen : elles voient donc toujours 1 comme des frais et 0 comme une remise. Lors d'un essai où son motif avait été retiré, les frais écrits 1 ont signalé BR-CO-22 et BR-38 en plus de cette règle.

TermeSignificationÉlément UBL
-Indicateur de remise ou de frais, niveau documentcac:AllowanceCharge/cbc:ChargeIndicator
-Indicateur de remise ou de frais, niveau lignecac:InvoiceLine/cac:AllowanceCharge/cbc:ChargeIndicator (cac:CreditNoteLine 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 sérialiseur écrit les booléens sous la forme 1 et 0, ce que le schéma XML autorise et que certaines bibliothèques font par défaut.
  • La valeur est copiée depuis une colonne de type bit ou un indicateur entier de la base de données, sans conversion.
  • Un générateur piloté par la XSD produit la forme lexicale de booléen qu'il préfère.
  • L'indicateur est construit par un formatage de chaîne qui donne True ou TRUE, ce qui échoue encore plus tôt, au schéma.

Comment corriger le document

  1. Mappez l'indicateur explicitement lors de l'écriture du XML : des frais deviennent le littéral true, une remise le littéral false.
  2. Appliquez le même mapping aux entrées au niveau de la ligne, et écrivez false sur la remise sur le prix dans cac:Price.
  3. Vérifiez le sens autant que la graphie. Lorsque la remise au niveau du document de la facture d'exemple détaillée a été marquée true par erreur, elle a été comptée comme des frais : BR-CO-11, BR-CO-12 et BR-S-08 ont échoué, et son code de remise 95 a été rejeté comme code de frais.
  4. Validez à nouveau après la modification. Sur une ligne, la graphie corrigée permet aussi au calcul de ligne Peppol de prendre l'entrée en compte.

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 : les frais du document ont 1 comme indicateur

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>1</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
  <!-- percentage, amount, base amount and tax category omitted from this fragment -->
</cac:AllowanceCharge>

Fragment de la facture corrigée : l'indicateur est le mot true

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReasonCode>CG</cbc:AllowanceChargeReasonCode>
  <cbc:AllowanceChargeReason>Example document charge</cbc:AllowanceChargeReason>
  <!-- percentage, amount, base amount and tax category omitted from this fragment -->
</cac:AllowanceCharge>

Seul l'indicateur des frais du document diffère : 1 dans la facture en échec, true dans la facture corrigée. Le document en échec ne signale que PEPPOL-EN16931-R043. L'étape XSD accepte 1 comme booléen, et l'étape EN 16931 le traite comme des frais : le total des frais de 3.50 et la base imposable au taux normal y restent donc cohérents.

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. Lors d'un essai, un avoir dont les frais du document étaient écrits 1 n'a signalé que cette règle.
  • Signalée uniquement par l'étape Peppol, comme constat bloquant (fatal).
  • Sur une ligne, la mauvaise graphie peut entraîner un second constat Peppol. Lorsque la remise de ligne de la facture d'exemple détaillée a été écrite 0, PEPPOL-EN16931-R120 a aussi échoué, car le contrôle du montant net de la ligne ne soustrait que les remises écrites false et n'ajoute que les frais écrits true.

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 PEPPOL-EN16931-R043 (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.