Aller au contenu

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

PEPPOL-EN16931-R020 : Ajouter l'adresse électronique du vendeur

Peppol exige un cbc:EndpointID dans l'élément Party du vendeur. La règle vérifie seulement que l'élément est présent, pas son schéma ni sa valeur.

Peppol BIS BillingErreur : le document n'est pas valideParties et adresses

Sur cette page

La réponse courte

PEPPOL-EN16931-R020 échoue lorsque cac:AccountingSupplierParty/cac:Party n'a pas d'enfant cbc:EndpointID. Ajoutez l'élément comme premier enfant du cac:Party du vendeur, avec l'adresse électronique du vendeur et un attribut schemeID qui nomme le schéma auquel appartient l'adresse.

EN 16931 considère l'adresse électronique du vendeur comme facultative : l'étape EN 16931 passe donc sans elle. L'exigence vient de Peppol, c'est pourquoi le constat n'apparaît qu'à l'étape Peppol.

Ce que la règle vérifie

La règle s'exécute une fois pour le cac:Party du vendeur et pose une seule question : existe-t-il un élément enfant cbc:EndpointID ? Elle ne lit ni le contenu ni l'attribut schemeID.

Comme il s'agit d'un contrôle de présence, un cbc:EndpointID présent mais vide la satisfait. L'élément vide est signalé à la place par PEPPOL-EN16931-R008 et, s'il porte un schéma dont Peppol contrôle le format de valeur, aussi par la règle de format correspondante : un élément vide avec schemeID="0088" signale PEPPOL-EN16931-R008 et PEPPOL-COMMON-R040, pas cette règle.

Un cbc:EndpointID ailleurs dans le document ne compte pas. L'adresse de l'acheteur est contrôlée séparément par PEPPOL-EN16931-R010, et un document auquel manquent les deux signale les deux règles.

TermeSignificationÉlément UBL
BT-34Adresse électronique du vendeurcac:AccountingSupplierParty/cac:Party/cbc:EndpointID

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 :

  • Le mapping a été écrit pour EN 16931, où l'adresse électronique du vendeur est facultative, et n'a jamais été étendu pour Peppol.
  • L'endpoint du vendeur est conservé dans la configuration du point d'accès ou du locataire plutôt que dans les données de facture, si bien que le générateur de documents n'a rien à émettre.
  • Le générateur omet les éléments dont la valeur source est nulle, et la fiche du vendeur n'a aucune adresse électronique renseignée.
  • L'adresse a été écrite dans cac:PartyIdentification/cbc:ID ou dans cac:Contact/cbc:ElectronicMail, en pensant que l'un ou l'autre tient lieu d'adresse électronique.

Comment corriger le document

  1. Trouvez l'adresse électronique du vendeur et le schéma sous lequel elle est émise, par exemple un GLN sous 0088. Utilisez l'identifiant que le vendeur détient réellement ; n'en empruntez pas un à une autre partie et n'en inventez pas un pour satisfaire la règle.
  2. Émettez cbc:EndpointID comme premier enfant de cac:AccountingSupplierParty/cac:Party, avant cac:PartyIdentification, cac:PartyName et cac:PostalAddress. UBL fixe l'ordre des enfants de cac:Party : si l'élément est placé après cac:PostalAddress, l'étape XSD rejette le document et les étapes EN 16931 et Peppol sont ignorées.
  3. Donnez à l'attribut schemeID la valeur du code de schéma. BR-62 exige l'attribut et BR-CL-25 contrôle le code.
  4. Rendez l'endpoint du vendeur obligatoire là où le vendeur est configuré, afin que le manque soit repéré avant la construction d'un document.

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 : l'élément Party du vendeur commence par son adresse postale et n'a pas d'EndpointID

<cac:AccountingSupplierParty>
  <cac:Party>
    <cac:PostalAddress>
      <cbc:StreetName>1 Example Street</cbc:StreetName>
      <!-- rest of the address omitted from this fragment -->
    </cac:PostalAddress>
    <!-- tax scheme and legal entity omitted from this fragment -->
  </cac:Party>
</cac:AccountingSupplierParty>

Fragment de la facture corrigée : EndpointID est le premier enfant de l'élément Party du vendeur

<cac:AccountingSupplierParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0088">7300010000001</cbc:EndpointID>
    <cac:PostalAddress>
      <cbc:StreetName>1 Example Street</cbc:StreetName>
      <!-- rest of the address omitted from this fragment -->
    </cac:PostalAddress>
    <!-- tax scheme and legal entity omitted from this fragment -->
  </cac:Party>
</cac:AccountingSupplierParty>

Le document corrigé ajoute une ligne, le cbc:EndpointID avec schemeID="0088" en tête du cac:Party du vendeur. Rien d'autre ne diffère. Le document en échec ne signale que PEPPOL-EN16931-R020 ; son étape EN 16931 passe, car BR-62 n'a rien à examiner lorsque l'élément est absent. L'identifiant de l'exemple est une valeur d'exemple, pas un participant enregistré.

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 aux documents UBL Invoice qu'aux CreditNote. Un avoir sans le cbc:EndpointID du vendeur signale le même constat unique.
  • Il s'agit d'une règle Peppol BIS Billing 3.0. Elle signale à l'étape Peppol et n'a pas d'équivalent dans EN 16931.
  • Passer cette règle, et les règles de schéma qui la suivent, montre que l'adresse est bien formée. Le validateur ne recherche pas le participant : il ne dit donc rien sur le fait que le vendeur soit enregistré ou joignable sur le réseau Peppol.

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

La définition officielle de PEPPOL-EN16931-R020 (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.