8
n8n 한국어amn8n.com

Quickbook 인voi提醒

중급

이것은Invoice Processing분야의자동화 워크플로우로, 10개의 노드를 포함합니다.주로 Code, EmailSend, Quickbooks, ScheduleTrigger 등의 노드를 사용하며. 그룹화된 QuickBooks 인voice를 이메일로 발송하는 자동화된 결제 알림

사전 요구사항
  • 특별한 사전 요구사항 없이 가져와 바로 사용 가능합니다

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "1FISjXuv3wcHwVKc",
  "meta": {
    "instanceId": "e727f992f69a44655d3d4d5a1d4a30ca3ec1573139240bc4d84b17b8f66642c8",
    "templateCredsSetupCompleted": true
  },
  "name": "Quickbook Invoice Reminder",
  "tags": [],
  "nodes": [
    {
      "id": "d2bb6837-055b-4eba-a34d-4e64a8fabf77",
      "name": "미결제 송장 조회",
      "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": "알림 이메일 발송",
      "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": "송장 템플릿",
      "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": "고객별 송장 목록 조회",
      "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": "스케줄러",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -592,
        416
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a6f70c2e-c4f4-416d-9b38-8c741a51dd94",
      "name": "스티키 노트1",
      "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": "스티키 노트",
      "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": "스티키 노트2",
      "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": "스티키 노트3",
      "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": "스티키 노트4",
      "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
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 청구서 처리

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수10
카테고리1
노드 유형5
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34