BT-112Invoice total amount with VATBT-113Paid amountBT-114Rounding amountBT-115Amount due for payment
Texte officiel de la règle
[BR-CO-16] Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
Le texte normatif est en anglais ; il est cité tel quel.
Pourquoi cette erreur apparaît
Le montant à payer (BT-115) doit être égal au total TTC (BT-112), diminué du montant déjà payé (BT-113) et augmenté du montant d'arrondi (BT-114). La règle contrôle cac:LegalMonetaryTotal/cbc:PayableAmount par rapport à cbc:TaxInclusiveAmount, cbc:PrepaidAmount et cbc:PayableRoundingAmount (UBL), ou ram:DuePayableAmount par rapport à ram:GrandTotalAmount, ram:TotalPrepaidAmount et ram:RoundingAmount (CII). Elle échoue généralement lorsque le logiciel inscrit le solde restant dû après un paiement partiel sans renseigner le montant déjà payé, ou utilise un signe erroné pour le montant d'arrondi.
Comment corriger
Formule : BT-115 = BT-112 - BT-113 + BT-114, arrondi à 2 décimales ; un BT-113 ou un BT-114 absent compte pour 0. Si un acompte a été reçu, inscrivez-le en valeur positive dans cbc:PrepaidAmount / ram:TotalPrepaidAmount et réduisez d'autant cbc:PayableAmount / ram:DuePayableAmount. N'utilisez cbc:PayableRoundingAmount / ram:RoundingAmount que pour l'arrondi de paiement en espèces, avec le signe de l'ajustement (par exemple -0.02 ou 0.03). Pour une facture entièrement réglée, PrepaidAmount est égal à TaxInclusiveAmount et PayableAmount vaut 0.00.
Exemple (valide)
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">238.00</cbc:TaxInclusiveAmount>
<cbc:PrepaidAmount currencyID="EUR">100.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="EUR">138.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
Ce que le validateur vérifie
Élément vérifié (contexte):
UBL
cac:LegalMonetaryTotalTest (XPath):
(exists(cbc:PrepaidAmount) and not(exists(cbc:PayableRoundingAmount)) and (xs:decimal(cbc:PayableAmount) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and not(exists(cbc:PayableRoundingAmount)) and xs:decimal(cbc:PayableAmount) = xs:decimal(cbc:TaxInclusiveAmount)) or (exists(cbc:PrepaidAmount) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = xs:decimal(cbc:TaxInclusiveAmount)))CII
//ram:SpecifiedTradeSettlementHeaderMonetarySummationTest (XPath):
(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))
Corriger automatiquement
Cette erreur peut être corrigée automatiquement : après confirmation, le vérificateur recalcule les totaux et la TVA à partir des lignes.
La même vérification par API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRègles liées
BR-CO-15Le total TTC (BT-112) n'est pas égal au total HT plus la TVABR-CO-25Montant à payer sans date d'échéance ni conditions de paiementBR-14Une facture doit comporter le montant total TTCBR-15Une facture doit comporter le montant à payerBR-DEC-14Le nombre maximal de décimales pour le montant total TTC est 2BR-DEC-16Le nombre maximal de décimales pour le montant payé est 2BR-DEC-17Le nombre maximal de décimales pour le montant d'arrondi est 2BR-DEC-18Le nombre maximal de décimales pour le montant à payer est 2
Questions fréquentes
Que signifie BR-CO-16 ?
BR-CO-16 est une règle de base en 16931 : Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
Ma facture sera-t-elle rejetée à cause de BR-CO-16 ?
Oui. BR-CO-16 est classée « bloquante » ; les validateurs (plateformes agréées, points d'accès Peppol, KoSIT, KSeF) rejettent la facture tant qu'elle n'est pas corrigée.
À quels formats s'applique BR-CO-16 ?
Toute facture EN 16931 : Factur-X / ZUGFeRD 2.x (profils EN 16931, EXTENDED, XRECHNUNG), XRechnung, Peppol BIS Billing 3.0 et les CIUS nationales. Syntaxe : UBL et CII.
Source: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Catalogue généré à partir des jeux de règles officiels le 2026-10-15.