자동화된 QuickBooks 발행서 및 사용자 정의 PDF 및 이메일
고급
이것은Invoice Processing분야의자동화 워크플로우로, 19개의 노드를 포함합니다.주로 Code, Html, Merge, Webhook, EmailSend 등의 노드를 사용하며. Gotenberg를 사용하여 사용자 정의 브랜드 QuickBooks 인보이스를 PDF로 변환하고 이메일로 전송
사전 요구사항
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
- •대상 API의 인증 정보가 필요할 수 있음
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "2hX0dXVASiaWn1Vg",
"meta": {
"instanceId": "e727f992f69a44655d3d4d5a1d4a30ca3ec1573139240bc4d84b17b8f66642c8",
"templateCredsSetupCompleted": true
},
"name": "Automated QuickBooks Invoice to Custom PDF & Email",
"tags": [],
"nodes": [
{
"id": "05599a83-f5c2-46db-8864-53c9e1b45f0d",
"name": "새 QuickBooks 송장 수신 대기",
"type": "n8n-nodes-base.webhook",
"position": [
512,
1248
],
"webhookId": "f94d4908-7ef3-42b7-aa27-d6028475d32c",
"parameters": {
"path": "qbo-invoice-webhook",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"id": "1dc144aa-6849-4e95-a4d1-1f9c80b16b63",
"name": "QuickBooks에서 송장 데이터 가져오기",
"type": "n8n-nodes-base.quickbooks",
"position": [
1248,
976
],
"parameters": {
"resource": "invoice",
"invoiceId": "={{ $json.body.eventNotifications[0].dataChangeEvent.entities[0].id }}"
},
"credentials": {
"quickBooksOAuth2Api": {
"id": "r3A6wRAzyp859vQL",
"name": "QuickBooks Online account"
}
},
"typeVersion": 1
},
{
"id": "b56096d7-37cf-41b7-ab77-ebb35c176e01",
"name": "회사 로고 이미지 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
880,
1248
],
"parameters": {
"url": "https://www.logomyway.com/logos_new/32474/CLEARWATER-HUDSON_497267718070.png",
"options": {},
"responseFormat": "file",
"dataPropertyName": "logodata"
},
"typeVersion": 1
},
{
"id": "97f6e4f4-82c8-4bbd-bad2-a02f69ca6150",
"name": "회사 서명 이미지 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
880,
1600
],
"parameters": {
"url": "https://upload.wikimedia.org/wikipedia/commons/2/27/Narf_signature.png",
"options": {},
"responseFormat": "file",
"dataPropertyName": "signaturedata"
},
"typeVersion": 1
},
{
"id": "7b5653c7-4483-463c-a7e2-fab408ea1f91",
"name": "로고를 Base64로 변환",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1248,
1248
],
"parameters": {
"options": {},
"operation": "binaryToPropery",
"destinationKey": "logodata",
"binaryPropertyName": "logodata"
},
"typeVersion": 1
},
{
"id": "4fa1d59c-2ace-4251-a0db-49b62d18f62a",
"name": "서명을 Base64로 변환",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1248,
1424
],
"parameters": {
"options": {},
"operation": "binaryToPropery",
"destinationKey": "signaturedata",
"binaryPropertyName": "signaturedata"
},
"typeVersion": 1
},
{
"id": "38d30ac3-298c-4731-a7b3-d45ac80abb25",
"name": "송장, 로고 및 서명 결합",
"type": "n8n-nodes-base.merge",
"position": [
1472,
1232
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "8539ed24-374b-4ecb-b152-ef6d76365f0b",
"name": "템플릿용 전체 데이터 준비",
"type": "n8n-nodes-base.code",
"position": [
1680,
1248
],
"parameters": {
"jsCode": "// This is the final, production-ready code. It fixes the \"PAID\" stamp logic.\n\nconst items = $items(\"Combine Invoice, Logo & Signature\"); // Ensure this is the correct name of your Merge node\n\n// Step 1: Correctly access the data\nconst invoiceData = items[0].json;\nconst logoJson = items[1].json;\nconst signatureJson = items[2].json;\n\n// Step 2: Safety check\nif (!logoJson || !logoJson.logodata || !signatureJson || !signatureJson.signaturedata) {\n throw new Error(\"Could not find 'logodata' or 'signaturedata' properties. Check the nodes providing the images.\");\n}\n\n// Step 3: Create the full, correct Data URI for the images\nconst logoSrc = `data:image/png;base64,${logoJson.logodata}`;\nconst signatureSrc = `data:image/png;base64,${signatureJson.signaturedata}`;\n\n// Step 4: Format dates professionally\nfunction formatDate(dateString) {\n if (!dateString) return 'N/A';\n const options = { year: 'numeric', month: 'long', day: 'numeric' };\n return new Date(dateString + 'T00:00:00-00:00').toLocaleDateString('en-US', options);\n}\n\n// Step 5: Build the HTML for the line items\nlet lineItemsHtml = '';\nfor (const item of invoiceData.Line) {\n if (item.DetailType === 'SalesItemLineDetail') {\n // Added a subtle grey color for the description for a more refined look\n const description = item.Description ? `<br><span style=\"color: #718096; font-size: 0.85rem;\">${item.Description}</span>` : '';\n lineItemsHtml += `\n <tr>\n <td><strong>${item.SalesItemLineDetail.ItemRef.name || 'N/A'}</strong>${description}</td>\n <td class=\"text-center\">${item.SalesItemLineDetail.Qty || 1}</td>\n <td class=\"text-right\">$${(item.SalesItemLineDetail.UnitPrice || 0).toFixed(2)}</td>\n <td class=\"text-right\">$${(item.Amount || 0).toFixed(2)}</td>\n </tr>`;\n }\n}\n\n// Step 6: THE FIX - Conditionally create the PAID stamp HTML\nlet paidStampHtml = '';\n// Only if the balance is zero or less, create the entire div. Otherwise, it's an empty string.\nif (invoiceData.Balance <= 0) {\n paidStampHtml = '<div class=\"paid-stamp\">PAID</div>';\n}\n\n// Step 7: Return the final JSON object\nreturn [{\n json: {\n customerName: invoiceData.CustomerRef.name,\n customerEmail: invoiceData.BillEmail.Address,\n invoiceNumber: invoiceData.DocNumber,\n invoiceDate: formatDate(invoiceData.TxnDate),\n dueDate: formatDate(invoiceData.DueDate),\n lineItems: lineItemsHtml,\n subtotal: (invoiceData.TotalAmt - invoiceData.TxnTaxDetail.TotalTax).toFixed(2),\n tax: (invoiceData.TxnTaxDetail.TotalTax).toFixed(2),\n balanceDue: (invoiceData.Balance).toFixed(2),\n notes: invoiceData.CustomerMemo.value,\n paymentTerms: invoiceData.SalesTermRef.name,\n logoSrc: logoSrc,\n signatureSrc: signatureSrc,\n paidStampHtml: paidStampHtml // Pass the conditional HTML to the template\n }\n}];"
},
"typeVersion": 2
},
{
"id": "2fdd3ef9-ef1f-42a5-8a29-64e439645e83",
"name": "데이터로 HTML 송장 생성",
"type": "n8n-nodes-base.html",
"position": [
1888,
1248
],
"parameters": {
"html": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <title>Invoice #{{$json.invoiceNumber}}</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n <style>\n @page {\n size: A4;\n margin: 1.5cm;\n @bottom-center {\n content: \"Page \" counter(page) \" of \" counter(pages);\n font-family: 'Inter', sans-serif;\n font-size: 9pt;\n color: #999;\n padding-top: 10px;\n border-top: 1px solid #e0e0e0;\n width: 100%;\n }\n }\n body {\n font-family: 'Inter', sans-serif;\n color: #212529;\n font-size: 9pt;\n line-height: 1.5;\n }\n .invoice-wrapper { width: 100%; }\n thead { display: table-header-group; }\n tbody { display: table-row-group; }\n tr { page-break-inside: avoid; }\n .header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 3px solid #0d2a4b;\n margin-bottom: 40px;\n }\n .company-logo { max-width: 180px; max-height: 70px; }\n .invoice-title { text-align: right; }\n .invoice-title h1 {\n margin: 0;\n font-size: 26pt;\n color: #0d2a4b;\n font-weight: 700;\n }\n .invoice-title p {\n margin: 2px 0 0 0;\n color: #5a6a7b;\n font-size: 10pt;\n }\n .meta-section {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr;\n gap: 30px;\n margin-bottom: 40px;\n font-size: 9pt;\n }\n .meta-section strong {\n display: block;\n margin-bottom: 6px;\n color: #8898aa;\n font-weight: 500;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-size: 8pt;\n }\n .meta-section span { color: #212529; }\n .line-items-table {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 20px;\n }\n .line-items-table th {\n padding: 8px 5px;\n background-color: #f8f9fa;\n border-bottom: 2px solid #dee2e6;\n /* text-align: left; <-- THE BUGGY LINE IS NOW REMOVED */\n font-size: 8pt;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: 700;\n color: #495057;\n }\n .line-items-table td {\n padding: 8px 5px;\n border-bottom: 1px solid #edf2f7;\n vertical-align: top;\n }\n .item-description { font-size: 8.5pt; color: #6c757d; }\n .text-right { text-align: right; }\n .text-left { text-align: left; }\n .text-center { text-align: center; }\n .summary-section {\n page-break-inside: avoid !important;\n }\n .totals-section {\n display: flex;\n justify-content: flex-end;\n margin-top: 20px;\n }\n .totals-table {\n width: 100%;\n max-width: 400px;\n }\n .totals-table td {\n padding: 10px 12px;\n }\n .totals-table .label {\n color: #495057;\n text-align: right;\n }\n .totals-table .amount {\n font-weight: 700;\n text-align: right;\n font-size: 10pt;\n }\n .grand-total {\n border-top: 3px solid #0d2a4b;\n background-color: #f8f9fa;\n }\n .grand-total .label, .grand-total .amount {\n color: #0d2a4b;\n font-size: 14pt;\n font-weight: 700;\n }\n .footer {\n margin-top: 40px;\n padding-top: 20px;\n border-top: 1px solid #e0e0e0;\n font-size: 9pt;\n color: #6c757d;\n }\n .footer strong { color: #343a40; }\n .signature { max-height: 40px; margin-top: 15px; }\n </style>\n</head>\n<body>\n <div class=\"invoice-wrapper\">\n <header class=\"header\">\n <div>\n <img src=\"{{$json.logoSrc}}\" alt=\"Company Logo\" class=\"company-logo\">\n </div>\n <div class=\"invoice-title\">\n <h1>INVOICE</h1>\n <p>Invoice # {{$json.invoiceNumber}}</p>\n </div>\n </header>\n \n <section class=\"meta-section\">\n <div>\n <strong>Bill To</strong>\n <span>{{$json.customerName}}</span><br>\n <span>{{$json.customerEmail}}</span>\n </div>\n <div>\n <strong>Payable To</strong>\n <span>YOUR COMPANY NAME</span><br>\n <span>123 Your Street, Your City, State, Postal Code</span>\n </div>\n <div>\n <strong>Dates</strong>\n <span>Date of Issue: {{$json.invoiceDate}}</span><br>\n <span>Due Date: {{$json.dueDate}}</span>\n </div>\n </section>\n\n <table class=\"line-items-table\">\n <thead>\n <tr>\n <th class=\"text-left\" style=\"width: 50%;\">Item & Description</th>\n <th class=\"text-center\" style=\"width: 15%;\">Quantity</th>\n <th class=\"text-right\" style=\"width: 15%;\">Rate</th>\n <th class=\"text-right\" style=\"width: 20%;\">Amount</th>\n </tr>\n </thead>\n <tbody>\n {{$json.lineItems}}\n </tbody>\n </table>\n \n <div class=\"summary-section\">\n <section class=\"totals-section\">\n <table class=\"totals-table\">\n <tr>\n <td class=\"label\">Subtotal</td>\n <td class=\"amount\">${{$json.subtotal}}</td>\n </tr>\n <tr>\n <td class=\"label\">Tax</td>\n <td class=\"amount\">${{$json.tax}}</td>\n </tr>\n <tr class=\"grand-total\">\n <td class=\"label\">Balance Due</td>\n <td class=\"amount\">${{$json.balanceDue}}</td>\n </tr>\n </table>\n </section>\n \n <footer class=\"footer\">\n <strong>Payment Terms: {{$json.paymentTerms}}</strong>\n <p>{{$json.notes}}</p>\n <img src=\"{{$json.signatureSrc}}\" alt=\"Signature\" class=\"signature\">\n <p>Your Name, Your Title</p>\n </footer>\n </div>\n </div>\n</body>\n</html>"
},
"typeVersion": 1.2
},
{
"id": "905e1af5-3c1d-4a57-9df6-f7d0683f486a",
"name": "HTML을 바이너리 파일로 변환",
"type": "n8n-nodes-base.convertToFile",
"position": [
2096,
1248
],
"parameters": {
"options": {
"encoding": "utf8",
"fileName": "index.html"
},
"operation": "toText",
"sourceProperty": "html"
},
"typeVersion": 1.1
},
{
"id": "14bf3ebc-3a0f-468c-b650-6b282fe7f572",
"name": "Gotenberg를 통해 PDF 생성",
"type": "n8n-nodes-base.httpRequest",
"position": [
2368,
1248
],
"parameters": {
"url": "http://yourGotenBergInstanceURL/forms/chromium/convert/html",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "files",
"parameterType": "formBinaryData",
"inputDataFieldName": "=data"
},
{
"name": "scale",
"value": "1"
},
{
"name": "metadata",
"value": "={\"Author\":\"IA2S\",\"Copyright\":\"IA2S\",\"CreateDate\":\"{{ $now.format('yyyy-MM-dd') }}\",\"Creator\":\"IA2S\",\"Keywords\":[],\"ModDate\":\"{{ $now.format('yyyy-MM-dd') }}\",\"PDFVersion\":1.7,\"Producer\":\"IA2S\",\"Subject\":\"PDF\",\"Title\":\"IA2S PDF\"}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Gotenberg-Output-Filename",
"value": "={{ $('Prepare All Data for Template').item.json.invoiceNumber }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "fc4105a5-f50c-4ac8-8010-a0ba82ffdf11",
"name": "고객에게 PDF 송장 이메일 발송",
"type": "n8n-nodes-base.emailSend",
"position": [
2704,
1248
],
"webhookId": "c88f607c-5e1e-4f9e-aa2c-2f69df6e29cc",
"parameters": {
"html": "=<!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: #f4f4f7;\n }\n .container {\n max-width: 600px;\n margin: 20px auto;\n background-color: #ffffff;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n padding: 40px;\n line-height: 1.6;\n color: #333333;\n }\n .header {\n text-align: center;\n margin-bottom: 30px;\n }\n .header h1 {\n color: #0d2a4b;\n margin: 0;\n }\n .content p {\n font-size: 16px;\n }\n .invoice-details {\n background-color: #f8f9fa;\n padding: 20px;\n border-radius: 5px;\n margin: 30px 0;\n font-size: 15px;\n }\n .invoice-details strong {\n color: #0d2a4b;\n }\n .footer {\n text-align: center;\n margin-top: 40px;\n font-size: 12px;\n color: #888888;\n }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <!-- You can optionally place your logo URL here -->\n <!-- <img src=\"URL_TO_YOUR_LOGO\" alt=\"Your Company Name\" style=\"max-width: 180px; margin-bottom: 20px;\"> -->\n <h1>New Invoice from YOUR COMPANY NAME</h1>\n </div>\n\n <div class=\"content\">\n <p>Hi {{$node[\"Prepare All Data for Template\"].json.customerName}},</p>\n \n <p>We hope you are doing well.</p>\n \n <p>A new invoice has been generated for you. You can find a detailed PDF version of the invoice attached to this email.</p>\n \n <div class=\"invoice-details\">\n <strong>Summary:</strong><br>\n Invoice Number: {{$node[\"Prepare All Data for Template\"].json.invoiceNumber}}<br>\n Balance Due: ${{$node[\"Prepare All Data for Template\"].json.balanceDue}}\n </div>\n \n <p>If you have any questions or concerns, please don't hesitate to contact us.</p>\n \n <p>Thank you for your business!</p>\n \n <p>\n Best regards,<br>\n The Team at YOUR COMPANY NAME\n </p>\n </div>\n\n <div class=\"footer\">\n <p>YOUR COMPANY NAME | Your Address | Your Phone Number</p>\n </div>\n </div>\n</body>\n</html>",
"options": {
"attachments": "=data"
},
"subject": "=Invoice {{$node[\"Prepare All Data for Template\"].json.invoiceNumber}} from YOUR COMPANY NAME",
"toEmail": "company.ebtech@gmail.com",
"fromEmail": "={{$node[\"Prepare All Data for Template\"].json.customerEmail}}"
},
"credentials": {
"smtp": {
"id": "ZSjtbi8UmObTzmbO",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "af2a01c1-65a8-49a5-8b34-ce853125a5bf",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
416
],
"parameters": {
"color": 5,
"width": 1264,
"height": 1824,
"content": "# Automated QuickBooks Invoice to Custom PDF & Email\n\nTired of the standard, boring invoices from QuickBooks Online? This workflow completely automates the process of creating beautiful, custom-branded PDF invoices and emailing them directly to your clients, saving you time and elevating your brand's professionalism.\n\nThe moment you create an invoice in QuickBooks, this workflow triggers, fetches all the necessary data, and generates a lavish, multi-page-aware PDF invoice complete with your company logo and signature.\n\n***\n\n## Key Features\n\n* **Fully Automated:** Runs instantly when a new invoice is created in QuickBooks.\n* **Custom Branding:** Automatically fetches your company logo and signature from a URL to place on the invoice.\n* **Modern & Professional Design:** Uses a premium, multi-column HTML template that is clean, easy to read, and far superior to the default QBO templates.\n* **Multi-Page Ready:** If an invoice has many line items, the template will intelligently create multiple pages and add a \"Page X of Y\" footer automatically.\n* **Smart Layout:** The totals and summary block are designed to never break across pages, ensuring a professional look no matter the length.\n* **Automatic Emailing:** The final PDF is attached to a beautifully formatted email and sent directly to the customer's email address on file.\n\n## Prerequisites\n\nBefore you start, you will need a few things:\n\n* A running **n8n instance**.\n* A **QuickBooks Online** account with API access.\n* A running **Gotenberg** instance. This is a powerful, open-source tool for converting HTML to PDF. This workflow is designed to connect to its API. You can learn more about it [here](https://gotenberg.dev/).\n* Publicly accessible URLs for your **company logo** and **signature image** (e.g., hosted on your website or a service like Imgur).\n\n## Setup Guide\n\nFollow these steps carefully to configure the workflow for your own use. Nodes that need your attention are marked with a `[!!]` prefix.\n\n### Step 1: Configure the QuickBooks Webhook\n\nThe workflow starts with a webhook. You need to tell QuickBooks to send information to this webhook.\n\n1. Open the `[!!] Listen for New QuickBooks Invoice` node.\n2. You will see a **Webhook URL**. Copy the **Production URL**.\n3. Go to your QuickBooks Developer dashboard, select your app, and navigate to the **Webhooks** section.\n4. Paste the n8n URL into the Endpoint URL field and select the **Invoice** event to subscribe to.\n\n### Step 2: Connect Your QuickBooks Account\n\n1. Open the `[!!] Get Invoice Data from QuickBooks` node.\n2. In the \"Credentials\" field, select your existing QuickBooks Online credentials or create a new set.\n\n### Step 3: Add Your Branding\n\n1. Open the `[!!] Fetch Company Logo Image` node. In the **URL** field, replace the placeholder with the public URL of your company's logo.\n2. Open the `[!!] Fetch Company Signature Image` node. In the **URL** field, replace the placeholder with the public URL of your signature image.\n\n### Step 4: Update the PDF Generation Service\n\n1. Open the `[!!] Generate PDF via Gotenberg` node.\n2. In the **URL** field, replace the placeholder `http://yourGotenBergInstanceURL/...` with the real URL of your running Gotenberg instance.\n\n### Step 5: Configure Your Email\n\n1. Open the `[!!] Email PDF Invoice to Customer` node.\n2. In the \"Credentials\" field, select your SMTP or email service credentials.\n3. Customize the **From Email** and **Subject** fields. You can also edit the beautiful HTML email body to match your company's tone of voice.\n\n### Step 6: Activate Your Workflow\n\nYou're all set! Save the workflow and activate it using the toggle at the top-right of the screen. Now, when you create a new invoice in QuickBooks, this automation will handle the rest.\n\n***\n\n### A Note from the Creator\n\nThank you for using this workflow! I believe that professional and automated invoicing is a cornerstone of a great business. This tool was designed to save you time and help you put your best foot forward with every client interaction.\n\nIf you have any questions or need assistance, feel free to reach out.\n\n* **Website:** [https://www.elegantbiztech.com/](https://www.elegantbiztech.com/)\n* **Email:** [sales@elegantbiztech.com](mailto:sales@elegantbiztech.com)"
},
"typeVersion": 1
},
{
"id": "6edf064f-44ed-449e-a597-bd1b0d71bbe2",
"name": "스티커 메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
432,
1088
],
"parameters": {
"color": 5,
"width": 256,
"height": 336,
"content": "**1. Configure Webhook**\n\nCopy this node's Production URL and paste it into your QuickBooks Online app's webhook settings. Subscribe to the \"Invoice\" event."
},
"typeVersion": 1
},
{
"id": "09597ad8-12d2-4bc6-aaf4-e4478499e5b3",
"name": "스티커 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1168,
848
],
"parameters": {
"color": 5,
"width": 256,
"height": 320,
"content": "**2. Connect QuickBooks**\n\nSelect your QuickBooks Online account credentials from the dropdown list."
},
"typeVersion": 1
},
{
"id": "6fb09bca-2e1b-434f-8a13-054e96f45e18",
"name": "스티커 메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
1088
],
"parameters": {
"color": 5,
"width": 256,
"height": 336,
"content": "**3. Add Your Logo URL**\n\nReplace the placeholder URL below with a direct, public link to your company's logo file."
},
"typeVersion": 1
},
{
"id": "269b246b-58cc-44f3-8bf2-44c30b8a5544",
"name": "스티커 메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
1472
],
"parameters": {
"color": 5,
"width": 256,
"height": 320,
"content": "**4. Add Your Signature URL**\n\nReplace the placeholder URL below with a direct, public link to your signature image file."
},
"typeVersion": 1
},
{
"id": "b6cb4da6-78f6-4090-99bf-c443ee044ce3",
"name": "스티커 메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2288,
1120
],
"parameters": {
"color": 5,
"width": 256,
"height": 320,
"content": "**5. Set Your Gotenberg URL**\n\nReplace the placeholder URL below with the address of your running Gotenberg instance."
},
"typeVersion": 1
},
{
"id": "7b8bbac0-14a7-45ac-854c-84e43a5dd052",
"name": "스티커 메모6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2624,
1072
],
"parameters": {
"color": 5,
"width": 256,
"height": 368,
"content": "**6. Configure Your Email**\n\n- Select your email credentials.\n- Customize the 'From' and 'Subject' fields.\n- The PDF is automatically attached."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "8fcaea2c-adec-42a6-8dc4-1eb0ab254cee",
"connections": {
"7b5653c7-4483-463c-a7e2-fab408ea1f91": {
"main": [
[
{
"node": "38d30ac3-298c-4731-a7b3-d45ac80abb25",
"type": "main",
"index": 1
}
]
]
},
"b56096d7-37cf-41b7-ab77-ebb35c176e01": {
"main": [
[
{
"node": "7b5653c7-4483-463c-a7e2-fab408ea1f91",
"type": "main",
"index": 0
}
]
]
},
"14bf3ebc-3a0f-468c-b650-6b282fe7f572": {
"main": [
[
{
"node": "fc4105a5-f50c-4ac8-8010-a0ba82ffdf11",
"type": "main",
"index": 0
}
]
]
},
"905e1af5-3c1d-4a57-9df6-f7d0683f486a": {
"main": [
[
{
"node": "14bf3ebc-3a0f-468c-b650-6b282fe7f572",
"type": "main",
"index": 0
}
]
]
},
"4fa1d59c-2ace-4251-a0db-49b62d18f62a": {
"main": [
[
{
"node": "38d30ac3-298c-4731-a7b3-d45ac80abb25",
"type": "main",
"index": 2
}
]
]
},
"2fdd3ef9-ef1f-42a5-8a29-64e439645e83": {
"main": [
[
{
"node": "905e1af5-3c1d-4a57-9df6-f7d0683f486a",
"type": "main",
"index": 0
}
]
]
},
"97f6e4f4-82c8-4bbd-bad2-a02f69ca6150": {
"main": [
[
{
"node": "4fa1d59c-2ace-4251-a0db-49b62d18f62a",
"type": "main",
"index": 0
}
]
]
},
"8539ed24-374b-4ecb-b152-ef6d76365f0b": {
"main": [
[
{
"node": "2fdd3ef9-ef1f-42a5-8a29-64e439645e83",
"type": "main",
"index": 0
}
]
]
},
"1dc144aa-6849-4e95-a4d1-1f9c80b16b63": {
"main": [
[
{
"node": "38d30ac3-298c-4731-a7b3-d45ac80abb25",
"type": "main",
"index": 0
}
]
]
},
"38d30ac3-298c-4731-a7b3-d45ac80abb25": {
"main": [
[
{
"node": "8539ed24-374b-4ecb-b152-ef6d76365f0b",
"type": "main",
"index": 0
}
]
]
},
"05599a83-f5c2-46db-8864-53c9e1b45f0d": {
"main": [
[
{
"node": "1dc144aa-6849-4e95-a4d1-1f9c80b16b63",
"type": "main",
"index": 0
},
{
"node": "b56096d7-37cf-41b7-ab77-ebb35c176e01",
"type": "main",
"index": 0
},
{
"node": "97f6e4f4-82c8-4bbd-bad2-a02f69ca6150",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 청구서 처리
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
자동화 QuickBooks 판매 이상 감지기 (전문 이메일 알림 포함) (검토 중)
전문 이메일 알림이 포함된 자동화된 QuickBooks 판매 이상 감지기
If
Set
Code
+
If
Set
Code
26 노드Elegant Biztech
고객관계관리
전사 평가기
DeepGram 및 GPT-4o를 사용한 오디오 대화 분석 및 시각화
Set
Code
Html
+
Set
Code
Html
54 노드RealSimple Solutions
인공지능
Quickbook 인voi提醒
그룹화된 QuickBooks 인voice를 이메일로 발송하는 자동화된 결제 알림
Code
Email Send
Quickbooks
+
Code
Email Send
Quickbooks
10 노드Elegant Biztech
청구서 처리
시각화 참조 라이브러리에서 n8n 노드를 탐색
可视化 참조 라이브러리에서 n8n 노드를 탐색
If
Ftp
Set
+
If
Ftp
Set
113 노드I versus AI
기타
트랜스크립션 평가자 V2
🔊 브라우저 녹음 오디오 전취와 AI 분석(Deepgram과 GPT-4o 사용)
Set
Code
Html
+
Set
Code
Html
54 노드RealSimple Solutions
인공지능
트렌드 스프레드시트에서 SEO 콘텐츠를 스토리지(SharePoint/Drive/Dropbox)로 생성
GPT-4o, FAL AI 및 다중 저장소 지원을 사용하여 트렌드에서 SEO 콘텐츠 자동 생성
If
Set
Code
+
If
Set
Code
47 노드plemeo
콘텐츠 제작