Technique

Erreur BR-CO-16 EN16931 : BT-115 ≠ BT-112 − BT-113 + BT-114 — acomptes, arrondis

2 min de lecture Par FacturX API

BR-CO-16 impose BT-115 = BT-112 − BT-113 + BT-114. PrepaidAmount et PayableRoundingAmount ont une cardinalité 0..1 — pas besoin de les exposer s'ils valent zéro.

En bref

  • BR-CO-16 contrôle que BT-115 (Amount due for payment) = BT-112BT-113 + BT-114.
  • BT-113 (TotalPrepaidAmount, acomptes) et BT-114 (PayableRoundingAmount, arrondi) ont une cardinalité 0..1 — optionnels.
  • Erreur classique : l’ERP déduit l’acompte du total mais ne l’expose pas dans BT-113.
  • Si ces deux champs sont absents, l’égalité devient simplement BT-115 = BT-112.
  • Réparable automatiquement par /repair.

Ce que l’erreur veut dire

BR-CO-16 (Schematron EN16931, aligné Peppol) impose que DuePayableAmount (BT-115, montant à payer) soit strictement égal à GrandTotalAmount (BT-112) moins TotalPrepaidAmount (BT-113) plus PayableRoundingAmount (BT-114). BT-113 et BT-114 ont une cardinalité 0..1 — ils ne sont PAS obligatoires. S’ils sont absents, l’égalité se réduit à BT-115 = BT-112.

Quand cette erreur arrive

Survient quand : (a) un acompte est appliqué mais TotalPrepaidAmount reste vide ; (b) PayableRoundingAmount ajuste le total mais n’est pas reflété dans BT-115 ; (c) BT-115 est absent alors qu’il est obligatoire (règle BR-15) ; (d) arithmétique simple mal propagée entre l’ERP et l’export XML.

Exemple XML qui déclenche l’erreur

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
  <ram:DuePayableAmount>1000.00</ram:DuePayableAmount>  <!-- ❌ acompte non déclaré -->
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Exemple XML corrigé

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
  <ram:TotalPrepaidAmount>200.00</ram:TotalPrepaidAmount>
  <ram:DuePayableAmount>1000.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Correction manuelle

Si la facture a un acompte, l’exposer via <ram:TotalPrepaidAmount> ET réduire DuePayableAmount en conséquence. Si aucun acompte ni arrondi de paiement, BT-115 = BT-112 — ne pas ajouter des TotalPrepaidAmount=0.00 et PayableRoundingAmount=0.00 artificiels (ils sont optionnels).

Réparable automatiquement par /repair ?

Oui — l’endpoint /repair corrige automatiquement cette erreur dans la majorité des cas.

Et maintenant ?

Réparer mon Factur-X →

curl -X POST https://api.facturxapi.com/api/v1/repair \
  -H "Authorization: Bearer VOTRE_CLE" \
  -F "[email protected]"

Voir aussi

#en16931 #schematron #factur-x #erreurs #validation