Aller au contenu

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

BR-CO-16 : Corriger un montant à payer qui ne découle pas du total TVA comprise

Le montant à payer doit être égal au total TVA comprise, moins le montant payé d'avance, plus le montant d'arrondi, à deux décimales.

EN 16931Erreur : le document n'est pas valideTotaux

Sur cette page

La réponse courte

BR-CO-16 échoue lorsque cbc:PayableAmount n'est pas égal à cbc:TaxInclusiveAmount moins cbc:PrepaidAmount plus cbc:PayableRoundingAmount, tous dans cac:LegalMonetaryTotal. Recalculez le montant à payer à partir de ces valeurs telles qu'elles figurent dans le XML.

Si le montant à payer est juste et reflète un paiement déjà reçu ou un arrondi de caisse, l'élément manquant est généralement celui qui l'explique. Envoyez le montant payé d'avance ou le montant d'arrondi plutôt que de ramener de force le montant à payer au total.

Ce que la règle vérifie

La règle lit quatre éléments de cac:LegalMonetaryTotal et rien d'autre. Elle exige que le montant à payer moins le montant d'arrondi soit égal au total TVA comprise moins le montant payé d'avance, calculés à deux décimales. La comparaison est exacte : un montant à payer de 70.01 alors que 70.00 est attendu échoue.

Le montant payé d'avance et le montant d'arrondi sont chacun facultatifs, et un montant omis compte pour rien. Si les deux sont omis, le montant à payer doit être égal au total TVA comprise. Envoyer l'un ou l'autre à 0.00 donne le même résultat que l'omettre.

Le montant d'arrondi est ajouté : son signe compte donc. Avec un total TVA comprise de 80.20 et 10.00 payés d'avance, un montant d'arrondi de -0.20 va avec un montant à payer de 70.00, et un montant d'arrondi de 0.20 avec 70.40.

Le montant à payer n'a pas à être positif. Une facture entièrement payée d'avance avec 0.00 à payer passe, tout comme un trop-perçu qui laisse un montant à payer négatif.

TermeSignificationÉlément UBL
BT-115Montant à payercac:LegalMonetaryTotal/cbc:PayableAmount
BT-112Montant total de la facture TVA comprisecac:LegalMonetaryTotal/cbc:TaxInclusiveAmount
BT-113Montant payécac:LegalMonetaryTotal/cbc:PrepaidAmount
BT-114Montant d'arrondicac:LegalMonetaryTotal/cbc:PayableRoundingAmount

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 montant à payer est le solde ouvert de la comptabilité après un acompte ou un paiement partiel, mais cbc:PrepaidAmount n'est pas envoyé : la règle attend donc le total TVA comprise complet.
  • Un arrondi de caisse est appliqué au montant à payer sans envoyer cbc:PayableRoundingAmount, ou le montant d'arrondi est envoyé avec le signe opposé.
  • Le montant à payer est rempli à partir du total hors TVA, ou d'un total TVA comprise recalculé par la suite.
  • Un montant payé d'avance est envoyé, mais le montant à payer affiche toujours le total complet.
  • Une valeur fictive ou par défaut arrive dans cbc:PayableAmount parce que le champ source était vide.

Comment corriger le document

  1. Confirmez d'abord le total TVA comprise ; BR-CO-15 le vérifie.
  2. Déterminez à partir des faits commerciaux si quelque chose a été payé d'avance et si le montant à payer a été arrondi. Envoyez cbc:PrepaidAmount et cbc:PayableRoundingAmount en conséquence, ou omettez-les.
  3. Calculez total TVA comprise, moins montant payé d'avance, plus montant d'arrondi, en arithmétique décimale, et arrondissez à deux décimales.
  4. Écrivez le résultat dans cac:LegalMonetaryTotal/cbc:PayableAmount.

L'exemple enregistré n'a ni paiement d'avance ni arrondi ; les deux sont envoyés à 0.00.

Montant à payer attendu : 30.00 - 0.00 + 0.00 = 30.00
Montant à payer envoyé (BT-115) : 999.99, donc BR-CO-16 échoue
À titre de comparaison, l'exemple valide plus complet donne 80.20 - 10.00 + (-0.20) = 70.00

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 : le total TVA comprise est de 30.00 sans rien de payé d'avance, mais le montant à payer indique 999.99

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <!-- allowance and charge totals omitted from this fragment -->
  <cbc:PrepaidAmount currencyID="GBP">0.00</cbc:PrepaidAmount>
  <cbc:PayableRoundingAmount currencyID="GBP">0.00</cbc:PayableRoundingAmount>
  <cbc:PayableAmount currencyID="GBP">999.99</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Fragment de la facture corrigée : le montant à payer est égal au total TVA comprise

<cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="GBP">25.00</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="GBP">25.00</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="GBP">30.00</cbc:TaxInclusiveAmount>
  <!-- allowance and charge totals omitted from this fragment -->
  <cbc:PrepaidAmount currencyID="GBP">0.00</cbc:PrepaidAmount>
  <cbc:PayableRoundingAmount currencyID="GBP">0.00</cbc:PayableRoundingAmount>
  <cbc:PayableAmount currencyID="GBP">30.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>

Seul cbc:PayableAmount diffère : 999.99 dans le document en échec, 30.00 dans le document corrigé. Le document ne signale que cette règle. Le montant à payer est la dernière valeur de la chaîne : aucun autre total n'est calculé à partir de lui.

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 aussi bien aux documents UBL Invoice qu'aux CreditNote ; l'avoir enregistré comportant la même erreur ne signale lui aussi que cette règle.
  • cbc:PayableAmount lui-même ne peut pas être omis. L'étape XSD rejette un document qui ne l'a pas, et les étapes EN 16931 et Peppol sont alors ignorées : cette règle n'est donc jamais atteinte.
  • Une erreur plus haut dans la chaîne apparaît aussi ici : un total TVA comprise erroné signale BR-CO-15 avec cette règle. Corrigez d'abord celle-là.

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-20.

La définition officielle de BR-CO-16 (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.