Aller au contenu principal

Facture électronique ZUGFeRD à partir d'une liste SharePoint : Convertissez un fichier JSON en XML EN 16931 et en PDF/A-3 dans Power Automate avec PDF4me

· 30 minutes de lecture
SEO and Content Writer

PDF4me Create ZUGFeRD Invoice est une action Power Automate qui transforme les données de facturation en une facture électronique hybride PDF/A-3. Associée à une liste SharePoint, elle utilise le JSON généré par une action Compose à partir de chaque ligne, écrit le XML EN 16931, intègre la facture lisible dans le PDF de base, archive le document et l'envoie par e-mail à l'acheteur.

Recherchez ZUGFeRD et vous trouverez trois solutions : une explication du format, un validateur vérifiant la conformité d'un fichier existant, ou une bibliothèque PHP, Java ou C# pour les développeurs de logiciels de facturation. Ces trois solutions supposent que la facture existe déjà. Or, aucune ne répond à la question que se pose réellement une équipe financière : les données de facturation se trouvent dans une liste, un tableur ou tout autre système enregistrant les ventes, et doivent être converties en facture électronique conforme. Ce processus, en sept étapes et sans code, représente l'étape manquante.

Aperçu du flux
1. When an item is created
Déclencheur SharePoint sur la liste nommée ZUGFeRD Requests. Une ligne correspond à une facture.
2. Compose
Construit un objet JSON de facture à partir de la ligne : vendeur, acheteur, ligne de commande, totaux, paiement.
3. Get file content using path
Lit le BaseInvoice.pdf, la page sur laquelle la facture est établie.
4. Create ZUGFeRD Invoice
PDF4me PDF. Format d'entrée 2.0-JSON, XmlWithPdf, conformité EN16931, facture générée.
5. Create file
Enregistre le PDF hybride dans la bibliothèque ZUGFeRD Invoices.
6. Update item
Status des timbres Generated et OutputLink sur la même ligne.
7. Send an email (V2)
Envoie la facture à l'adresse de l'acheteur indiquée sur la ligne.
La version courte

Une entrée est ajoutée à une liste SharePoint avec le vendeur, l'acheteur, un article et les dates. Quatre secondes plus tard, une facture PDF/A-3 est disponible dans une bibliothèque de documents : une page lisible, intégrant le code XML EN 16931 pour le traitement par le logiciel de l'acheteur. Vous n'avez pas à écrire ce code XML. Vous décrivez la facture comme un court objet JSON et PDF4me génère le schéma. L'entrée reçoit son statut et un lien, et l'acheteur reçoit le fichier par e-mail.

Questions et réponses basées sur le pourquoi​

Pourquoi conserver les données de facturation dans une liste SharePoint ? Parce que c’est le format sous lequel les données sont déjà enregistrées pour la plupart des petites équipes financières : une ligne par facture, renseignée par une personne. Les colonnes correspondent exactement aux champs requis par la norme, ce qui signifie que cette correspondance est visible par tous ceux qui consultent la liste. De plus, une nouvelle facture correspond à une nouvelle ligne et non à un nouveau fichier dans un dossier surveillé.

Pourquoi décrire la facture au format JSON plutôt qu'en XML ? Parce que la syntaxe Cross Industry Invoice est verbeuse et contraignante : espaces de noms imbriqués, noms d'éléments difficiles à retenir, codes devant être placés au bon endroit. L'objet JSON exprime la même information en beaucoup moins de lignes, avec des clés dont le sens correspond aux termes métier qu'elles représentent. PDF4me le convertit en schéma ; ainsi, la partie la plus sujette aux erreurs est celle que vous n'avez pas à gérer.

Pourquoi générer la facture sur un PDF ? Parce qu'un fichier ZUGFeRD comporte deux parties qui doivent être cohérentes. Le fichier XML est destiné au logiciel de l'acheteur, tandis que la page imprimée est destinée à la personne qui l'ouvre. L' Render Invoice on PDF intègre la facture à la page de base à partir des mêmes données qui ont généré le fichier XML. Ainsi, les deux ne peuvent jamais diverger, contrairement à ce qui se produit lorsque la mise en page est gérée séparément.

Pourquoi PDF/A-3 et non un PDF classique ? Parce que PDF/A-3 est un format d’archivage autorisé à inclure une pièce jointe, et le fichier XML intégré constitue cette pièce jointe. C’est également ce qui garantit la lisibilité de la facture des années plus tard : les polices et les profils colorimétriques sont conservés dans le fichier, ce qui est essentiel pour un document que la plupart des entreprises sont tenues de conserver pendant une dizaine d’années.


Ce que vous obtiendrez​

Entrée : une ligne contenant le numéro de facture, les dates, la devise, le nom du vendeur, le nom de l’acheteur et un article. Sortie : une facture ZUGFeRD PDF/A-3 dans la bibliothèque ZUGFeRD Invoices, la ligne mise à jour avec son statut et un lien, et un courriel envoyé à l’acheteur avec la facture en pièce jointe.

L'élément de liste SharePoint RE-2026-0007 dans les demandes ZUGFeRD affiche le numéro de facture RE-2026-0007, la date de facture 12/10/2026, la date d'échéance 11/11/2026, la devise EUR, le nom du vendeur Muster GmbH, l'adresse du vendeur Hauptstrasse 1, le code postal 10115, la ville du vendeur Berlin, le pays du vendeur DE, le numéro de TVA intracommunautaire DE123456789, le nom de l'acheteur Test Kunde AG, l'adresse de l'acheteur Bahnhofstrasse 5, le code postal 80331, la ville de l'acheteur Munich, le pays de l'acheteur DE, la description de l'article Consulting, la quantité 10,00, le prix unitaire 100,50, le taux de TVA 19, une colonne Email et le statut Généré.

Une ligne par facture. Chaque colonne de ce volet devient une clé dans le JSON généré par le flux.

Liste des factures SharePoint ZUGFeRD : ZUGFeRD_RE-2026-0001.pdf à ZUGFeRD_RE-2026-0004.pdf et la plus récente, ZUGFeRD_RE-2026-0007.pdf, toutes modifiées par le compte Pdf4me Flow.

Un fichier par numéro de facture, établi par le compte de flux.

Outlook affiche le courriel avec le fichier ZUGFeRD_RE-2026-0007.pdf en pièce jointe et la facture allemande rendue ouverte dans le volet d'aperçu : vendeur : Muster GmbH à Berlin (numéro de TVA : DE123456789), client : Test Kunde AG à Munich, facture RE-2026-0007 du 12/10/2026, type de document : 380, une ligne de prestation de conseil à 19 % de TVA, montant net : 1 005,00 €, total : 1 195,95 €

La moitié lisible du même fichier, telle que l'acheteur la voit.


Ce dont vous avez besoin​

  • Power Automate. Ouvrez Power Automate. Un flux cloud automatisé sur des connecteurs standard. SharePoint, Office 365 Outlook et PDF4me ne nécessitent aucun abonnement premium.
  • Clé API PDF4me. Obtenez votre clé API. Ce flux utilise une connexion PDF4me, PDF4me PDF.
  • Une liste SharePoint pour les demandes. La liste capturée s'appelle ZUGFeRD Requests et contient les champs suivants : InvoiceNumber, InvoiceDate, DueDate, Currency, le bloc Seller (nom, rue, code postal, ville, pays, ID de TVA), le bloc Buyer, ItemDescription, Quantity, UnitPrice, VATRate, une colonne Email, une colonne Status et une colonne OutputLink dans laquelle le flux écrit.
  • Un modèle de facture au format PDF. Le flux de travail enregistré conserve BaseInvoice.pdf dans une bibliothèque appelée ZUGFeRD Templates. C'est sur cette page que la facture est établie ; votre en-tête doit donc y figurer.
  • Une bibliothèque pour les factures finalisées. Le flux capturé écrit dans ZUGFeRD Invoices.
  • Vos informations de vendeur, y compris votre ID de TVA, sont saisies dans les colonnes de la liste, ce qui permet à un même processus d'émettre des factures pour plusieurs entités juridiques.
Commencez par un objet JSON fonctionnel
Si vous préférez visualiser la structure avant de créer le Compose, voici la structure complète ZUGFeRD 2.0 EN16931 avec toutes les clés acceptées par le profil. Collez-la dans Compose et remplacez les valeurs par vos jetons.
Télécharger sample-invoice-zugferd-2.0-en16931.json

Aperçu du flux​

  1. When an item is created (SharePoint) surveille la liste nommée ZUGFeRD Requests.
  2. Compose génère le JSON de la facture à partir de la ligne.
  3. Get file content using path d'accès /ZUGFeRD Templates/BaseInvoice.pdf.
  4. Create ZUGFeRD Invoice (PDF4me PDF) convertit le JSON en XML EN 16931 et renvoie le PDF hybride.
  5. Create file (SharePoint) l'enregistre sous le nom ZUGFeRD_<invoice number>.pdf.
  6. Update item (SharePoint) définit Status sur Generated et remplit OutputLink.
  7. Send an email (V2) (Office 365 Outlook) envoie la facture à l'acheteur.

Aperçu complet du flux​

Historique d'exécution de Power Automate montrant sept actions exécutées successivement : création d'un élément (0,2 seconde), rédaction (0 seconde), récupération du contenu du fichier à partir du chemin d'accès (0,2 seconde), création de la facture ZUGFeRD (1 seconde), création du fichier (2 secondes), mise à jour de l'élément (0,4 seconde) et envoi d'un e-mail (V2) (0,4 seconde).

Le processus complet prend environ quatre secondes, et la facture électronique elle-même environ une seconde. L'étape la plus lente est l'écriture du fichier par SharePoint.


Étape 1 : Comment déclencher l’émission d’une facture électronique lorsqu’une demande arrive ?​

Déroulement jusqu'à présent : rien pour l'instant, ceci est le déclencheur.

L'ajout d'une ligne correspond à la manière dont une facture est demandée ; c'est donc le signal.

  1. Créez un Automated cloud flow et sélectionnez SharePoint > When an item is created.
  2. Configurer :
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests

When an item is created : configuration​

SharePoint : Déclencheur « Lorsqu'un élément est créé » avec l'adresse de site « PDF4me Support » (ynoox1.sharepoint.com/sites/PDF4meSupport) et le nom de liste « ZUGFeRD Requests », sans paramètres avancés définis.

Chaque colonne de la nouvelle ligne devient un jeton que les six actions suivantes peuvent utiliser.


Étape 2 : Comment construire le JSON de la facture à partir des colonnes de la liste ?​

Déroulement jusqu'à présent : le déclencheur SharePoint.

Une seule action Compose suffit pour décrire la facture complète. C'est là que les noms de vos colonnes correspondent aux normes attendues, et le texte est suffisamment court pour être lu sur un seul écran.

  1. Ajouter Data Operation > Compose.
  2. Collez l'objet ci-dessous dans le champ Inputs et remplacez chaque valeur par le jeton correspondant.
{
"InvoiceId": "@{triggerBody()?['InvoiceNumber']}",
"TypeCode": "380",
"InvoiceType": "RECHNUNG",
"IssueDate": "@{triggerBody()?['InvoiceDate']}T00:00:00",
"DeliveryDate": "@{triggerBody()?['InvoiceDate']}T00:00:00",
"IsTest": false,
"Seller": {
"Name": "@{triggerBody()?['SellerName']}",
"VatId": "@{triggerBody()?['SellerVATID']}",
"Address": {
"Street": "@{triggerBody()?['SellerStreet']}",
"PostalCode": "@{triggerBody()?['SellerPostalCode']}",
"City": "@{triggerBody()?['SellerCity']}",
"Country": "@{triggerBody()?['SellerCountry']}"
}
},
"Buyer": {
"Name": "@{triggerBody()?['BuyerName']}",
"Address": {
"Street": "@{triggerBody()?['BuyerStreet']}",
"PostalCode": "@{triggerBody()?['BuyerPostalCode']}",
"City": "@{triggerBody()?['BuyerCity']}",
"Country": "@{triggerBody()?['BuyerCountry']}"
}
},
"LineItems": [
{
"ProductName": "@{triggerBody()?['ItemDescription']}",
"Quantity": @{triggerBody()?['Quantity']},
"UnitCode": "C62",
"UnitPrice": @{triggerBody()?['UnitPrice']},
"LineTotal": @{float(...)}
}
],
"Totals": {
"Currency": "@{triggerBody()?['Currency']?['Value']}",
"LineTotal": @{float(...)},
"TaxBasisTotal": @{float(...)},
"TaxPercent": @{triggerBody()?['VATRate']},
"TaxTotal": @{float(...)},
"GrandTotal": @{float(...)},
"ChargeTotal": 0,
"AllowanceTotal": 0
},
"Payment": {
"Currency": "@{triggerBody()?['Currency']?['Value']}",
"PaymentReference": "@{triggerBody()?['InvoiceNumber']}",
"DueDate": "@{triggerBody()?['DueDate']}T00:00:00"
}
}

Compose : configuration​

Action Compose de Power Automate contenant le JSON de la facture avec InvoiceId, TypeCode 380, InvoiceType RECHNUNG, IssueDate et DeliveryDate, un objet Seller avec VatId et adresse, un objet Buyer avec adresse, un tableau LineItems avec ProductName, Quantity, UnitCode C62 et UnitPrice, un objet Totals avec Currency, TaxPercent et expressions float pour les montants, et un objet Payment avec la référence de paiement et la date d'échéance

Les valeurs textuelles sont des jetons entre guillemets. Les montants et les quantités sont des nombres bruts, c'est pourquoi ils sont convertis en nombres à virgule float.

D'où provient chaque partie de la facture​

Clé JSONCe qu'il contientSource
InvoiceId, TypeCode, InvoiceTypeNuméro de facture, code de type de document 380 pour une facture commerciale et étiquette imprimée sur la pageInvoiceNumber, puis valeurs fixes
IssueDate, DeliveryDateQuand la facture a été émise et quand le service a été renduInvoiceDate, suffixée par T00:00:00
SellerNom, ID de TVA et bloc d'adresse complèteSellerName, SellerVATID, SellerStreet, SellerPostalCode, SellerCity, SellerCountry
BuyerNom et adresse du clientBuyerName, BuyerStreet, BuyerPostalCode, BuyerCity, BuyerCountry
LineItemsDescription, quantité avec code unité C62, prix unitaire et total de la ligneItemDescription, Quantité, UnitPrice
TotalsDevise, total net, base d'imposition, taux et montant de la TVA, total généralDevise, VATRate et montants calculés
PaymentDevise, référence fournie par l'acheteur lors du paiement et date d'échéanceDevise, InvoiceNumber, DueDate

Conseil : Seules les clés monétaires nécessitent des calculs, et elles doivent être converties en nombres simples, sans guillemets (c’est le rôle des expressions float). LineTotal correspond à la quantité multipliée par le prix unitaire, TaxBasisTotal à la somme des totaux de ligne, TaxTotal au produit de la base de taxe par le taux, divisé par 100, et GrandTotal à la somme de ces deux résultats. Pour la ligne affichée, ces valeurs sont : 1005, 1005, 190,95 et 1195,95. La valeur "1005" entre guillemets sera refusée, tandis que la valeur 1005  seule sera acceptée.


Étape 3 : D’où provient le PDF de base ?​

Déroulement jusqu'à présent : le déclencheur plus Compose.

Les fichiers ZUGFeRD possèdent une page lisible, et c'est là que ça commence.

  1. Ajouter SharePoint > Get file content using path.
  2. Configurer :
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • File Path: /ZUGFeRD Templates/BaseInvoice.pdf
    • Infer content type (avancé) : Yes

Get file content using path : configuration​

Action SharePoint « Obtenir le contenu du fichier à l'aide du chemin d'accès » avec l'adresse du site, prise en charge de PDF4me, chemin d'accès au fichier : /ZUGFeRD Templates/BaseInvoice.pdf et déduire le type de contenu : Oui

Conservez votre papier à en-tête dans ce dossier. Il est vérifié à chaque impression ; toute modification entraînera donc une modification de la facture suivante.


Étape 4 : Comment transformer le JSON en un PDF/A-3 ZUGFeRD ?​

Déroulement jusqu'à présent : le déclencheur, Compose et Get file content using path.

Cette action génère la facture électronique. Elle lit le JSON, écrit le XML EN 16931 et renvoie un fichier unique contenant les deux parties.

  1. Ajouter Create ZUGFeRD Invoice à partir de la connexion PDF4me PDF.
  2. Configurer :
    • ZUGFeRD version and Input Format: 2.0-JSON
    • Output Mode: XmlWithPdf
    • Invoice JSON Data : l'expression base64(outputs('Compose'))
    • Conformance Level: EN16931
    • Render Invoice on PDF: Yes
    • File Content : une expression base64() sur le contenu Get file content using path
    • File Name: BaseInvoice.pdf

Create ZUGFeRD Invoice : configuration​

Action PDF4me Créer une facture ZUGFeRD avec la version ZUGFeRD et le format d'entrée définis sur 2.0-JSON, le mode de sortie XmlWithPdf, le champ Données JSON de la facture contenant l'expression base64 des sorties, Compose, niveau de conformité EN16931, rendu de la facture au format PDF : Oui, contenu du fichier contenant une expression base64 sur le PDF de base et nom de fichier BaseInvoice.pdf, connecté à PDF4me PDF

Le format d'entrée détermine le champ de données affiché. Sélectionnez 2.0-JSON et l'action demandera Invoice JSON Data, et non Invoice XML Data.

Ce que chaque paramètre détermine​

ChampValeur iciCe qu'il contrôle
ZUGFeRD version and Input Format2.0-JSONLa génération ZUGFeRD utilisée pour la sortie, et le format des données (JSON), déterminent l'affichage du champ Invoice JSON Data
Output ModeXmlWithPdfRenvoyer un seul fichier hybride, le PDF avec le XML intégré, plutôt que le XML seul
Invoice JSON Database64(outputs('Compose'))L'objet facture, encodé base64 lors de son importation
Conformance LevelEN16931Le profil auquel la facture prétend correspondre, et donc les clés que le JSON doit fournir
Render Invoice on PDFYesDessinez la facture lisible sur le PDF de base au lieu de laisser la page telle quelle
File Content, File NameLe PDF de baseLa page sur laquelle la facture est établie et le nom du destinataire du rapport d'action

Conseil : L’action affiche Invoice XML Data, Invoice JSON Data ou Invoice CSV Data selon le format sélectionné dans la liste déroulante. Ne renseignez que le format correspondant à votre choix. Le fait de renseigner deux champs de données simultanément est la cause la plus fréquente d’échec de validation.


Étape 5 : Où la facture est-elle classée ?​

Flux jusqu'à présent : tout passe par Create ZUGFeRD Invoice.

Le numéro de facture permet d'identifier le fichier, ce qui rend la bibliothèque consultable.

  1. Ajouter SharePoint > Create file.
  2. Configurer :
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • Folder Path: /ZUGFeRD Invoices
    • File Name : ZUGFeRD_ suivi du numéro InvoiceNumber et de l’extension .pdf
    • File Content : le jeton Body de Create ZUGFeRD Invoice

Create file : configuration​

Action SharePoint Créer un fichier avec l'adresse du site « Prise en charge PDF4me », le chemin du dossier « /ZUGFeRD Invoices », le nom du fichier « ZUGFeRD_ » suivi du numéro de facture et de l'extension .pdf, et le contenu du fichier défini sur le jeton « Body » de l'action PDF4me.

Pour RE-2026-0007 cela écrit ZUGFeRD_RE-2026-0007.pdf.


Étape 6 : Comment enregistrez-vous le résultat sur la requête ?​

Déroulement jusqu'à présent : tout passe par Create file.

La ligne qui demandait la facture devait également indiquer ce qu'il était advenu de celle-ci.

  1. Ajouter SharePoint > Update item.
  2. Configurer :
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests
    • Id : le jeton ID du déclencheur
    • Title : le jeton Title du déclencheur
    • Status Value (avancée) : Generated
    • OutputLink (avancé) : l’URL de la bibliothèque suivie de ZUGFeRD_, du jeton InvoiceNumber et de .pdf

Update item : configuration​

Action de mise à jour d'élément SharePoint avec l'adresse du site « Prise en charge PDF4me », le nom de la liste « Demandes ZUGFeRD », l'ID et le titre du déclencheur, la valeur du statut définie sur « Généré » et le lien de sortie construit à partir de l'URL de la bibliothèque de factures ZUGFeRD et du numéro de facture.

Le lien est assemblé à partir de l'URL de la bibliothèque et du même modèle de nom utilisé Create file, l'espace dans le nom de la bibliothèque étant déjà encodé en %20.


Étape 7 : Comment envoyez-vous la facture à l'acheteur ?​

Flux jusqu'à présent : tout passe par Update item.

Une facture électronique qui reste dans une bibliothèque n'a pas été émise ; la dernière action permet donc de la délivrer.

  1. Ajouter Office 365 Outlook > Send an email (V2).
  2. Configurer :
    • À : le jeton Email du déclencheur
    • Objet : Your ZUGFeRD e-invoice suivie du numéro InvoiceNumber
    • Body : une ligne indiquant le nom de l’acheteur et la facture, et précisant que le fichier est un PDF/A-3 avec XML EN 16931 intégré
  3. Ouvrez Advanced parameters et ajoutez la pièce jointe :
    • Nom Attachments - 1 : ZUGFeRD_ suivi du numéro InvoiceNumber .pdf
    • Contenu Attachments - 1 : le jeton File Content issu de Create ZUGFeRD Invoice
    • Importance: Normal

Send an email (V2) : configuration​

Office 365 Outlook : action « Envoyer un e-mail V2 » avec le destinataire sélectionné dans la colonne « E-mail », un objet se terminant par le numéro de facture, un corps de message mentionnant l’acheteur et décrivant un document PDF/A-3 contenant du XML EN 16931 intégré, une pièce jointe nommée ZUGFeRD_ suivie du numéro de facture et l’extension .pdf dont le contenu est le jeton PDF4me File Content, et un niveau de priorité « Normal ».

La pièce jointe tire ses octets de l'action qui les a produits, SharePoint n'est donc jamais relu.


Exécutez le flux et vérifiez​

  1. Save le flux.
  2. Ajoutez une ligne aux ZUGFeRD Requests avec un acheteur, un seul article, les deux dates et une adresse vérifiable.
  3. Ouvrez l'historique d'exécution. Les sept actions devraient être validées (niveau vert) et l'exécution complète devrait prendre quelques secondes.
  4. Ouvrez la bibliothèque ZUGFeRD Invoices et vérifiez que le fichier s'y trouve sous le numéro de facture.
  5. Retournez à la ligne : Status doit indiquer Generated et OutputLink doit ouvrir la facture.
  6. Ouvrez la pièce jointe du courriel et vérifiez les deux parties : la page doit afficher les montants corrects et le fichier doit contenir le code XML.

L'exécution de la commande a duré environ quatre secondes, la facture électronique étant générée en une seule seconde. Le fichier résultant, ZUGFeRD_RE-2026-0007.pdf, pèse environ 331 Ko et se présente comme une facture allemande : vendeur : Muster GmbH (Berlin, ID de TVA : DE123456789 ; client Test Kunde AG (Muenchen, type de document : 380 ; ligne : Consulting, TVA : 19 %, montant net : 1 005,00 EUR, TVA : 190,95 EUR, total : 1 195,95 EUR.

Qu'avez-vous concrètement mis en place ? Un système de facturation électronique qui s'appuie sur vos propres données. Ces données restent stockées par le service financier, la norme est respectée grâce au XML que vous n'avez pas eu à écrire, l'acheteur reçoit un fichier que son logiciel peut lire automatiquement et que son personnel peut consulter à l'écran, et la ligne de facturation indique que la facturation a bien été émise.


Variantes courantes que vous pouvez ajouter sans reconstruction​

Facturer plusieurs lignes
LineItems étant déjà un tableau, cette modification est la plus simple à apporter au flux. Conservez les lignes dans une seconde liste liée par numéro de facture, récupérez-les avec Get items, puis construisez le tableau avec une Select avant le Compose.
Vérifiez le résultat avant qu'il ne soit diffusé
Validez les premières factures avec un outil ZUGFeRD et comparez les résultats avec le Conformance Level défini. C'est la méthode la plus rapide pour détecter une erreur de mappage tant que le processus est récent.
Conservez également le fichier XML séparément
Certains acheteurs souhaitent recevoir le fichier structuré séparément. Dans ce cas, exécutez l'action une seconde fois en définissant Output Mode sur XmlOnly et enregistrez le résultat dans la bibliothèque, à côté du PDF.
Problème pour plusieurs entités juridiques
L'objet Seller provient déjà des colonnes ; une même liste peut donc être émise pour deux entreprises. Il suffit de pointer le PDF de base vers un en-tête sélectionné par la même colonne pour que la page imprimée s'affiche.

Comment cela se compare-t-il aux autres méthodes de production d'une facture ZUGFeRD​

Chaque ligne décrit l'alternative. La dernière ligne correspond à ce flux.

ComparaisonQui le dirige ?D'où proviennent les données ?Ce que vous entretenez
Logiciel de facturation avec exportation ZUGFeRD comparé à ce fluxN'importe qui, à l'intérieur de ce produitles propres enregistrements du produitUn abonnement, et tout ce que le produit prend en charge
Plateforme de facturation électronique et ce fluxLa finance, via un portailTéléchargements ou intégrationUn contrat par document et un lien avec celui-ci
Bibliothèque de développement par rapport à ce fluxUn développeur, à l'intérieur d'une applicationVotre base de données, via le codeLe code, les mises à jour du schéma et les versions
Ce fluxToute personne pouvant ajouter une ligne de listeUne liste SharePoint que l'équipe conserveUn objet JSON et un PDF de base

Questions fréquentes​

Qu'est-ce qu'une facture ZUGFeRD ?​

Une facture ZUGFeRD est un fichier unique à double usage. Il s'agit d'un PDF classique, lisible et contenant une pièce jointe XML avec les mêmes données structurées. Le système comptable de l'acheteur lit le fichier XML et enregistre la facture automatiquement, tandis que le service comptabilité fournisseurs conserve une version papier.

Ce format provient de FeRD, le forum allemand pour la facturation électronique, et son équivalent français est Factur-X, qui repose sur le même principe sous un autre nom.

Qu'est-ce que le format ZUGFeRD ?​

Techniquement, il s'agit d'un conteneur PDF/A-3 avec un fichier XML intégré au format Cross Industry Invoice, et un profil indiquant le niveau de complétude des données. Le profil utilisé ici est EN16931, qui correspond à la norme sémantique européenne pour la facturation électronique : l'ensemble des champs définis par EN 16931 comme constituant le cœur d'une facture.

Concrètement, pour une automatisation, le résultat est évalué sur la base du XML, et non de la page. Fournissez les données demandées par le profil et le fichier est validé ; améliorez l’esthétique de la page et rien ne change.

Comment créer une facture ZUGFeRD ?​

Vous avez besoin de trois choses : les données de la facture sous une forme structurée, une page pour la partie humaine et un outil qui écrit le XML dans le PDF en tant que pièce jointe PDF/A-3.

Dans ce flux, les données proviennent d'une ligne SharePoint convertie en JSON, la page est BaseInvoice.pdf, et Create ZUGFeRD Invoice effectue la troisième étape avec Output Mode XmlWithPdf. Si vos données existent déjà au format XML Cross Industry Invoice ou sous forme de ligne CSV, inversez le format d'entrée et utilisez ce format. Le reste du flux demeure inchangé.

Quelle est la différence entre ZUGFeRD et XRechnung ?​

Les deux formats répondent à la même norme européenne ; la différence réside dans leur présentation. ZUGFeRD est un format hybride : un PDF lisible contenant le code XML, adapté aux factures envoyées à des clients susceptibles de les ouvrir manuellement. XRechnung est exclusivement au format XML et correspond au format exigé par les acheteurs du secteur public allemand.

Si vous envoyez des factures à des entreprises, le format hybride est généralement plus sûr, car il est lisible par tous. Si vous facturez une administration publique, vérifiez le format requis avant l'envoi.


Dépannage​

L'action rejette les données de la facture

Ouvrez le résultat Compose dans l'historique d'exécution et lisez-le au format JSON avant toute autre chose. Une colonne vide laisse une clé vide, et une valeur monétaire dont les guillemets sont conservés est affichée sous forme de texte alors qu'un nombre est attendu. Dans les deux cas, l'objet produit semble correct, mais la conversion échoue.

Un validateur rejette le niveau de conformité

Conformance Level détermine les champs requis par le profil. Si vous déclarez être conforme à la norme EN16931 alors que le fichier JSON omet des clés attendues par le profil, la validation échoue, même si le fichier s'ouvre correctement. Vous devez soit fournir les clés manquantes, soit utiliser un niveau de conformité inférieur.

Le PDF semble vierge ou affiche toujours le modèle vide

Render Invoice on PDF étant désactivée, le code XML a été intégré sans affichage. Le fichier reste une facture électronique valide, mais les informations manquantes correspondent au contenu du PDF d'origine.

L'acheteur affirme que la facture ne contient pas de XML

Vérifiez le contenu de la pièce jointe dans l'étape  Courriel  et le File Content dans Create file. Les deux doivent provenir de Create ZUGFeRD Invoice. Joindre le PDF de base envoie une page qui semble correcte, mais qui ne contient aucune information exploitable par leur logiciel.


Prochaines étapes​

Le même schéma en sept étapes (une ligne arrive, une facture est décrite comme des données, un fichier est produit, classé, enregistré et envoyé) est ce que chaque mandat de facturation électronique exige réellement, quel que soit le format dont vos acheteurs finissent par avoir besoin.