Darmowy szablon automatyzacji

Generuj faktury, zapisuj na dysku i wysyłaj e-maile do klientów za pomocą JS + G Sheets

149
1 mies. temu
12
bloków


Automatyzacja generowania faktur w n8n

Ten workflow automatyzuje proces generowania faktur na podstawie danych z formularza zamówień. Zapewnia unikalne ID zamówienia, tworzy faktury w formacie PDF, przechowuje pliki, wysyła e-maile do klientów oraz rejestruje dane faktur — wszystko w jednym, zintegrowanym procesie.

Przegląd workflow

  • Trigger (Webhook) - Rozpoczyna się po przesłaniu formularza zamówienia, przechwytując dane klienta i szczegóły zamówienia.
  • Generowanie unikalnego ID zamówienia - Węzeł Function tworzy unikalny alfanumeryczny identyfikator faktury (np. INV-X92B7D).
  • Sprawdzenie duplikatu ID zamówienia - Google Sheets sprawdza, czy wygenerowane ID już istnieje w arkuszu rejestru faktur.
  • Sprawdzenie warunkowe (IF Node) - Jeśli ID istnieje, generowane jest nowe ID (pętla). Jeśli jest unikalne, proces przechodzi do tworzenia faktury.
  • Przygotowanie danych faktury - Węzeł Set formatuje dane klienta, datę, pozycje zamówienia i unikalne ID do szablonu faktury.
  • Konwersja HTML na PDF - Węzeł HTTP Request wysyła HTML faktury do usługi RapidAPI HTML-to-PDF i odbiera plik PDF.
  • Przesłanie PDF do przechowywania w chmurze - Plik PDF jest zapisywany w Google Drive lub Dropbox z nazwą np. Invoice-INV-X92B7D.pdf.
  • Wysłanie faktury e-mailem do klienta - Węzeł Email dołącza PDF i umieszcza ID zamówienia w temacie/treści wiadomości.
  • Rejestracja danych faktury - Dane faktury (informacje o kliencie, ID zamówienia, suma, link do PDF) są dodawane do arkusza Google Sheets w celu śledzenia.

Szczegóły węzłów i konfiguracja

  1. Webhook Trigger - Konfiguracja do odbierania danych z formularza zamówień (np. imię i nazwisko, e-mail, przedmioty, suma).
  2. Function: Generate Random Order ID - Przykładowy kod JS generujący unikalne ID z prefiksem INV-.
  3. Google Sheets: Lookup Row - Połączenie z arkuszem rejestru faktur. Wyszukiwanie istniejącego ID zamówienia, aby uniknąć duplikatów.
  4. IF Node: Check Order ID Existence - Warunek: Jeśli ID istnieje → powrót do generowania nowego ID. W przeciwnym razie → kontynuacja workflow.
  5. Set Node: Prepare Invoice HTML - Definiowanie zmiennych, takich jak nazwa klienta, data, przedmioty i ID zamówienia. Dane te wypełniają szablon HTML faktury.
  6. HTTP Request: Convert HTML to PDF - URL API do pobrania klucza. Wysłanie HTML faktury w treści żądania. Odebranie pliku PDF lub linku do pobrania.
  7. Google Drive (or Dropbox) Upload - Przesłanie pliku PDF. Format nazwy pliku: Invoice-{{$json["order_id"]}}.pdf.
  8. Email Node - Odbiorca: e-mail klienta z danych formularza. Załącznik: wygenerowany PDF. ID zamówienia w temacie/treści e-maila.
  9. Google Sheets: Append Row - Rejestracja metadanych faktury w celu aktualizacji rekordów.

Szablon Google Sheets

Możesz skopiować szablon rejestru faktur. Arkusz zawiera kolumny dla order_id, nazwy klienta, e-maila, sumy i linku do faktury PDF. Dostosuj go według potrzeb.

Dodatkowe uwagi

  • Dostosuj szablon HTML faktury w węźle Set, aby pasował do Twojej marki.
  • Upewnij się, że dane uwierzytelniające API dla RapidAPI, Google Drive/Dropbox i e-mail są poprawnie skonfigurowane w n8n.
  • Możesz rozszerzyć ten workflow o przetwarzanie płatności lub powiadomienia SMS.

