QuickBooks-Rechnungserinnerungen
Fortgeschritten
Dies ist ein Invoice Processing-Bereich Automatisierungsworkflow mit 10 Nodes. Hauptsächlich werden Code, EmailSend, Quickbooks, ScheduleTrigger und andere Nodes verwendet. Automatisierte Zahlungs-Erinnerungen für gruppierte QuickBooks-Rechnungen per E-Mail
Voraussetzungen
- •Keine besonderen Voraussetzungen, sofort nach Import nutzbar
Verwendete Nodes (10)
Kategorie
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": "1FISjXuv3wcHwVKc",
"meta": {
"instanceId": "e727f992f69a44655d3d4d5a1d4a30ca3ec1573139240bc4d84b17b8f66642c8",
"templateCredsSetupCompleted": true
},
"name": "Quickbook Invoice Reminder",
"tags": [],
"nodes": [
{
"id": "d2bb6837-055b-4eba-a34d-4e64a8fabf77",
"name": "Unbezahlte Rechnungen abrufen",
"type": "n8n-nodes-base.quickbooks",
"position": [
-192,
416
],
"parameters": {
"filters": {
"query": ""
},
"resource": "invoice",
"operation": "getAll",
"returnAll": true
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "r3A6wRAzyp859vQL",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "7748eaef-b6f5-44fb-99e0-8a1a3e71cd66",
"name": "Erinnerungs-E-Mail senden",
"type": "n8n-nodes-base.emailSend",
"position": [
848,
416
],
"parameters": {
"html": "={{ $json.emailBody }}",
"text": "=",
"options": {},
"subject": "=Unpaid Invoice Reminder for : {{$json.customer}}",
"toEmail": "={{ $json.invoices[0].json.BillEmail.Address }}",
"fromEmail": "placeholderEmail"
},
"credentials": {
"smtp": {
"id": "ZSjtbi8UmObTzmbO",
"name": "SMTP account"
}
},
"typeVersion": 1
},
{
"id": "ee0eefd1-3bb9-4d6e-8482-90360990b4c4",
"name": "Rechnungsvorlage",
"type": "n8n-nodes-base.code",
"position": [
432,
416
],
"parameters": {
"jsCode": "// This code runs for each item passed to the node.\n// We assume the input is the single item containing the customer and their invoices.\nconst item = $items(\"Get Customer Wise Invoice list\")[0];\n\n// Extract the customer name and the array of invoices\nconst customerName = item.json.customer;\nconst invoices = item.json.invoices;\n\n// --- 1. Process the Invoices ---\n\nlet totalAmountDue = 0;\nlet invoiceRows = ''; // This will hold the HTML for the table rows\n\n// Loop through each invoice to build the table rows and calculate the total amount\nfor (const invoice of invoices) {\n totalAmountDue += invoice.json.TotalAmt; // Add the invoice amount to the total\n \n // Create an HTML table row for the current invoice\n invoiceRows += `\n <tr style=\"border-bottom: 1px solid #ddd;\">\n <td style=\"padding: 12px; text-align: left;\">${invoice.json.DocNumber}</td>\n <td style=\"padding: 12px; text-align: left;\">${invoice.json.TxnDate}</td>\n <td style=\"padding: 12px; text-align: left;\">${invoice.json.DueDate}</td>\n <td style=\"padding: 12px; text-align: right; font-weight: bold;\">$${invoice.json.TotalAmt.toFixed(2)}</td>\n </tr>\n `;\n}\n\n// Format the final total to 2 decimal places\nconst formattedTotal = totalAmountDue.toFixed(2);\n\n// --- 2. Build the HTML Email Template ---\n\nconst emailHtml = `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n margin: 0;\n padding: 0;\n background-color: #f4f4f4;\n }\n .email-container {\n max-width: 600px;\n margin: 20px auto;\n background-color: #ffffff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n overflow: hidden;\n }\n .email-header {\n background-color: #007bff;\n color: #ffffff;\n padding: 20px;\n text-align: center;\n }\n .email-header h1 {\n margin: 0;\n font-size: 24px;\n }\n .email-body {\n padding: 30px;\n line-height: 1.6;\n color: #333333;\n }\n .email-body p {\n margin: 0 0 15px 0;\n }\n .invoice-table {\n width: 100%;\n border-collapse: collapse;\n margin: 20px 0;\n }\n .invoice-table th {\n background-color: #f2f2f2;\n padding: 12px;\n text-align: left;\n border-bottom: 2px solid #ddd;\n color: #555;\n }\n .total-row td {\n padding: 15px 12px;\n font-size: 18px;\n font-weight: bold;\n border-top: 2px solid #007bff;\n }\n .email-footer {\n text-align: center;\n padding: 20px;\n font-size: 12px;\n color: #888888;\n background-color: #f4f4f4;\n }\n .cta-button {\n display: inline-block;\n background-color: #28a745;\n color: #ffffff;\n padding: 12px 25px;\n margin-top: 20px;\n border-radius: 5px;\n text-decoration: none;\n font-weight: bold;\n }\n </style>\n</head>\n<body>\n <div class=\"email-container\">\n <div class=\"email-header\">\n <h1>Payment Reminder</h1>\n </div>\n <div class=\"email-body\">\n <p>Dear ${customerName},</p>\n <p>We're writing to kindly remind you about the outstanding balance on your account. We have listed the unpaid invoices below for your convenience.</p>\n \n <table class=\"invoice-table\">\n <thead>\n <tr>\n <th style=\"width: 25%;\">Invoice #</th>\n <th style=\"width: 25%;\">Date</th>\n <th style=\"width: 25%;\">Due Date</th>\n <th style=\"width: 25%; text-align: right;\">Amount</th>\n </tr>\n </thead>\n <tbody>\n ${invoiceRows}\n </tbody>\n </table>\n \n <table style=\"width: 100%; text-align: right;\">\n <tbody>\n <tr class=\"total-row\">\n <td>Total Amount Due: $${formattedTotal}</td>\n </tr>\n </tbody>\n </table>\n \n <p>If you have already made the payment, please disregard this email. If you have any questions about your invoices, feel free to contact us at any time.</p>\n <p>Thank you for your business!</p>\n <a href=\"https://your-payment-portal-link.com\" class=\"cta-button\">Pay Now</a>\n </div>\n <div class=\"email-footer\">\n <p>Your Company Name | 123 Business Rd, Business City, 12345</p>\n </div>\n </div>\n</body>\n</html>\n`;\n\n// --- 3. Return the HTML for the next node ---\n// The generated HTML is placed in the 'emailBody' property\n// This can be easily used in the 'HTML' field of a 'Send Email' node with an expression like: {{$json.emailBody}}\nitem.json.emailBody = emailHtml;\n\nreturn item;"
},
"typeVersion": 2
},
{
"id": "f7ffa78f-3f3a-413a-a2b9-89ab743dfd65",
"name": "Kundenweise Rechnungsliste abrufen",
"type": "n8n-nodes-base.code",
"position": [
176,
416
],
"parameters": {
"jsCode": "const getInvoices = $items(\"Get Unpaid Invoices\");\n\nconst invoices = []\nconst customerId = getInvoices[0].json.CustomerRef.value;\nconst customerName = getInvoices[0].json.CustomerRef.name;\n\nfor (const item of getInvoices) {\n // Access the invoices array from the JSON property of the current item\n \n if(customerId == item.json.CustomerRef.value && item.json.Balance > 0) {\n invoices.push(item)\n }\n \n}\n\n\nreturn {\n \"customer\": customerName,\n \"customerId\": customerId,\n \"invoices\": invoices\n };"
},
"typeVersion": 2
},
{
"id": "3cc14603-de0a-42e1-a495-f4790ff14d4d",
"name": "Zeitplaner",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-592,
416
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1
},
{
"id": "a6f70c2e-c4f4-416d-9b38-8c741a51dd94",
"name": "Notiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1920,
-352
],
"parameters": {
"color": 6,
"width": 1104,
"height": 1648,
"content": "# Automated QuickBooks Payment Reminders with Dynamic Invoice Tables\n\nThis workflow provides a powerful solution for businesses using QuickBooks Online to automate their payment reminder process. It solves the time-consuming and manual task of chasing late payments by creating a fully automated system that ensures every customer with an outstanding balance receives a timely, professional, and consolidated reminder email.\n\nThe workflow periodically fetches all unpaid invoices from your QuickBooks account. Its core strength lies in its ability to group multiple outstanding invoices for a single customer into one email, presenting them in a clean, easy-to-read table. This improves clarity for your customers, reduces email clutter, and significantly increases the likelihood of prompt payment.\n\nThis template was crafted with care by the team at **Prompt-Wizards** to help you streamline your finances and build stronger customer relationships through smart automation.\n\n## How the Workflow Operates\n\n1. **Scheduler:** The workflow initiates on a customizable schedule (e.g., every day at 9 AM).\n2. **Get Unpaid Invoices:** It fetches all invoices from your QuickBooks account that have an outstanding balance greater than zero and were created within a specified date range.\n3. **Get Customer Wise Invoice list:** This Code node intelligently processes the list of invoices and groups them by customer name, preparing the data for email generation.\n4. **Invoice Template:** This Code node dynamically generates a beautiful, responsive HTML email for each customer, complete with a personalized greeting, an invoice table, and the total amount due.\n5. **Send Reminder Email:** The final node sends the uniquely crafted email to the customer's billing address on file.\n\n## Prerequisites\n\nBefore you begin, please ensure you have the following:\n* An active n8n instance.\n* A QuickBooks Online account with API access.\n* An email service (e.g., SMTP, Gmail, Outlook) connected to n8n as credentials.\n\n## Step-by-Step Setup Guide\n\nFollow these instructions carefully to configure the workflow for your business in under 5 minutes.\n\n### 1. Connect Your QuickBooks Account\nYou must authenticate your QuickBooks account to allow n8n to fetch invoice data.\n\n* Select the **`Get Unpaid Invoices`** node.\n* In the **Credentials** section on the right, either select your existing QuickBooks account from the dropdown or click **Create New** to connect your account.\n* *(Optional)*: In the **Options** section of this node, you can adjust the `TxnDate` filter. It is pre-set to look at invoices from the last 90 days. You can change this date range to suit your needs.\n\n### 2. Personalize the Email Template\nPersonalize the email to match your brand and include your payment information.\n\n1. Open the **`Invoice Template`** node.\n2. Inside the code editor, find and replace these two placeholder values:\n * **Your Payment Link:** On **line 115**, find `href=\"https://your-payment-portal-link.com\"` and replace the placeholder URL with a link to your actual payment portal or website.\n * **Your Company Details:** On **line 120**, find `<p>Your Company Name | ...` and replace the placeholder text with your real company name and address in the email footer.\n\n### 3. Configure Your Email Account\nYou must connect the email account you want to send reminders from.\n\n* Select the **`Send Reminder Email`** node.\n* In the **Credentials** section, select your email account (e.g., Gmail, Outlook) or create a new connection.\n* The `To Address`, `Subject`, and `HTML` fields are already configured with expressions to work automatically. **No changes are needed here!**\n\n### 4. Activate the Workflow\n1. Open the **`Scheduler`** node to set the schedule for how often you want the workflow to run.\n2. **Save** the workflow using the button at the top.\n3. Click the **Active** toggle at the top right of the screen.\n\nYour automated payment reminder system is now live!!!\n\nFor questions or to explore more custom solutions, visit us at [Elegant Biztech](https://www.elegantbiztech.com/) or contact us at [sales@elegantbiztech.com](mailto:sales@elegantbiztech.com)."
},
"typeVersion": 1
},
{
"id": "b1d5e894-1873-49da-9249-a837264b133a",
"name": "Notiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
256
],
"parameters": {
"color": 4,
"width": 288,
"height": 304,
"content": "### 1. Set Your Schedule\n\nConfigure how often you want to check for overdue invoices. We recommend setting this to run **once a day** or **once a week**."
},
"typeVersion": 1
},
{
"id": "8345f2e0-1628-4e87-83c2-3aa555fa7887",
"name": "Notiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
176
],
"parameters": {
"color": 4,
"width": 304,
"height": 400,
"content": "### 2. Connect Your QuickBooks Account\n\n1. **Credentials**: Select or create your QuickBooks account.\n2. **Filters (Optional)**: You can adjust the `TxnDate` filter in the **Options** to change the date range for the invoices you want to check."
},
"typeVersion": 1
},
{
"id": "6a8ffc03-290d-4940-8f5c-cd792af6d5f7",
"name": "Notiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
192
],
"parameters": {
"color": 4,
"width": 304,
"height": 368,
"content": "### 3. Personalize Your Email Template\n\nThis code creates the email. You only need to edit two things inside the code editor:\n- **Line 115**: Update the `href` with your company's payment link.\n- **Line 120**: Change `Your Company Name` and address in the email footer."
},
"typeVersion": 1
},
{
"id": "b16553f5-200c-40ee-b106-4c474273b45c",
"name": "Notiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
192
],
"parameters": {
"color": 4,
"width": 304,
"height": 368,
"content": "### 4. Configure & Activate\n\n1. **Credentials**: Select the email account you want to send from.\n2. **To Address & HTML**: These are set automatically. No changes are needed.\n3. **Activate Workflow**: After configuring, don't forget to **Save** and then toggle the workflow to **Active**."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "f9793645-ce80-4bfb-9f7b-3e2dbe6a59ec",
"connections": {
"3cc14603-de0a-42e1-a495-f4790ff14d4d": {
"main": [
[
{
"node": "d2bb6837-055b-4eba-a34d-4e64a8fabf77",
"type": "main",
"index": 0
}
]
]
},
"ee0eefd1-3bb9-4d6e-8482-90360990b4c4": {
"main": [
[
{
"node": "7748eaef-b6f5-44fb-99e0-8a1a3e71cd66",
"type": "main",
"index": 0
}
]
]
},
"d2bb6837-055b-4eba-a34d-4e64a8fabf77": {
"main": [
[
{
"node": "f7ffa78f-3f3a-413a-a2b9-89ab743dfd65",
"type": "main",
"index": 0
}
]
]
},
"f7ffa78f-3f3a-413a-a2b9-89ab743dfd65": {
"main": [
[
{
"node": "ee0eefd1-3bb9-4d6e-8482-90360990b4c4",
"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?
Fortgeschritten - Rechnungsverarbeitung
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.
Verwandte Workflows
Automatisierung von QuickBooks-Rechnungen zu benutzerdefinierten PDFs und E-Mails
Benutzerdefinierte QuickBooks-Rechnungen mit Markenzeichen mit Gotenberg in PDF konvertieren und per E-Mail versenden
Code
Html
Merge
+
Code
Html
Merge
19 NodesElegant Biztech
Rechnungsverarbeitung
Automatisierter QuickBooks-Verkaufsabweichungsdetektor (mit professioneller E-Mail-Erinnerung) (In Prüfung)
Automatisierter QuickBooks-Verkäufe-Anomalie-Detektor mit professionellen E-Mail-Erinnerungen
If
Set
Code
+
If
Set
Code
26 NodesElegant Biztech
Kundenbeziehungsmanagement
AI-Powered Invoice Reminder & Payment Tracker for Finance & Accounting
If
Set
Code
+
If
Set
Code
35 NodesOneclick AI Squad
Rechnungsverarbeitung
Automatische Erstellung von Rechnungen aus Gmail-Labels mit GPT-4O + QuickBooks
Automatische Erstellung von Rechnungen aus Gmail-Labeln mit GPT-4O + QuickBooks
Code
Gmail
Quickbooks
+
Code
Gmail
Quickbooks
23 NodesRosh Ragel
Rechnungsverarbeitung
Rechnungsdaten mit PDF-Vektoren, Google Drive und Datenbank extrahieren und speichern
Extrahieren und Speichern von Rechnungsdaten mit PDF Vector, Google Drive und Datenbank
If
Code
Slack
+
If
Code
Slack
26 NodesPDF Vector
Rechnungsverarbeitung
Automatisierung von Kundenpflege-E-Mails und Notion-Kundenbewertungssammlung
Mit WhatsApp, GPT-4V und Google Sheets Belegdaten extrahieren und ordnen
If
Code
Notion
+
If
Code
Notion
18 NodesShelly-Ann Davy
Rechnungsverarbeitung
Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes10
Kategorie1
Node-Typen5
Autor
Elegant Biztech
@ebworkflowsExterne Links
Auf n8n.io ansehen →
Diesen Workflow teilen