Automatisches Senden von PDF-Rechnungen per Gmail basierend auf Stripe-Trigger

Anfänger

Dies ist ein Invoice Processing, Multimodal AI-Bereich Automatisierungsworkflow mit 5 Nodes. Hauptsächlich werden Code, Gmail, Webhook und andere Nodes verwendet. Automatisches Senden von PDF-Rechnungen per Gmail durch Stripe-Zahlungsauslöser

Voraussetzungen
  • Google-Konto + Gmail API-Anmeldedaten
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)

Verwendete Nodes (5)

Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "meta": {
    "instanceId": "2000c64071c20843606b95c63795bb0797c41036047055a6586498e855b96efc"
  },
  "nodes": [
    {
      "id": "3c9c65d5-e8ef-472b-994f-14d67bf92479",
      "name": "Setzenup-Anleitung",
      "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 Payment Webhook-Trigger",
      "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": "Zahlungsdaten normalisieren",
      "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": "Rechnungs-HTML generieren",
      "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": "Rechnungs-E-Mail senden",
      "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
          }
        ]
      ]
    },
    "Stripe Payment Webhook": {
      "main": [
        [
          {
            "node": "25314ce6-fbec-41b1-9328-2e075eb658a2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Anfänger - Rechnungsverarbeitung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Anfänger
Anzahl der Nodes5
Kategorie2
Node-Typen4
Schwierigkeitsbeschreibung

Für n8n-Anfänger, einfache Workflows mit 1-5 Nodes

Autor
David Olusola

David Olusola

@dae221

I 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

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34