Envoyer automatiquement des factures PDF par e-mail avec Gmail via le déclencheur de paiement Stripe
Ceci est unInvoice Processing, Multimodal AIworkflow d'automatisation du domainecontenant 5 nœuds.Utilise principalement des nœuds comme Code, Gmail, Webhook. Envoi automatique de factures PDF par e-mail via Gmail avec un déclencheur de paiement Stripe
- •Compte Google et informations d'identification Gmail API
- •Point de terminaison HTTP Webhook (généré automatiquement par n8n)
Nœuds utilisés (5)
{
"meta": {
"instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
},
"nodes": [
{
"id": "3c9c65d5-e8ef-472b-994f-14d67bf92479",
"name": "Instructions de configuration",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 280,
"height": 200,
"content": "💰 **SETUP REQUIRED:**\n\n1. **Stripe Webhook:**\n - Go to Stripe Dashboard → Webhooks\n - Add endpoint with webhook URL below\n - Select event: payment_intent.succeeded\n\n2. **Gmail Setup:**\n - Connect Gmail OAuth in credentials\n - Emails sent from your Gmail account\n\n3. **Customize Invoice:**\n - Update company name in 'Generate Invoice HTML'\n - Modify invoice template as needed\n\n🎯 Invoices auto-generated as PDF attachments!"
},
"typeVersion": 1
},
{
"id": "9d2296bf-2617-4b8c-9d5b-ff87e3cf8360",
"name": "Stripe Paiement Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
0,
224
],
"webhookId": "stripe-payment-webhook",
"parameters": {
"path": "stripe-webhook",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"id": "25314ce6-fbec-41b1-9328-2e075eb658a2",
"name": "Normaliser les données de paiement",
"type": "n8n-nodes-base.code",
"position": [
208,
224
],
"parameters": {
"jsCode": "// Normalize Stripe payment data\nconst event = $input.first().json;\nconst paymentIntent = event.data?.object || event;\n\n// Only proceed if this is a successful payment\nif (event.type !== 'payment_intent.succeeded' && event.type !== 'charge.succeeded') {\n console.log('Not a successful payment event, skipping...');\n return null;\n}\n\n// Extract payment and customer details\nconst normalizedData = {\n payment_id: paymentIntent.id,\n amount: paymentIntent.amount / 100, // Convert from cents\n currency: paymentIntent.currency?.toUpperCase() || 'USD',\n customer_email: paymentIntent.receipt_email || paymentIntent.billing_details?.email || '',\n customer_name: paymentIntent.billing_details?.name || 'Valued Customer',\n payment_date: new Date(paymentIntent.created * 1000).toISOString(),\n description: paymentIntent.description || 'Service Payment',\n invoice_number: `INV-${Date.now()}`,\n status: 'paid'\n};\n\n// Validate required fields\nif (!normalizedData.customer_email) {\n throw new Error('Customer email is required for invoice generation');\n}\n\nconsole.log('Normalized Payment Data:', normalizedData);\n\nreturn {\n json: normalizedData\n};"
},
"typeVersion": 2
},
{
"id": "8439384c-a885-4ad5-bc5d-e587b667fe61",
"name": "Générer le HTML de la facture",
"type": "n8n-nodes-base.code",
"position": [
400,
224
],
"parameters": {
"jsCode": "// Generate HTML invoice content\nconst data = $input.first().json;\n\nconst invoiceHTML = `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <style>\n body { font-family: Arial, sans-serif; margin: 40px; }\n .header { text-align: center; margin-bottom: 40px; }\n .invoice-details { margin: 30px 0; }\n .amount { font-size: 24px; font-weight: bold; color: #2E7D32; }\n table { width: 100%; border-collapse: collapse; margin: 20px 0; }\n th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }\n .footer { margin-top: 50px; text-align: center; color: #666; }\n </style>\n</head>\n<body>\n <div class=\"header\">\n <h1>INVOICE</h1>\n <h2>Your Company Name</h2>\n </div>\n \n <div class=\"invoice-details\">\n <p><strong>Invoice #:</strong> ${data.invoice_number}</p>\n <p><strong>Date:</strong> ${new Date(data.payment_date).toLocaleDateString()}</p>\n <p><strong>Payment ID:</strong> ${data.payment_id}</p>\n </div>\n \n <div>\n <h3>Bill To:</h3>\n <p><strong>${data.customer_name}</strong></p>\n <p>${data.customer_email}</p>\n </div>\n \n <table>\n <thead>\n <tr>\n <th>Description</th>\n <th>Amount</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>${data.description}</td>\n <td class=\"amount\">${data.currency} ${data.amount.toFixed(2)}</td>\n <td style=\"color: green; font-weight: bold;\">PAID</td>\n </tr>\n </tbody>\n </table>\n \n <div class=\"footer\">\n <p>Thank you for your business!</p>\n <p>This invoice was automatically generated.</p>\n </div>\n</body>\n</html>\n`;\n\nreturn {\n json: {\n ...data,\n invoice_html: invoiceHTML,\n filename: `invoice_${data.invoice_number}.pdf`\n }\n};"
},
"typeVersion": 2
},
{
"id": "7cb20e9e-dec4-4c7b-9029-05f3ddd5ef0a",
"name": "Envoyer la facture par email",
"type": "n8n-nodes-base.gmail",
"position": [
608,
224
],
"webhookId": "6a6f3511-443a-4ff0-bd1b-c1a6b3890e98",
"parameters": {
"message": "Dear {{ $json.customer_name }},\\n\\nThank you for your payment! Please find your invoice attached.\\n\\nPayment Details:\\n- Amount: {{ $json.currency }} {{ $json.amount }}\\n- Payment ID: {{ $json.payment_id }}\\n- Date: {{ $json.payment_date }}\\n\\nBest regards,\\nYour Company Name",
"options": {
"attachmentsUi": {
"attachmentsBinary": [
{
"property": "invoice_pdf"
}
]
}
},
"subject": "Invoice {{ $json.invoice_number }} - Payment Confirmation"
},
"typeVersion": 2.1
}
],
"pinData": {},
"connections": {
"8439384c-a885-4ad5-bc5d-e587b667fe61": {
"main": [
[
{
"node": "7cb20e9e-dec4-4c7b-9029-05f3ddd5ef0a",
"type": "main",
"index": 0
}
]
]
},
"25314ce6-fbec-41b1-9328-2e075eb658a2": {
"main": [
[
{
"node": "8439384c-a885-4ad5-bc5d-e587b667fe61",
"type": "main",
"index": 0
}
]
]
},
"9d2296bf-2617-4b8c-9d5b-ff87e3cf8360": {
"main": [
[
{
"node": "25314ce6-fbec-41b1-9328-2e075eb658a2",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Débutant - Traitement des factures, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
David Olusola
@dae221I help ambitious businesses eliminate operational bottlenecks and scale faster with AI automation. My clients typically see 40-60% efficiency gains within 90 days. Currently accepting 3 new projects this quarter - david@daexai.com
Partager ce workflow