AI-Powered Invoice Reminder & Payment Tracker for Finance & Accounting

Experte

Dies ist ein Invoice Processing, Multimodal AI-Bereich Automatisierungsworkflow mit 35 Nodes. Hauptsächlich werden If, Set, Code, Webhook, Postgres und andere Nodes verwendet.

Voraussetzungen
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • PostgreSQL-Datenbankverbindungsdaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "uOMGyPBvAP5ytb64",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI-Powered Invoice Reminder & Payment Tracker for Finance & Accounting",
  "tags": [],
  "nodes": [
    {
      "id": "5e70b579-3fec-471f-8788-2205c066e21f",
      "name": "Tägliche Prüfung planen",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "Runs every day at 9 AM",
      "position": [
        0,
        -304
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 * * *"
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 1.2
    },
    {
      "id": "75c19552-8451-4c27-978c-54d6ea422b84",
      "name": "Ausstehende Rechnungen abrufen",
      "type": "n8n-nodes-base.postgres",
      "notes": "Query database for unpaid/overdue invoices",
      "position": [
        224,
        -304
      ],
      "parameters": {
        "query": "SELECT \n  invoice_id,\n  client_name,\n  client_email,\n  invoice_number,\n  invoice_amount,\n  currency,\n  issue_date,\n  due_date,\n  payment_status,\n  days_overdue,\n  last_reminder_sent\nFROM invoices \nWHERE payment_status != 'paid' \nAND due_date <= CURRENT_DATE + INTERVAL '7 days'\nORDER BY due_date ASC;",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "4Y4qEFGqF2krfRHZ",
          "name": "Postgres-test"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.4
    },
    {
      "id": "3bf276a9-2041-4f5c-995c-ca3ffb4f0cd0",
      "name": "Überfällige Rechnungen filtern",
      "type": "n8n-nodes-base.if",
      "notes": "Separate overdue from upcoming",
      "position": [
        448,
        -304
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "condition-1",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.payment_status }}",
              "rightValue": "unpaid"
            },
            {
              "id": "condition-2",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ $json.days_overdue }}",
              "rightValue": 0
            }
          ]
        }
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "000ea7a3-3db4-409d-bdea-b416590933e4",
      "name": "Erinnerungslogik berechnen",
      "type": "n8n-nodes-base.code",
      "notes": "Smart logic for reminder timing",
      "position": [
        672,
        -304
      ],
      "parameters": {
        "jsCode": "const invoices = $input.all();\nconst today = new Date();\nconst results = [];\n\nfor (const invoice of invoices) {\n  const dueDate = new Date(invoice.json.due_date);\n  const issueDate = new Date(invoice.json.issue_date);\n  const lastReminder = invoice.json.last_reminder_sent ? new Date(invoice.json.last_reminder_sent) : null;\n  \n  // Calculate days overdue\n  const daysOverdue = Math.floor((today - dueDate) / (1000 * 60 * 60 * 24));\n  \n  // Calculate days since last reminder\n  const daysSinceReminder = lastReminder ? Math.floor((today - lastReminder) / (1000 * 60 * 60 * 24)) : 999;\n  \n  // Determine reminder type and urgency\n  let reminderType = '';\n  let urgencyLevel = '';\n  let shouldSendReminder = false;\n  \n  if (daysOverdue > 30 && daysSinceReminder >= 3) {\n    reminderType = 'final_notice';\n    urgencyLevel = 'critical';\n    shouldSendReminder = true;\n  } else if (daysOverdue > 14 && daysSinceReminder >= 5) {\n    reminderType = 'second_reminder';\n    urgencyLevel = 'high';\n    shouldSendReminder = true;\n  } else if (daysOverdue > 0 && daysSinceReminder >= 7) {\n    reminderType = 'first_reminder';\n    urgencyLevel = 'medium';\n    shouldSendReminder = true;\n  } else if (daysOverdue === 0) {\n    reminderType = 'due_today';\n    urgencyLevel = 'medium';\n    shouldSendReminder = true;\n  } else if (daysOverdue < 0 && daysOverdue >= -3 && !lastReminder) {\n    reminderType = 'upcoming_reminder';\n    urgencyLevel = 'low';\n    shouldSendReminder = true;\n  }\n  \n  if (shouldSendReminder) {\n    results.push({\n      json: {\n        ...invoice.json,\n        daysOverdue,\n        daysSinceReminder,\n        reminderType,\n        urgencyLevel,\n        shouldSendReminder\n      }\n    });\n  }\n}\n\nreturn results;"
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "2879e970-5943-4a87-b74c-dd92e9c83662",
      "name": "KI-Prompt vorbereiten",
      "type": "n8n-nodes-base.set",
      "position": [
        896,
        -304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "ai-prompt",
              "name": "aiPrompt",
              "type": "string",
              "value": "=Generate a professional and friendly payment reminder email for the following invoice:\n\nClient Name: {{ $json.client_name }}\nInvoice Number: {{ $json.invoice_number }}\nAmount: {{ $json.currency }} {{ $json.invoice_amount }}\nIssue Date: {{ $json.issue_date }}\nDue Date: {{ $json.due_date }}\nDays Overdue: {{ $json.daysOverdue }}\nReminder Type: {{ $json.reminderType }}\nUrgency: {{ $json.urgencyLevel }}\n\nThe email should:\n- Be courteous and professional\n- Clearly state the outstanding amount and invoice details\n- Mention the due date and overdue status if applicable\n- Include a polite call-to-action for payment\n- Provide payment instructions or link\n- Be appropriately urgent based on the reminder type\n- End with a professional signature\n\nFormat the response as a complete email with subject line."
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5e61c6ea-62df-4c69-95d8-5b5dd7a0eb66",
      "name": "E-Mail formatieren",
      "type": "n8n-nodes-base.code",
      "notes": "Format email with HTML styling",
      "position": [
        1472,
        -304
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n  const aiResponse = item.json.message?.content || item.json.response || '';\n  \n  // Extract subject and body from AI response\n  const subjectMatch = aiResponse.match(/Subject:(.+?)\\n/i);\n  const subject = subjectMatch ? subjectMatch[1].trim() : `Payment Reminder - Invoice ${item.json.invoice_number}`;\n  \n  // Remove subject line from body\n  let body = aiResponse.replace(/Subject:(.+?)\\n/i, '').trim();\n  \n  // Add invoice details table\n  const invoiceTable = `\n  <div style=\"background-color: #f5f5f5; padding: 20px; border-radius: 8px; margin: 20px 0;\">\n    <h3 style=\"color: #333; margin-top: 0;\">Invoice Details</h3>\n    <table style=\"width: 100%; border-collapse: collapse;\">\n      <tr>\n        <td style=\"padding: 8px; font-weight: bold;\">Invoice Number:</td>\n        <td style=\"padding: 8px;\">${item.json.invoice_number}</td>\n      </tr>\n      <tr>\n        <td style=\"padding: 8px; font-weight: bold;\">Amount:</td>\n        <td style=\"padding: 8px;\">${item.json.currency} ${item.json.invoice_amount}</td>\n      </tr>\n      <tr>\n        <td style=\"padding: 8px; font-weight: bold;\">Due Date:</td>\n        <td style=\"padding: 8px;\">${item.json.due_date}</td>\n      </tr>\n      <tr>\n        <td style=\"padding: 8px; font-weight: bold;\">Status:</td>\n        <td style=\"padding: 8px; color: ${item.json.daysOverdue > 0 ? '#d32f2f' : '#f57c00'};\">\n          ${item.json.daysOverdue > 0 ? `Overdue by ${item.json.daysOverdue} days` : 'Due Soon'}\n        </td>\n      </tr>\n    </table>\n  </div>\n  `;\n  \n  // Convert body to HTML format\n  body = body.replace(/\\n/g, '<br>').replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n  \n  // Combine into HTML email\n  const htmlBody = `\n  <html>\n    <body style=\"font-family: Arial, sans-serif; line-height: 1.6; color: #333;\">\n      ${body.split('<br>')[0]}\n      ${invoiceTable}\n      ${body.split('<br>').slice(1).join('<br>')}\n      <div style=\"margin-top: 30px; padding-top: 20px; border-top: 1px solid #ddd; font-size: 12px; color: #666;\">\n        <p>This is an automated reminder. If you have already made the payment, please disregard this email.</p>\n      </div>\n    </body>\n  </html>\n  `;\n  \n  results.push({\n    json: {\n      ...item.json,\n      emailSubject: subject,\n      emailBody: htmlBody,\n      emailBodyPlain: body.replace(/<[^>]*>/g, '')\n    }\n  });\n}\n\nreturn results;"
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "49d9b854-ffda-4125-b07f-9997b799d5aa",
      "name": "Erinnerungs-E-Mail senden",
      "type": "n8n-nodes-base.emailSend",
      "notes": "Send the reminder email",
      "position": [
        1696,
        -304
      ],
      "webhookId": "b74f682a-e6cc-452f-b8ba-2d4390c6e61a",
      "parameters": {
        "options": {
          "appendAttribution": false,
          "allowUnauthorizedCerts": false
        },
        "subject": "={{ $json.emailSubject }}",
        "toEmail": "abc@gmail.com",
        "fromEmail": "xyz@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "G1kyF8cSWTZ4vouN",
          "name": "SMTP -test"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.1
    },
    {
      "id": "6f307b3e-9222-4df7-a92b-9c7dbcea6d79",
      "name": "Erinnerungsstatus aktualisieren",
      "type": "n8n-nodes-base.postgres",
      "notes": "Log reminder sent in database",
      "position": [
        1920,
        -304
      ],
      "parameters": {
        "query": "=UPDATE invoices \nSET \n  last_reminder_sent = CURRENT_TIMESTAMP,\n  reminder_count = reminder_count + 1,\n  last_reminder_type = '{{ $json.reminderType }}'\nWHERE invoice_id = '{{ $json.invoice_id }}';",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "4Y4qEFGqF2krfRHZ",
          "name": "Postgres-test"
        }
      },
      "notesInFlow": true,
      "typeVersion": 2.4
    },
    {
      "id": "07f23377-e924-49b1-b803-88aedd3de5bd",
      "name": "Aktivitätsprotokoll erstellen",
      "type": "n8n-nodes-base.set",
      "position": [
        2144,
        -304
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "log-entry",
              "name": "logEntry",
              "type": "object",
              "value": "={\n  \"timestamp\": \"{{ $now.toISO() }}\",\n  \"invoice_id\": \"{{ $json.invoice_id }}\",\n  \"invoice_number\": \"{{ $json.invoice_number }}\",\n  \"client_name\": \"{{ $json.client_name }}\",\n  \"client_email\": \"{{ $json.client_email }}\",\n  \"amount\": \"{{ $json.invoice_amount }}\",\n  \"reminder_type\": \"{{ $json.reminderType }}\",\n  \"urgency_level\": \"{{ $json.urgencyLevel }}\",\n  \"days_overdue\": {{ $json.daysOverdue }},\n  \"status\": \"reminder_sent\"\n}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "5884f963-de92-4613-ab16-5fc5bff620cd",
      "name": "Im Aktivitätsprotokoll speichern",
      "type": "n8n-nodes-base.postgres",
      "position": [
        2368,
        -304
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "invoice_activity_log"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "public"
        },
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": []
        },
        "options": {}
      },
      "credentials": {
        "postgres": {
          "id": "4Y4qEFGqF2krfRHZ",
          "name": "Postgres-test"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "473efd7a-44f7-4724-a638-731e337e21e2",
      "name": "Tägliche Zusammenfassung generieren",
      "type": "n8n-nodes-base.code",
      "notes": "Create summary report",
      "position": [
        2592,
        -304
      ],
      "parameters": {
        "jsCode": "const allItems = $input.all();\nconst summary = {\n  totalReminders: allItems.length,\n  byUrgency: {},\n  byType: {},\n  totalAmountOutstanding: 0,\n  clients: []\n};\n\nfor (const item of allItems) {\n  // Count by urgency\n  summary.byUrgency[item.json.urgencyLevel] = (summary.byUrgency[item.json.urgencyLevel] || 0) + 1;\n  \n  // Count by type\n  summary.byType[item.json.reminderType] = (summary.byType[item.json.reminderType] || 0) + 1;\n  \n  // Sum outstanding amounts\n  summary.totalAmountOutstanding += parseFloat(item.json.invoice_amount);\n  \n  // Collect client info\n  summary.clients.push({\n    name: item.json.client_name,\n    invoice: item.json.invoice_number,\n    amount: item.json.invoice_amount,\n    daysOverdue: item.json.daysOverdue,\n    urgency: item.json.urgencyLevel\n  });\n}\n\nreturn [{ json: summary }];"
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "6a8c062f-093c-40cd-869f-e459ea3b0eac",
      "name": "Zusammenfassung an Finanzteam senden",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2816,
        -304
      ],
      "webhookId": "ed662db6-84a8-4c6c-bef4-2ac72009a056",
      "parameters": {
        "options": {},
        "subject": "=Daily Invoice Reminder Report - {{ $now.toFormat('yyyy-MM-dd') }}",
        "toEmail": "abc@gmail.com",
        "fromEmail": "xyz@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "G1kyF8cSWTZ4vouN",
          "name": "SMTP -test"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "29cc7161-00b3-4ad6-8df4-e582296fc2ed",
      "name": "Webhook: Zahlung erhalten",
      "type": "n8n-nodes-base.webhook",
      "notes": "Trigger when payment is received",
      "position": [
        -48,
        368
      ],
      "webhookId": "invoice-payment-webhook",
      "parameters": {
        "path": "invoice-paid",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "responseNode"
      },
      "notesInFlow": true,
      "typeVersion": 2
    },
    {
      "id": "7338b886-106f-4aad-86b7-dd4cb743d8d1",
      "name": "Zahlungsstatus aktualisieren",
      "type": "n8n-nodes-base.postgres",
      "position": [
        208,
        368
      ],
      "parameters": {
        "query": "=UPDATE invoices \nSET \n  payment_status = 'paid',\n  payment_date = CURRENT_TIMESTAMP,\n  payment_amount = {{ $json.body.amount }},\n  payment_method = '{{ $json.body.payment_method }}'\nWHERE invoice_number = '{{ $json.body.invoice_number }}'\nRETURNING *;",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "4Y4qEFGqF2krfRHZ",
          "name": "Postgres-test"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "f1699fe0-c7fe-48f7-9e39-62e983a7b063",
      "name": "Webhook Response",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        464,
        144
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={\n  \"success\": true,\n  \"message\": \"Payment recorded successfully\",\n  \"invoice_number\": \"{{ $json.invoice_number }}\",\n  \"amount_paid\": {{ $json.payment_amount }},\n  \"status\": \"{{ $json.payment_status }}\"\n}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "5554a9a8-1fc3-4743-9f98-896ae8a2b146",
      "name": "Zahlungsbestätigung senden",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        480,
        576
      ],
      "webhookId": "11ecce72-7466-43e6-8c05-d5f181c5ced7",
      "parameters": {
        "options": {},
        "subject": "=Payment Confirmation - Invoice {{ $json.invoice_number }}",
        "toEmail": "abc@gmail.com",
        "fromEmail": "xyz@gmail.com"
      },
      "credentials": {
        "smtp": {
          "id": "G1kyF8cSWTZ4vouN",
          "name": "SMTP -test"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "8a45b060-fd84-4e2f-a880-5bb2db6e5cb4",
      "name": "E-Mail generieren",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "notes": "Use AI to generate personalized email",
      "position": [
        1200,
        -80
      ],
      "parameters": {
        "model": "=gpt-4o-mini",
        "options": {
          "maxTokens": 500,
          "temperature": 0.7
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "CDQ16eImh6D4tY15",
          "name": "OpenAi account 2 - test"
        }
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "51c1516e-e53b-4435-ab0f-a8c147b3478a",
      "name": "KI-Agent zur E-Mail-Inhaltserstellung",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1120,
        -304
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2.2
    },
    {
      "id": "278e2272-baa8-4c0e-81db-836db7204219",
      "name": "Notiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -32,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Starts the workflow automatically each morning."
      },
      "typeVersion": 1
    },
    {
      "id": "77598975-6120-472e-b9a1-d1b23c64f651",
      "name": "Notiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Decides when and how to send reminders.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "98bbe714-19b0-4be2-8610-95074be891e8",
      "name": "Notiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        416,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Keeps only overdue invoices.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d4b28ef6-da2a-4d6a-8486-5cb60c272115",
      "name": "Notiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Gets unpaid invoices from the database.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7789557b-f95a-4336-ae2a-2247b215cc6e",
      "name": "Notiz4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Creates a personalized AI prompt for each client.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9e5d7552-ab77-48bd-9f64-78a82f9676b1",
      "name": "Notiz5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2096,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Records reminder activity for audit.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "63b897b8-e59e-42c4-9d3f-194c52c850e6",
      "name": "Notiz6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1872,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Marks reminder as sent in the database.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9ea47eb5-9b59-47df-873f-1f1060ae9bf5",
      "name": "Notiz7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Sends the email via Gmail or SMTP.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "9e881563-1895-40a0-8b1b-9f8fe886e284",
      "name": "Notiz8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1424,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Converts AI text to a professional HTML email.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1b036318-bfc1-4bef-bde8-06c3523c5ccf",
      "name": "Notiz9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -416
      ],
      "parameters": {
        "width": 272,
        "height": 288,
        "content": "Uses AI to draft reminder emails.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b570ef63-5ee6-4605-b461-429f1d817b8b",
      "name": "Notiz10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2544,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Prepares a report of reminders sent.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "10b172aa-f4bb-4ccc-a102-2593e0d78ff8",
      "name": "Notiz11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2768,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Emails summary to the finance team.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a0c95551-0747-4c97-9cf7-d61ff9c12fd8",
      "name": "Notiz12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        -416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Stores raw workflow data for review.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "4e422ead-f833-4de8-8f86-3b78116b2eab",
      "name": "Notiz13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        0
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Generates thank-you massage via AI.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0816a7b8-03bd-4416-aa58-a30f1e3af0f5",
      "name": "Notiz14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -96,
        240
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Captures payment notifications.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0f6e79b9-107d-4ddb-bbaa-421a07d47078",
      "name": "Notiz15",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        240
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Updates invoice as “paid.”\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ce1221dd-7976-47d1-9cc9-81389efc72fe",
      "name": "Notiz16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        416
      ],
      "parameters": {
        "width": 192,
        "height": 288,
        "content": "Sends payment receipt to client."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "cb6d5397-a382-40d3-92c0-69022ceec1a5",
  "connections": {
    "5e61c6ea-62df-4c69-95d8-5b5dd7a0eb66": {
      "main": [
        [
          {
            "node": "49d9b854-ffda-4125-b07f-9997b799d5aa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8a45b060-fd84-4e2f-a880-5bb2db6e5cb4": {
      "ai_languageModel": [
        [
          {
            "node": "51c1516e-e53b-4435-ab0f-a8c147b3478a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "2879e970-5943-4a87-b74c-dd92e9c83662": {
      "main": [
        [
          {
            "node": "51c1516e-e53b-4435-ab0f-a8c147b3478a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "07f23377-e924-49b1-b803-88aedd3de5bd": {
      "main": [
        [
          {
            "node": "5884f963-de92-4613-ab16-5fc5bff620cd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "49d9b854-ffda-4125-b07f-9997b799d5aa": {
      "main": [
        [
          {
            "node": "6f307b3e-9222-4df7-a92b-9c7dbcea6d79",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5884f963-de92-4613-ab16-5fc5bff620cd": {
      "main": [
        [
          {
            "node": "473efd7a-44f7-4724-a638-731e337e21e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5e70b579-3fec-471f-8788-2205c066e21f": {
      "main": [
        [
          {
            "node": "75c19552-8451-4c27-978c-54d6ea422b84",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7338b886-106f-4aad-86b7-dd4cb743d8d1": {
      "main": [
        [
          {
            "node": "f1699fe0-c7fe-48f7-9e39-62e983a7b063",
            "type": "main",
            "index": 0
          },
          {
            "node": "5554a9a8-1fc3-4743-9f98-896ae8a2b146",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "75c19552-8451-4c27-978c-54d6ea422b84": {
      "main": [
        [
          {
            "node": "3bf276a9-2041-4f5c-995c-ca3ffb4f0cd0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "473efd7a-44f7-4724-a638-731e337e21e2": {
      "main": [
        [
          {
            "node": "6a8c062f-093c-40cd-869f-e459ea3b0eac",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6f307b3e-9222-4df7-a92b-9c7dbcea6d79": {
      "main": [
        [
          {
            "node": "07f23377-e924-49b1-b803-88aedd3de5bd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3bf276a9-2041-4f5c-995c-ca3ffb4f0cd0": {
      "main": [
        [
          {
            "node": "000ea7a3-3db4-409d-bdea-b416590933e4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "000ea7a3-3db4-409d-bdea-b416590933e4": {
      "main": [
        [
          {
            "node": "2879e970-5943-4a87-b74c-dd92e9c83662",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "29cc7161-00b3-4ad6-8df4-e582296fc2ed": {
      "main": [
        [
          {
            "node": "7338b886-106f-4aad-86b7-dd4cb743d8d1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "51c1516e-e53b-4435-ab0f-a8c147b3478a": {
      "main": [
        [
          {
            "node": "5e61c6ea-62df-4c69-95d8-5b5dd7a0eb66",
            "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?

Experte - 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
Experte
Anzahl der Nodes35
Kategorie2
Node-Typen11
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34