Mindket

Escalating invoice reminders on WhatsApp from Google Sheets

Newversion 1 · updated

Overview

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.

At a glance

Runs in
  • n8n Cloud: import the file there, and put WAHA behind an HTTPS address with a key
  • Your own n8n server: the same file and steps, and WAHA can sit on the same network
  • Another country: change one line, the country code, and the Hebrew texts if you write in another language

Platform

Connects 3 apps

How it works

Trigger

A schedule

It starts every morning at 09:00 by itself, and there is no form:

  • The open invoices in your Google Sheet

Actions

  1. The rows whose Status is open are read from the Google Sheet
  2. Each due date is checked, and only an invoice exactly 7, 14 or 30 days late goes on
  3. A Hebrew reminder for that stage is written, with the customer’s name, the invoice number and the amount
  4. WAHA sends the message to the customer’s WhatsApp number, one every three seconds
  5. The row is stamped with the stage and the day the reminder went out

Result

Late customers get one reminder for each stage, and the sheet shows which one went out

Integrations

What you need before you start.

Google Sheets

Spreadsheet

Holds the invoices and records each reminder.

NeedsA Google account and a sheet with eight named columns

WhatsApp

Chat app

Delivers the reminder to the customer.

NeedsA WhatsApp number linked to your WAHA server, and customers who agreed to hear from you

WAHA

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

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
5 steps, starting on a schedule
AI
No step calls an AI model
Sign-ins
Signs in to: Google Sheets and a web service
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 4 of its step types

Read from the workflow’s file, not from a run.

About

What it is

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.

Who it suits

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.

Who uses it, and how
IndustryWho uses itHow they use itExample
ServicesFreelance designersChase late payments without writing each oneA designer lists each invoice in a sheet, and a customer who is 14 days late gets a polite nudge.
EducationTutoring centersRemind parents about unpaid monthly feesA center marks a family as open, and the sheet shows which reminder went out and when.
RepairsWorkshopsFollow up on invoices after a job is doneA workshop owner stops phoning each customer and reads the LastReminder column instead.
PropertySmall landlordsAsk for rent or a service charge that is lateA 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.

Where to use it

Any n8n can run it, as long as it can reach your WAHA server over the web.

  • n8n Cloud: import the file there, and put WAHA behind an HTTPS address with a key
  • Your own n8n server: the same file and steps, and WAHA can sit on the same network
  • Another country: change one line, the country code, and the Hebrew texts if you write in another language

Setup

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.

What you need first
NeedDetail
n8nOn n8n Cloud or on your own server
Google SheetsA sheet with the columns InvoiceID, CustomerName, Phone, Amount, DueDate, Status, LastReminder and LastReminderDate
WAHAA server that runs WAHA, with a WhatsApp number linked to it and an API key
CustomersPeople who gave you their number and agreed to hear from you
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. In 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.
  3. Check that row 1 of the tab holds the eight column names above, and that Status says open for an unpaid invoice.
  4. In Post WhatsApp Reminder, replace <YOUR_WAHA_SERVER> in the URL with the address of your WAHA server.
  5. In the same node, add a Header Auth credential with the name X-Api-Key and your WAHA key. If your WAHA has no key, set Authentication to None.
  6. In Calculate Overdue Tier, change COUNTRY_CODE if your customers are not in Israel, and read the three Hebrew texts.
  7. Add test rows due 7, 14 and 30 days ago, with your own number. Press Test workflow and check the messages and the stamps.
  8. Check the timezone in the workflow settings, so that 09:00 is the morning you mean, and turn the workflow on.

How to use it

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.

What to change for a different result
To changeWhere
The time of dayThe schedule node When Each Day at 09:00
The stages, 7, 14 and 30The REMINDERS list in Calculate Overdue Tier
The wording or the languageThe same list
The country codeCOUNTRY_CODE in Calculate Overdue Tier
The pause between messagesBatching in Post WhatsApp Reminder, now 3 seconds

Example

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.

For newcomers and experts

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.

Where to look closer
NodeWhat it doesWhat to know
Read Invoices from SheetsLoads every row whose Status is openOn node version 4.7 a filter returns all matching rows, and dates come as text in the cell’s own format
Calculate Overdue TierReads the due date, finds the stage and builds the text and the chat numberA row with no readable date is skipped without a message
Post WhatsApp ReminderSends the text to WAHA with the session defaultIt waits 3 seconds between messages, and an error stops the run
Update Sent Status in SheetsWrites LastReminder and LastReminderDate by InvoiceIDThe two columns must exist in row 1

Good to know

WAHA is not WhatsApp’s own business route, and a reminder to someone who did not write first can get the number restricted.

  • WhatsApp rules: WAHA’s page on avoiding blocks, read on 12 November 2026, says you should never start a conversation and should pace what you send. WhatsApp’s business messaging policy, read on the same day, allows messages only to people who gave you their number and agreed to hear from you
  • Restriction: WAHA names the errors 463 and 475 as signs of a restricted or capped number. Use a number you can afford to lose, and send only to customers who agreed
  • Official route: for a business number on WhatsApp’s own platform, replace the HTTP step with n8n’s WhatsApp node and an approved template. This copy does not do that
  • Exact day: an invoice gets a stage only on the day it is exactly 7, 14 or 30 days late. If the run fails or n8n is off that morning, the stage is missed
  • A failed send: the HTTP step has no error handling, so one bad number stops the run, and the invoices after it miss their day
  • Twice in a day: the stamp does not stop a second run on the same day, so a test run can send a reminder twice
  • Country code: a number that does not start with COUNTRY_CODE gets it put in front, so a number from another country must be changed in the code
  • Dates: the code tries ISO, then dd/MM/yyyy, d/M/yyyy and MM/dd/yyyy, in that order, so 05/11/2026 is read as 5 November
  • Money: the text writes the amount with ₪ after it, so edit the texts for another currency
  • Sheets option: the original copy set returnAllMatches 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 removed
  • Your data: names, numbers and amounts go to your WAHA server and then to WhatsApp
  • Not run: Mindket did not call WAHA or Google to test this file, and ran it in a test runner with stand-in answers. The runner has no reader for the dd/MM/yyyy formats, so that step was not run
  • Credentials: the JSON holds none, and the sheet and the server address are placeholders

