Référence
Export MarkdownPEPPOL-EN16931-R120 Le montant net de ligne de facture doit être égal à la quantité multipliée par le prix net ajusté des remises et frais de ligne
Conformément à la règle Peppol PEPPOL-EN16931-R120, le montant net de la ligne dans BT-131 (LineExtensionAmount) doit correspondre à la formule : montant net = quantité facturée × (prix net ÷ quantité de base) + total des frais de ligne − total des remises de ligne. Le Schematron Peppol accepte un écart de ±0,02 pour absorber les arrondis. Les causes fréquentes d’erreur sont la perte des remises de ligne lors de la conversion en XML, l’arrondi prématuré des prix unitaires ou l’omission de la quantité de base (BT-149).
Description du problème
ERREUR
Règle Peppol BIS Billing 3.0 (OpenPeppol)
Contexte et importance
PEPPOL-EN16931-R120 échoue dès que la valeur BT-131 exportée s’écarte de plus de 0,02 du montant recalculé à partir de la quantité, du prix net, de la quantité de base et des remises et frais de ligne. Causes typiques : une remise de ligne perdue lors de la conversion, un prix unitaire arrondi trop tôt à 2 décimales ou une quantité de base (BT-149) non prise en compte.
Solution
Dans votre ERP ou votre chaîne de conversion, conservez la précision décimale des prix unitaires et intégrez toutes les remises et frais de ligne dans le calcul de BT-131 avant l’arrondi final à 2 décimales ; divisez par la quantité de base (BT-149) si elle est renseignée. En UBL 2.1, renseignez <cbc:LineExtensionAmount currencyID="EUR">190.00</cbc:LineExtensionAmount> pour une quantité 2 à 100.00 avec 10.00 de remise.
Actions rapides
Exemples valides
- Quantité 2 x Prix unitaire 100.00 EUR moins Remise de ligne 10.00 EUR donne BT-131 = 190.00 EUR
- Quantité 50 x Prix unitaire 1.2550 EUR (62.75 EUR) donne BT-131 = 62.75 EUR
Exemples invalides
- Quantité 2 x Prix 100.00 EUR moins Remise 10.00 EUR = 190.00 EUR, mais BT-131 est exporté à 200.00 EUR car la remise a été oubliée dans le calcul
- La formule donne 190.00 EUR mais BT-131 est exporté à 189.90 EUR en raison d’un mauvais arrondi
Exemples de code
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">190.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
</cac:AllowanceCharge>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine><cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="H87">2</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>false</cbc:ChargeIndicator>
<cbc:Amount currencyID="EUR">10.00</cbc:Amount>
</cac:AllowanceCharge>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>