Technique

Erreur BR-15 EN16931 : BT-115 DuePayableAmount manquant — différence avec BR-12

2 min de lecture Par FacturX API

BR-15 impose la présence du montant à payer (BT-115, DuePayableAmount). BR-CO-16 vérifie la formule BT-115 = BT-112 − BT-113 + BT-114.

En bref

  • BR-15 (et non BR-12) impose la présence de DuePayableAmount (BT-115) dans SpecifiedTradeSettlementHeaderMonetarySummation.
  • BT-115 peut être nul, positif ou négatif selon le cas (facture classique, avoir, rappel) — la règle de présence reste valable.
  • La formule arithmétique BT-115 = BT-112 − BT-113 + BT-114 relève de BR-CO-16, pas de BR-15.
  • Si BT-115 > 0, BR-CO-25 impose qu’une date d’échéance ou des conditions de paiement soient présentes.
  • Réparable automatiquement par /repair (calcul depuis BT-112 − BT-113 + BT-114).

Ce que l’erreur veut dire

BR-15 (règle cœur EN16931) exige que toute facture déclare DuePayableAmount (BT-115), soit le montant net à régler par le client après application des acomptes et de l’arrondi. Cette règle contrôle la PRÉSENCE du champ, pas sa valeur. La valeur peut être négative (avoir à rembourser), nulle (facture entièrement acompté) ou positive (cas courant).

Quand cette erreur arrive

Apparaît avec : (a) export ERP qui omet la balise pour les avoirs (croyant qu’elle ne s’applique pas — elle s’applique, en négatif) ; (b) facture pro forma générée sans summation complète ; (c) facture purement informative qui omet le bloc paiement ; (d) bug d’export où la summation header est partiellement remplie.

Exemple XML qui déclenche l’erreur

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:LineTotalAmount>1000.00</ram:LineTotalAmount>
  <ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
  <ram:TaxTotalAmount currencyID="EUR">200.00</ram:TaxTotalAmount>
  <ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
  <!-- ❌ pas de DuePayableAmount -->
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Exemple XML corrigé

<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:LineTotalAmount>1000.00</ram:LineTotalAmount>
  <ram:TaxBasisTotalAmount>1000.00</ram:TaxBasisTotalAmount>
  <ram:TaxTotalAmount currencyID="EUR">200.00</ram:TaxTotalAmount>
  <ram:GrandTotalAmount>1200.00</ram:GrandTotalAmount>
  <ram:DuePayableAmount>1200.00</ram:DuePayableAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>

Correction manuelle

Toujours exposer <ram:DuePayableAmount> en dernier dans la summation. Calcul : BT-115 = BT-112 − BT-113 + BT-114. Pour un avoir, valeur négative (ex. -500.00). Pour une facture sans acompte ni arrondi, égale à BT-112.

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