anaksor-ocr
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
An n8n workflow that sends a Hebrew WhatsApp reminder for an unpaid invoice 7, 14 and 30 days after its due date. It reads the open invoices from a Google Sheet each morning and marks each row once the message has gone.
Escalating invoice reminders on WhatsApp from Google Sheets is an n8n workflow in the Finance & accounting category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.
A schedule
It starts every morning at 09:00 by itself, and there is no form:
Late customers get one reminder for each stage, and the sheet shows which one went out
What you need before you start.
Spreadsheet
Holds the invoices and records each reminder.
NeedsA Google account and a sheet with eight named columns
Chat app
Delivers the reminder to the customer.
NeedsA WhatsApp number linked to your WAHA server, and customers who agreed to hear from you
WhatsApp gateway
Takes the text from the workflow and sends it from your linked number.
NeedsA server that runs WAHA, its address and an API key as a Header Auth credential
Checked by Mindket on 13 Nov 2026
This n8n workflow chases unpaid invoices for you. Every morning at 09:00 it reads the open invoices from a Google Sheet and checks each due date. An invoice that is exactly 7, 14 or 30 days late gets a Hebrew WhatsApp message for that stage, friendly at first and firm at the end. The row is then stamped with the stage and the day. Five nodes do the work, beside four sticky notes.
Small businesses that keep their invoices in a spreadsheet and write to customers in Hebrew, such as freelancers, repair shops, tutoring centers and landlords. You also need a WAHA server, a small program you run yourself that sends WhatsApp messages from a number you link. Read the notes on WhatsApp rules below first.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Services | Freelance designers | Chase late payments without writing each one | A designer lists each invoice in a sheet, and a customer who is 14 days late gets a polite nudge. |
| Education | Tutoring centers | Remind parents about unpaid monthly fees | A center marks a family as open, and the sheet shows which reminder went out and when. |
| Repairs | Workshops | Follow up on invoices after a job is done | A workshop owner stops phoning each customer and reads the LastReminder column instead. |
| Property | Small landlords | Ask for rent or a service charge that is late | A landlord sends the 30 day text to a tenant who ignored the first two. |
You need some n8n and a server: import a file, sign in to Google, run WAHA and fill in two addresses.
Any n8n can run it, as long as it can reach your WAHA server over the web.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. You need a Google account with a sheet of invoices and a running WAHA server with a linked WhatsApp number.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on your own server |
| Google Sheets | A sheet with the columns InvoiceID, CustomerName, Phone, Amount, DueDate, Status, LastReminder and LastReminderDate |
| WAHA | A server that runs WAHA, with a WhatsApp number linked to it and an API key |
| Customers | People who gave you their number and agreed to hear from you |
workflow.json.Read Invoices from Sheets, sign in with Google and choose your spreadsheet and the tab that holds the invoices. Do the same in Update Sent Status in Sheets.open for an unpaid invoice.Post WhatsApp Reminder, replace <YOUR_WAHA_SERVER> in the URL with the address of your WAHA server.X-Api-Key and your WAHA key. If your WAHA has no key, set Authentication to None.Calculate Overdue Tier, change COUNTRY_CODE if your customers are not in Israel, and read the three Hebrew texts.Once the workflow is on, it runs by itself each morning. Add a row with Status open, or set Status to anything else when a customer pays. A customer is written to only on the day that is 7, 14 or 30 days after the due date.
| To change | Where |
|---|---|
| The time of day | The schedule node When Each Day at 09:00 |
| The stages, 7, 14 and 30 | The REMINDERS list in Calculate Overdue Tier |
| The wording or the language | The same list |
| The country code | COUNTRY_CODE in Calculate Overdue Tier |
| The pause between messages | Batching in Post WhatsApp Reminder, now 3 seconds |
A tutoring center chases a late monthly fee.
Invoice A-17 for 450 ₪ was due on the 5th. On the 12th the sheet still says open, so the center’s number writes to the parent: a friendly note that the invoice has waited a week. The row now shows reminder-7 and the date. Two weeks after the due date the parent gets a second, plainer text. If the parent pays, the center changes Status and the messages stop.
If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A Google Sheet is an online table. WAHA is a program that lets other programs send WhatsApp messages. This workflow reads your table each morning and sends the right text to each customer that is late. Try it on your own number first.
For experts. The match on the exact day keeps one message for each stage, and the update goes by InvoiceID, so that column must be unique.
| Node | What it does | What to know |
|---|---|---|
Read Invoices from Sheets | Loads every row whose Status is open | On node version 4.7 a filter returns all matching rows, and dates come as text in the cell’s own format |
Calculate Overdue Tier | Reads the due date, finds the stage and builds the text and the chat number | A row with no readable date is skipped without a message |
Post WhatsApp Reminder | Sends the text to WAHA with the session default | It waits 3 seconds between messages, and an error stops the run |
Update Sent Status in Sheets | Writes LastReminder and LastReminderDate by InvoiceID | The two columns must exist in row 1 |
WAHA is not WhatsApp’s own business route, and a reminder to someone who did not write first can get the number restricted.
COUNTRY_CODE gets it put in front, so a number from another country must be changed in the codedd/MM/yyyy, d/M/yyyy and MM/dd/yyyy, in that order, so 05/11/2026 is read as 5 NovemberreturnAllMatches on the read node. From node version 4.5 that option is ignored, and n8n’s source, read on 12 November 2026, shows every matching row comes back, so it is removeddd/MM/yyyy formats, so that step was not runAn n8n workflow that chases unpaid invoices. Every morning it reads the open invoices from a Google Sheet. Each invoice that is 7, 14 or 30 days
past its due date gets a Hebrew WhatsApp reminder for that stage. The invoice row is then stamped with the stage and the day.
workflow.json: the workflow as n8n exports it, five working nodes and four sticky notes. It holds no credential.README.md: these notes.returnAllMatches. From node version 4.5 that option is not used. The source of n8n, readCOUNTRY_CODE is now one line at the top of Calculate Overdue Tier. The original copy wrote 972 in two places.<YOUR_SPREADSHEET_ID> and <YOUR_WAHA_SERVER>. The original copy left theInvoiceID, CustomerName, Phone, Amount, DueDate, Status, LastReminderLastReminderDate, in row 1 of the tab. InvoiceID must be unique, because the update goes by it.X-Api-Key and says not to expose WAHA on a public network without a firewall and HTTPS.workflow.json.Read Invoices from Sheets, sign in with Google and choose your spreadsheet and the tab that holds the invoices. Do the same inUpdate Sent Status in Sheets.open for an unpaid invoice. The update stops with an error ifLastReminder or LastReminderDate is missing from row 1.Post WhatsApp Reminder, replace <YOUR_WAHA_SERVER> in the URL with the address of your WAHA server.X-Api-Key and your WAHA key. If your WAHA has no key, setCalculate Overdue Tier, change COUNTRY_CODE if your customers are not in Israel, and read the three Hebrew texts.When Each Day at 09:00 starts the run.Read Invoices from Sheets loads every row whose Status is open.Calculate Overdue Tier reads each due date. It tries ISO dates first, then dd/MM/yyyy, d/M/yyyy and MM/dd/yyyy. A row with noPost WhatsApp Reminder sends the text to WAHA with the session default, one message every three seconds.Update Sent Status in Sheets writes reminder-7, reminder-14 or reminder-30 in LastReminder and the day inLastReminderDate, on the row with the same InvoiceID.When Each Day at 09:00.REMINDERS list in Calculate Overdue Tier. The texts are Hebrew and ask for paymentCOUNTRY_CODE in the same node.Post WhatsApp Reminder, 3000 milliseconds.COUNTRY_CODE gets it put in front. A number from another country must be handled in the code.dd/MM/yyyy formats, so that step was not run.NOTICE.md 671 B README.md 6 KB workflow.json 11 KB
Sokheng · Kit
Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…
Qwen · Kit
Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…
ACE-Step · Kit
Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…
NeoQuasar · Kit
Forecasts financial candlestick series with a 4.1M-parameter foundation model trained on data from over 45 exchanges. For quant researchers and developers who…
An n8n workflow that files invoices. It watches a Google Drive folder, has LlamaParse read each new file and an OpenAI model pick out the line items. Airtable…
NeoQuasar · Kit
Converts candlestick price data into discrete tokens that the Kronos forecasting models read. It suits people who forecast financial markets in Python.