Tutoriel n8n

Automatiser vos factures avec n8n et Stripe

Générez automatiquement une facture PDF à vos couleurs à chaque paiement Stripe réussi. Envoyez-la au client par e-mail et archivez-la dans Google Drive.

Vincent Ventalon
Vincent Ventalon
· Mis à jour le
TemplateFox

À propos du nœud TemplateFox

Le nœud communautaire TemplateFox officiel pour n8n génère des PDF à partir de vos templates et de données dynamiques. Il fonctionne en synchrone : l'URL du PDF revient tout de suite. Compatible avec les agents IA de n8n.

Pourquoi automatiser vos factures ?

Un client paie via Stripe Checkout. Il faut maintenant générer la facture, la lui envoyer par e-mail et la classer quelque part. Pour un paiement, c'est vite fait. Pour des centaines par mois, c'est un temps plein.

Ce workflow prend en charge toute la chaîne : le paiement Stripe aboutit → la facture PDF est générée à vos couleurs → le client la reçoit par e-mail → une copie atterrit dans Google Drive pour la comptabilité. Aucune saisie manuelle.

Voici ce que nous allons construire : un workflow qui se déclenche à chaque paiement Stripe Checkout, récupère les lignes de commande, met en forme la facture, génère un PDF à vos couleurs et l'envoie au client comme dans votre dossier Drive.

1

Créez votre template de facture

1.1 — Choisir un template

Partez d'un de nos templates de facture prêts à l'emploi, ou créez le vôtre :

  1. Ouvrez la page Templates
  2. Filtrez sur la catégorie Factures
  3. Choisissez un template qui correspond à votre style
  4. Cliquez sur Use Template pour l'ajouter à votre tableau de bord
Le template Professional Corporate Invoice dans l'éditeur visuel

Le template comporte un QR code de paiement. Cliquez dessus pour configurer son URL.

QR code sélectionné, avec le panneau des propriétés

1.2 — Comprendre la structure du template

Le template utilise deux types de champs : des champs statiques, saisis une fois pour toutes dans l'éditeur de templates, et des champs dynamiques, remplis par les données Stripe à chaque exécution.

Saisis dans l'éditeur de templates

Ils ne changent jamais : tapez-les directement dans le design du template, en texte simple, et non en variables.

  • Nom et logo de l'entreprise
  • Adresse de l'entreprise
  • Coordonnées bancaires (banque, IBAN, BIC)
  • Numéro de TVA, immatriculation
  • Conditions de paiement, mentions de pied de page

Variables dynamiques (depuis Stripe)

Elles changent à chaque facture : utilisez des variables de template, que le workflow remplit à l'exécution.

  • client_company (nom du client)
  • client_address_1, client_email
  • items[] (liste des lignes de facture)
  • invoice_number, invoice_date, due_date
  • subtotal, tax, total

Pourquoi les saisir dans le template ? Le nom, l'adresse et les coordonnées bancaires de votre entreprise ne changent pas d'une facture à l'autre. Tapés en texte simple dans l'éditeur de templates, ils allègent les données à transmettre depuis n8n, réduisent le nombre de variables à maintenir et suppriment tout risque de faute de frappe dans le nœud Code.

Pour aller plus loin : Expressions · Liaison de données · Tableaux

1.3 — Tester avec des données d'exemple

Testez votre template dans l'onglet Preview avec un JSON d'exemple, avant de connecter n8n. Cette structure JSON est exactement celle que produira le nœud Code.

Aperçu du template de facture avec des données d'exemple, dans l'éditeur TemplateFox

Astuce : copiez la structure JSON depuis l'onglet Preview. Elle vous servira de référence pour écrire le nœud Code.

2

Construisez le workflow n8n

Le workflow complet : paiement Stripe → récupération des lignes → mise en forme des données → génération du PDF → e-mail au client + copie dans Drive.

Stripe Trigger → Get Line Items → Format Data → TemplateFox →
Gmail Google Drive
Workflow n8n complet : Stripe Trigger → Get Line Items → Format Invoice Data → TemplateFox → Email Invoice + Save to Google Drive

2.1 — Configurer le déclencheur Stripe

Connectez votre compte Stripe à n8n, puis ajoutez le nœud Stripe Trigger pour écouter les paiements.

  1. Ouvrez Stripe Dashboard → API Keys et copiez votre Secret key : elle commence par sk_live_ ou sk_test_
  2. Dans n8n, ouvrez Credentials → Add Credential → Stripe API
  3. Collez la clé secrète dans le champ Secret Key et laissez Signing Secret vide
  4. Ajoutez un nœud Stripe Trigger à votre workflow
  5. Sélectionnez l'événement checkout.session.completed
  6. Activez le workflow : n8n enregistre lui-même le webhook dans Stripe
Identifiants Stripe API configurés dans n8n, connexion testée avec succès

Autres événements : utilisez invoice.payment_succeeded pour les abonnements, ou charge.succeeded pour les paiements directs.

2.2 — Récupérer les lignes dans Stripe

Stripe n'inclut pas les lignes de commande dans le webhook : il faut un appel d'API séparé pour les obtenir. Ajoutez un nœud HTTP Request :

  1. Ajoutez un nœud HTTP Request
  2. Choisissez la méthode GET
  3. URL : https://api.stripe.com/v1/checkout/sessions/{{ $json.data.object.id }}/line_items
  4. Authentication : Predefined Credential Type → Stripe API

L'appel renvoie le nom, la quantité et le montant de chaque article du paiement.

2.3 — Mettre en forme les données de facture

Un nœud Code extrait les données Stripe et les met en forme selon les variables de votre template. Aucune information sur votre entreprise ici : elles sont déjà dans le template.

// Extract Stripe data
const session = $('Stripe Trigger').first().json.data.object;
const customer = session.customer_details;
const lineItems = $input.first().json.data;
// Format line items for the template
const items = lineItems.map(item => ({
item_description: item.description,
item_quantity: item.quantity,
item_price: (item.amount_total / 100).toFixed(2)
}));
// Generate invoice number from date + session ID
const now = new Date();
const invoiceNumber = `INV-${now.getFullYear()}-${session.id.slice(-6)}`;
// Due date: Net 30
const dueDate = new Date(now);
dueDate.setDate(dueDate.getDate() + 30);
// Return formatted data
return [{ json: {
client_company: customer.name,
client_email: customer.email,
client_address_1: customer.address?.line1,
invoice_number: invoiceNumber,
invoice_date: now.toISOString().split('T')[0],
due_date: dueDate.toISOString().split('T')[0],
items,
total: (session.amount_total / 100).toFixed(2),
tax: (session.total_details?.amount_tax / 100).toFixed(2)
}}];

Voici le nœud Code complet. Il extrait de Stripe tout ce qu'il faut (informations client, lignes, montants), puis génère un numéro de facture et une date d'échéance. Adaptez les noms de variables aux champs de votre template.

Aucune information sur votre entreprise ici. Le nom, l'adresse, les coordonnées bancaires et le logo de votre entreprise sont saisis directement dans l'éditeur de templates : ils ne changent pas d'une facture à l'autre, inutile de les transmettre depuis n8n.

2.4 — Générer le PDF

Ajoutez le nœud TemplateFox pour générer la facture en PDF :

  1. Ajoutez un nœud TemplateFox
  2. Ajoutez votre clé API TemplateFox dans Credentials → Add Credential → TemplateFox API
  3. Sélectionnez l'opération Generate PDF
  4. Choisissez votre template de facture dans la liste déroulante
  5. Laissez Data Input Mode sur Use Template Fields : le nœud charge automatiquement les champs de votre template
  6. Reliez chaque champ à la sortie correspondante du nœud Code (par exemple client_company → {{ $json.client_company }})
Identifiants TemplateFox API configurés dans n8n, connexion testée avec succès
Nœud TemplateFox : les champs du template se chargent automatiquement une fois le template sélectionné

TemplateFox renvoie une URL signée vers le PDF généré. L'étape suivante s'en sert pour envoyer et archiver la facture.

2.5 — E-mail + enregistrement dans Google Drive

Une fois le PDF généré par TemplateFox, le workflow se divise en deux branches parallèles :

Gmail — E-mail au client

  • Destinataire : l'adresse e-mail du client Stripe
  • Objet avec le numéro de facture
  • Corps avec le lien de téléchargement du PDF, le montant et l'échéance

Google Drive — Archivage

  • Télécharge le PDF depuis l'URL TemplateFox
  • L'enregistre dans votre dossier Factures
  • Nomme le fichier d'après le numéro de facture

Terminé. Le paiement Stripe aboutit → la facture PDF est générée → le client la reçoit par e-mail → une copie est rangée dans Drive. Entièrement automatique.

Le même workflow, sur d'autres plateformes

Vous utilisez un autre outil d'automatisation ? La même configuration fonctionne aussi ailleurs :

Questions fréquentes

Quels événements Stripe utiliser ?

Le workflow utilise par défaut checkout.session.completed, qui couvre les paiements Stripe Checkout. Prenez invoice.payment_succeeded pour les renouvellements d'abonnement, ou charge.succeeded pour les paiements directs.

Puis-je me passer de Google Drive ?

Oui. La branche Google Drive est facultative : supprimez simplement les nœuds Download PDF et Save to Google Drive. La branche e-mail fonctionne seule. Vous pouvez aussi remplacer Drive par Dropbox, OneDrive, S3 ou tout autre nœud de stockage.

Comment les numéros de facture sont-ils générés ?

Le nœud Code génère des numéros au format INV-YYYY-MMDD-XXXXXX, à partir de la date et des 6 derniers caractères de l'ID de session Stripe. Modifiez ce format dans le nœud Code pour suivre votre propre numérotation.

Les taxes et les remises sont-elles prises en compte ?

Oui. Le workflow lit total_details.amount_tax dans la session Stripe pour le montant des taxes. Les remises appliquées dans Stripe Checkout sont déjà intégrées au total des lignes. Ajoutez un champ de remise distinct dans le nœud Code si besoin.

Et si un paiement échoue ou est remboursé ?

Le workflow ne se déclenche que sur les paiements réussis. Pour les remboursements, ajoutez un second nœud Stripe Trigger à l'écoute de charge.refunded et générez plutôt un avoir en PDF.

Combien coûte cette automatisation ?

n8n auto-hébergé est gratuit. TemplateFox inclut 60 PDF gratuits par mois. Les webhooks Stripe ne sont pas facturés, et Google Drive comme Gmail sont gratuits avec un compte personnel. Voir les tarifs.

Automatisez votre génération de PDF

Une documentation complète, des intégrations no-code et une API solide pour générer vos PDF à grande échelle. On s'occupe de la partie ingrate.