README and files

README

Escalating invoice reminders on WhatsApp from Google Sheets

An 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.

What is inside

  • workflow.json: the workflow as n8n exports it, five working nodes and four sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • The Google Sheets read node set the option returnAllMatches. From node version 4.5 that option is not used. The source of n8n, read
    on 12 November 2026, returns every matching row when a filter is set, so the option is removed and the behavior is the same.
  • COUNTRY_CODE is now one line at the top of Calculate Overdue Tier. The original copy wrote 972 in two places.
  • Both Sheets nodes and the HTTP node hold placeholders: <YOUR_SPREADSHEET_ID> and <YOUR_WAHA_SERVER>. The original copy left the
    sheet empty and held an address in capital letters.
  • The four sticky notes are rewritten and have no outside address.
  • Every credential reference is removed, so you pick your own.

Before you start

  • An n8n instance. It must be able to reach your WAHA server over the web.
  • A Google account, and a sheet with the columns InvoiceID, CustomerName, Phone, Amount, DueDate, Status, LastReminder
    and LastReminderDate, in row 1 of the tab. InvoiceID must be unique, because the update goes by it.
  • A server that runs WAHA, with a WhatsApp number linked to it and an API key. WAHA's security page, read on 12 November 2026, sends
    the key in the header X-Api-Key and says not to expose WAHA on a public network without a firewall and HTTPS.
  • Customers who gave you their number and agreed to hear from you.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. In 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.
  3. Check that row 1 holds the eight column names, and that Status says open for an unpaid invoice. The update stops with an error if
    LastReminder or LastReminderDate is missing from row 1.
  4. In Post WhatsApp Reminder, replace <YOUR_WAHA_SERVER> in the URL with the address of your WAHA server.
  5. In the same node, add a Header Auth credential with the name X-Api-Key and your WAHA key. If your WAHA has no key, set
    Authentication to None.
  6. In Calculate Overdue Tier, change COUNTRY_CODE if your customers are not in Israel, and read the three Hebrew texts.
  7. Add test rows due 7, 14 and 30 days ago, with your own number. Press Test workflow and check the three messages and
    the stamps in the sheet.
  8. Check the timezone in the workflow settings, so that 09:00 is the morning you mean, and turn the workflow on.

How a run goes

  1. When Each Day at 09:00 starts the run.
  2. Read Invoices from Sheets loads every row whose Status is open.
  3. 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 no
    readable date is skipped. For each invoice that is exactly 7, 14 or 30 days late it writes the Hebrew text and the chat number.
  4. Post WhatsApp Reminder sends the text to WAHA with the session default, one message every three seconds.
  5. Update Sent Status in Sheets writes reminder-7, reminder-14 or reminder-30 in LastReminder and the day in
    LastReminderDate, on the row with the same InvoiceID.

Change the look

  • The time of day is in When Each Day at 09:00.
  • The stages and the three texts are in the REMINDERS list in Calculate Overdue Tier. The texts are Hebrew and ask for payment
    in a friendly tone at 7 days, a plain one at 14 days and a firm one at 30 days.
  • The country code is COUNTRY_CODE in the same node.
  • The pause between messages is the batching option of Post WhatsApp Reminder, 3000 milliseconds.

Good to know

  • WAHA is not WhatsApp's own business route. WAHA's page on avoiding blocks, read on 12 November 2026, says you should never start a
    conversation, and should send only what people asked for, at a calm pace. A reminder to someone who did not write first starts a
    conversation, so the number can be restricted. WAHA names the errors 463 and 475 as signs of a restricted or capped number.
  • WhatsApp's business messaging policy, read on 12 November 2026, allows messages only to people who gave you their number and agreed
    to hear from you.
  • For a business number on WhatsApp's own platform, replace the HTTP step with n8n's WhatsApp node and an approved template. This copy
    does not do that.
  • An invoice gets a stage only on the day it is exactly 7, 14 or 30 days late. If the run fails, or n8n is off that morning, the stage
    is missed for good.
  • The HTTP step has no error handling. One bad number stops the run, and the invoices after it miss their day.
  • The stamp does not stop a second run on the same day, so a test run can send a reminder twice.
  • A number that does not start with COUNTRY_CODE gets it put in front. A number from another country must be handled in the code.
  • The text writes the amount with the shekel sign after it. Edit the texts for another currency.
  • Your data: names, numbers and amounts go to your WAHA server and then to WhatsApp.
  • Not run: Mindket did not call WAHA or Google to test this file. It ran in a test runner with stand-in answers for both, and the three
    stages sent three messages and three stamps. The runner has no reader for the dd/MM/yyyy formats, so that step was not run.
  • The JSON holds no credential.
Files
NOTICE.md  671 B
README.md  6 KB
workflow.json  11 KB

3 files, 17 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-13

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

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…

New

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…

New

ACE-Step 1.5 XL SFT

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…

New

Similar in Finance & accounting

See all in Finance & accounting

Kronos-mini

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…

New

Kronos-Tokenizer-base

NeoQuasar · Kit

Converts candlestick price data into discrete tokens that the Kronos forecasting models read. It suits people who forecast financial markets in Python.

New