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.
| Terme | Signification | Élément UBL |
|---|---|---|
| - | Indicateur de remise ou de frais, niveau document | cac:AllowanceCharge/cbc:ChargeIndicator |
| - | Indicateur de remise ou de frais, niveau ligne | cac: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
TrueouTRUE, ce qui échoue encore plus tôt, au schéma.
Comment corriger le document
- Mappez l'indicateur explicitement lors de l'écriture du XML : des frais deviennent le littéral
true, une remise le littéralfalse. - Appliquez le même mapping aux entrées au niveau de la ligne, et écrivez
falsesur la remise sur le prix danscac:Price. - 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
truepar erreur, elle a été comptée comme des frais :BR-CO-11,BR-CO-12etBR-S-08ont échoué, et son code de remise95a été rejeté comme code de frais. - 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é
- La facture en erreur signale PEPPOL-EN16931-R043. Le document corrigé passe toutes les étapes de validation sans constat.Télécharger le XML en erreurTélécharger le XML corrigé
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 à
Invoiceet àCreditNote. Lors d'un essai, un avoir dont les frais du document étaient écrits1n'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-R120a aussi échoué, car le contrôle du montant net de la ligne ne soustrait que les remises écritesfalseet n'ajoute que les frais écritstrue.
Règles liées
- PEPPOL-EN16931-R044 couvre l'indicateur de la remise sur le prix, qui doit être false
- PEPPOL-EN16931-R120 exclut de son calcul une remise ou des frais de ligne qui ne sont pas écrits true ou false
- BR-CO-22 est l'une des règles EN 16931 qui traitent toujours un indicateur à 1 comme des frais
- Parcourir toutes les règles de la référence
- Contexte (en anglais) : How Peppol invoice validation actually works
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.