Use case (Przykłady zastosowań)

Ta automatyzacja może być wykorzystywana w różnych scenariuszach biznesowych, gdzie wymagane jest szybkie i bezbłędne generowanie faktur. Oto kilka potencjalnych zastosowań:

  • Sklepy internetowe - automatyczne generowanie faktur po złożeniu zamówienia przez klienta.
  • Firmy usługowe - tworzenie faktur za wykonane usługi na podstawie danych z formularza zamówienia.
  • Freelancerzy - szybkie wystawianie faktur za zlecone projekty.
  • Subskrypcje - cykliczne generowanie faktur dla abonentów.
  • Platformy SaaS - automatyczne faktury za korzystanie z usługi.
  • Dostawy towarów - faktury dla klientów hurtowych.
  • Wydarzenia - faktury za bilety lub uczestnictwo w konferencjach.

Potrzebujesz pomocy lub chcesz dostosować workflow? Skontaktuj się przez e-mail: joseph@uppfy.com.


   Skopiuj kod szablonu   
{"id":"K4XpJbwBJYnDiYkF","meta":{"instanceId":"b3c467df4053d13fe31cc98f3c66fa1d16300ba750506bfd019a0913cec71ea3","templateCredsSetupCompleted":true},"name":"Generate Invoices","tags":[],"nodes":[{"id":"e56cbf88-1e0d-4dd7-a269-091ad2ce8420","name":"Webhook Simulator","type":"n8n-nodes-base.webhook","position":[-240,20],"webhookId":"7f884a07-861e-49da-bb0e-1ac6ca40ea00","parameters":{"path":"7f884a07-861e-49da-bb0e-1ac6ca40ea00","options":{}},"typeVersion":2},{"id":"b01307f7-b5cb-421e-833a-0889925bb09c","name":"Generate Invoice ID","type":"n8n-nodes-base.code","position":[-20,20],"parameters":{"jsCode":"function generateOrderID(length = 6) {n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';n let result = 'INV-';n for (let i = 0; i < length; i++) {n result += chars.charAt(Math.floor(Math.random() * chars.length));n }n return result;n}nnreturn [n {n json: {n order_id: generateOrderID()n }n }n];n"},"typeVersion":2},{"id":"bf50ca10-4021-4e6f-9c08-56fd84ce13ed","name":"Check if ID Already Exists","type":"n8n-nodes-base.googleSheets","position":[200,20],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.order_id }}","lookupColumn":"Invoice ID"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1QW_Lg1aoEBku8GaxwPbZfBY5ITAuSdvoAXRyNdCEujM/edit#gid=0","cachedResultName":"Invoices"},"documentId":{"__rl":true,"mode":"list","value":"1QW_Lg1aoEBku8GaxwPbZfBY5ITAuSdvoAXRyNdCEujM","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1QW_Lg1aoEBku8GaxwPbZfBY5ITAuSdvoAXRyNdCEujM/edit?usp=drivesdk","cachedResultName":"Uppfy Shop Invoices"}},"credentials":{"googleSheetsOAuth2Api":{"id":"d0qeLhShx9sGXalR","name":"Google Sheets"}},"typeVersion":4.5,"alwaysOutputData":true},{"id":"c63871fa-ca0f-4069-ac0d-422d39018a9e","name":"If Does not Exist","type":"n8n-nodes-base.if","position":[420,20],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"cee7659a-cea3-494a-b4f3-c76d035a3a32","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.row_number }}","rightValue":""}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"feb9ed84-a62c-4cec-bf36-b53a76711bcd","name":"Set Fields","type":"n8n-nodes-base.set","position":[740,-140],"parameters":{"options":{},"assignments":{"assignments":[{"id":"1bd457b4-2c15-433a-96b3-5fabb8566866","name":"order_id","type":"string","value":"={{ $('Generate Invoice ID').item.json.order_id }}"},{"id":"15c51334-b127-485e-9be4-051b086d74b2","name":"customer_name","type":"string","value":"={{ $('Webhook Simulator').item.json.customer_name }}"},{"id":"8c4f2d5c-09c8-4b8c-a77f-ab3c1d752c13","name":"customer_email","type":"string","value":"={{ $('Webhook Simulator').item.json.customer_email }}"},{"id":"ea1bbfe4-c12d-450f-9bee-fff8710eed42","name":"products","type":"array","value":"={{ $('Webhook Simulator').item.json.products }}"},{"id":"025d0783-7eb0-4ac4-b373-39f744692cfd","name":"total","type":"number","value":"={{ $('Webhook Simulator').item.json.total }}"}]}},"typeVersion":3.4},{"id":"0532fa4b-cdd9-4857-8701-6a5baf48fd7c","name":"Create Invoice HTML","type":"n8n-nodes-base.code","position":[740,100],"parameters":{"jsCode":"const { order_id, customer_name, customer_email, products, total } = $json;nn// Format products table rowsnconst productRows = products.map((item, index) => {n const subtotal = item.quantity * item.price;n return `nn${index + 1}n${item.name}n${item.quantity}n$${item.price.toFixed(2)}n$${subtotal.toFixed(2)}nn `;n}).join('');nnconst html = `nnnnnInvoice ${order_id}nnn

Invoice

n

Order ID: ${order_id}

n

Customer Name: ${customer_name}

n

Email: ${customer_email}

nnnnnnnnnnnnn ${productRows}nnnnnnnn
#ProductQtyUnit PriceSubtotal
Total:$${total.toFixed(2)}
nn

Thank you for your order!

nnn`;nnreturn [n {n json: {n htmln }n }n];n"},"typeVersion":2},{"id":"5a3adb6a-9f64-477e-9622-3d2b9ef2e6de","name":"HTML to PDF","type":"n8n-nodes-base.httpRequest","position":[-20,320],"parameters":{"url":"https://html2pdf2.p.rapidapi.com/html2pdf","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"html","value":"={{ $json.html }}"}]},"headerParameters":{"parameters":[{"name":"x-rapidapi-host","value":"html2pdf2.p.rapidapi.com"},{"name":"x-rapidapi-key","value":""your_rapid_api_key""}]}},"typeVersion":4.2},{"id":"cebf6d0d-d43f-4e50-abc0-79ff8da1817a","name":"Upload PDF to GDrive","type":"n8n-nodes-base.googleDrive","position":[420,320],"parameters":{"name":"={{ $('Set Fields').item.json.order_id }} - {{ $('Set Fields').item.json.customer_name }}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"list","value":"root","cachedResultName":"/ (Root folder)"}},"credentials":{"googleDriveOAuth2Api":{"id":"l8Cc2MEVE7foBfbK","name":"Google Drive account"}},"typeVersion":3},{"id":"b181eddc-e786-4d44-a334-e1b581b3981f","name":"Email Invoice to Customer","type":"n8n-nodes-base.emailSend","position":[640,320],"webhookId":"cdc852fc-03b9-4a89-ba56-879064da5cbb","parameters":{"html":"=Hello {{ $('Set Fields').item.json.customer_name }},nnPlease pay this invoicennn{{ $('Create Invoice HTML').item.json.html }}nnnnnnnnnnnnn","options":{"appendAttribution":false},"subject":"={{ $('Set Fields').item.json.order_id }} - New Invoice from Uppfy Shop ","toEmail":"={{ $('Set Fields').item.json.customer_email }}","fromEmail":"Uppfy Shop "},"credentials":{"smtp":{"id":"xcnAVXwtuOa1IOqE","name":"SMTP account"}},"typeVersion":2.1},{"id":"883e32b6-a812-44c8-b525-97e819af90bd","name":"Append Details to Invoices Sheet","type":"n8n-nodes-base.googleSheets","position":[860,320],"parameters":{"columns":{"value":{"Status":"Unpaid","Invoice ID":"={{ $('Set Fields').item.json.order_id }}","Invoice URL":"={{ $('Upload PDF to GDrive').item.json.webViewLink }}","Invoice Amt.":"=${{ $('Set Fields').item.json.total }}","Customer Name":"={{ $('Set Fields').item.json.customer_name }}","Customer Email":"={{ $('Set Fields').item.json.customer_email }}"},"schema":[{"id":"Invoice ID","type":"string","display":true,"removed":false,"required":false,"displayName":"Invoice ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Customer Name","type":"string","display":true,"removed":false,"required":false,"displayName":"Customer Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Customer Email","type":"string","display":true,"removed":false,"required":false,"displayName":"Customer Email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Invoice Amt.","type":"string","display":true,"required":false,"displayName":"Invoice Amt.","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Invoice URL","type":"string","display":true,"required":false,"displayName":"Invoice URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Invoice ID"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1QW_Lg1aoEBku8GaxwPbZfBY5ITAuSdvoAXRyNdCEujM/edit#gid=0","cachedResultName":"Invoices"},"documentId":{"__rl":true,"mode":"list","value":"1QW_Lg1aoEBku8GaxwPbZfBY5ITAuSdvoAXRyNdCEujM","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1QW_Lg1aoEBku8GaxwPbZfBY5ITAuSdvoAXRyNdCEujM/edit?usp=drivesdk","cachedResultName":"Uppfy Shop Invoices"}},"credentials":{"googleSheetsOAuth2Api":{"id":"d0qeLhShx9sGXalR","name":"Google Sheets"}},"typeVersion":4.5},{"id":"cd06d6c9-903d-4af8-8327-eb36ba3bc73a","name":"Download PDF from API","type":"n8n-nodes-base.httpRequest","position":[200,320],"parameters":{"url":" https://rhodium-tecnologia-html2pdf.s3.amazonaws.com/public/pdfs/1747392997249.pdf","options":{}},"typeVersion":4.2},{"id":"7d308e22-9b2d-4993-8aad-cc701303d38d","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-280,-160],"parameters":{"width":180,"height":320,"content":"## Pinned Data to Simulate Webhook Query"},"typeVersion":1}],"active":false,"pinData":{"Webhook Simulator":[{"json":{"total":65,"products":[{"name":"T-shirt","price":25,"quantity":2},{"name":"Hat","price":15,"quantity":1}],"customer_name":"Jane Doe","customer_email":"jane@example.com"}}]},"settings":{"executionOrder":"v1"},"versionId":"dec45f2b-cb36-4f86-a8cc-d3c498ae7aa2","connections":{"Set Fields":{"main":[[{"node":"Create Invoice HTML","type":"main","index":0}]]},"HTML to PDF":{"main":[[{"node":"Download PDF from API","type":"main","index":0}]]},"If Does not Exist":{"main":[[{"node":"Set Fields","type":"main","index":0}],[{"node":"Generate Invoice ID","type":"main","index":0}]]},"Webhook Simulator":{"main":[[{"node":"Generate Invoice ID","type":"main","index":0}]]},"Create Invoice HTML":{"main":[[{"node":"HTML to PDF","type":"main","index":0}]]},"Generate Invoice ID":{"main":[[{"node":"Check if ID Already Exists","type":"main","index":0}]]},"Upload PDF to GDrive":{"main":[[{"node":"Email Invoice to Customer","type":"main","index":0}]]},"Download PDF from API":{"main":[[{"node":"Upload PDF to GDrive","type":"main","index":0}]]},"Email Invoice to Customer":{"main":[[{"node":"Append Details to Invoices Sheet","type":"main","index":0}]]},"Check if ID Already Exists":{"main":[[{"node":"If Does not Exist","type":"main","index":0}]]}}}
  • SMTP
  • email
  • human
  • form
  • wait
  • hitl
  • approval
  • CSV
  • Sheet
  • Spreadsheet
  • GS
  • API
  • Request
  • URL
  • Build
  • cURL
  • cpde
  • Javascript
  • JS
  • Python
  • Script
  • Custom Code
  • Function
Planeta AI 2025 
magic-wandmenu linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram