Aller au contenu

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

BR-29 : Corriger une période de facturation qui se termine avant de commencer

Lorsque la période de facturation au niveau du document donne les deux dates, cbc:EndDate doit tomber le même jour que cbc:StartDate ou plus tard.

EN 16931Erreur : le document n'est pas valideChamps de base

Sur cette page

La réponse courte

BR-29 échoue lorsque la cac:InvoicePeriod située sous la racine du document a un cbc:EndDate antérieur à son cbc:StartDate. Écrivez le premier jour de la période couverte par la facture comme date de début et le dernier jour comme date de fin, en reprenant les deux de l'enregistrement de facturation.

Une période d'un jour est autorisée : le début et la fin peuvent être la même date. La règle ne proteste que lorsque la fin vient en premier.

Ce que la règle vérifie

La règle lit la cac:InvoicePeriod au niveau du document, et seulement lorsqu'elle contient à la fois un cbc:StartDate et un cbc:EndDate. Une période ne comportant qu'une des deux dates n'est pas comparée du tout.

Les deux valeurs sont comparées comme des dates calendaires, pas comme du texte. La date de fin passe lorsqu'elle tombe le même jour que la date de début ou n'importe quel jour ultérieur ; lors d'un essai, une période commençant et se terminant le 2026-08-01 a été acceptée.

Les périodes de ligne sont hors du champ de cette règle. Lors d'un essai, une cac:InvoicePeriod de ligne avec ses dates interverties a signalé BR-30, son équivalent au niveau de la ligne, et non BR-29.

Une valeur qui n'est pas du tout une date, comme 31/08/2026, échoue à l'étape XSD, et les règles métier, celle-ci comprise, sont alors ignorées.

TermeSignificationÉlément UBL
BT-73Date de début de la période de facturationcac:InvoicePeriod/cbc:StartDate
BT-74Date de fin de la période de facturationcac:InvoicePeriod/cbc:EndDate

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 :

  • Les valeurs de début et de fin sont affectées chacune à l'élément de l'autre dans le modèle d'export.
  • Les dates stockées sous forme de texte sont analysées avec le jour et le mois inversés : une période du 5 janvier au 2 février, stockée sous la forme 05/01/2026 et 02/02/2026, devient du 1er mai au 2 février lorsque le mois est lu en premier.
  • La date de fin est calculée à partir de la date de début plus une durée, et un abonnement résilié ou annulé produit une durée nulle ou négative.
  • Un avoir copie la période de la facture qu'il corrige, mais renseigne le début avec l'ancienne date de fin et la fin avec l'ancienne date de début.

Comment corriger le document

  1. Trouvez d'où vient la période de facturation : la durée de l'abonnement, les dates de prestation ou le cycle de facturation.
  2. Écrivez le premier jour de cette période dans cac:InvoicePeriod/cbc:StartDate et le dernier jour dans cac:InvoicePeriod/cbc:EndDate, tous deux au format YYYY-MM-DD.
  3. Si les dates arrivent sous forme de texte, analysez-les avec un format explicite correspondant à la source, jamais avec un format régional par défaut.
  4. Si l'enregistrement source lui-même est erroné, corrigez-le à la source. Intervertir les deux valeurs dans le XML n'est correct que si elles ont simplement été écrites dans les mauvais éléments.
  5. Vérifiez les éventuelles périodes de ligne par rapport à la période corrigée du document : Peppol rejette une période de ligne qui commence avant elle (PEPPOL-EN16931-R110) ou se termine après elle (PEPPOL-EN16931-R111).

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 : la période va du 31 août en remontant au 1er août

<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:InvoicePeriod>
  <cbc:StartDate>2026-08-31</cbc:StartDate>
  <cbc:EndDate>2026-08-01</cbc:EndDate>
</cac:InvoicePeriod>

Fragment de la facture corrigée : la période commence le 1er août et se termine le 31 août

<cbc:BuyerReference>BUYER-REF-001</cbc:BuyerReference>
<cac:InvoicePeriod>
  <cbc:StartDate>2026-08-01</cbc:StartDate>
  <cbc:EndDate>2026-08-31</cbc:EndDate>
</cac:InvoicePeriod>

Les deux dates ont échangé leurs places : la facture corrigée fait commencer la période le 2026-08-01 et la termine le 2026-08-31. Rien d'autre ne diffère, et BR-29 est le seul constat signalé par le document en échec ; les étapes XSD et Peppol réussissent, car chaque date est bien formée en elle-même et la facture n'a pas de période de ligne.

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 à Invoice qu'à CreditNote en UBL. Lors d'un essai, un avoir avec la même période inversée a signalé BR-29 sur sa cac:InvoicePeriod.
  • C'est une règle EN 16931, signalée à l'étape EN 16931.
  • Les périodes de ligne ont leur propre règle, BR-30, qui fait la même comparaison dans chaque cac:InvoiceLine ou cac:CreditNoteLine.
  • Une date écrite avec un suffixe de fuseau horaire, comme 2026-08-31Z, passe le XSD mais est rejetée à l'étape Peppol par PEPPOL-EN16931-F001.

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

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