South African SMEs are owed billions of rands in overdue invoices right now. The problem is almost never the client refusing to pay — it’s that nobody followed up consistently enough, early enough, in the right channel.
Phone calls go unanswered. Emails land in junk folders or get buried in busy inboxes. But WhatsApp? WhatsApp messages have a 94% open rate in South Africa. Most are read within 4 minutes.
This guide shows you exactly how to build a WhatsApp debt collection automation system — the message sequences, the timing, the tone, and the technical setup. You can implement the basics yourself for free. For the full production system with PDF generation and payment confirmation logging, NanoLeap builds it in 5 days.
Why most SME debt collection fails
Before building a solution, it’s worth understanding why manual collections underperform so consistently:
- Inconsistency — Some clients get two follow-up calls. Some get none. It depends on who’s available and who feels like making calls that day.
- Wrong channel — Sending invoices by email to clients who live on WhatsApp is a category error. They’re not ignoring you; they haven’t seen it.
- Too late — Most businesses only start chasing after 30 days. By then, the client has already prioritised other creditors who asked first.
- No escalation structure — There’s no clear difference between a Day 3 reminder and a Day 30 demand. They both feel like the same gentle nudge.
Automation fixes all four problems simultaneously. Every client gets the same structured sequence. It runs on WhatsApp. It starts the day after the due date. And the tone systematically escalates with each step.
The 5-step WhatsApp collection sequence
This is the sequence NanoLeap deploys for clients. The exact wording depends on your industry and client relationships, but the structure is consistent.
Step 1: Invoice day — send professionally, immediately
The collection process starts when the invoice is sent — not when it becomes overdue. A professional, well-formatted WhatsApp message with a PDF attachment on invoice day sets the expectation immediately.
Hi [Client Name] 👋
Your invoice for [Month] services is attached:
📄 Invoice #[Number] — R[Amount]
Due date: [Date]
Payment details:
Bank: [Bank]
Account: [Account number]
Reference: [Invoice number]
Thank you for your continued business.
— [Your Company]
Note: include every payment detail in the first message. Clients who want to pay immediately shouldn’t have to ask for banking details.
Step 2: Day 3 post-due — friendly check-in
Hi [Client Name],
Just checking in — Invoice #[Number] for R[Amount]
was due on [Date].
If you've already paid, please ignore this message
and send us your proof of payment so we can
update our records.
If you need to arrange payment, please let us
know and we'll work with you.
Thank you 🙏
The tone here is warm and assumes good faith. Many clients have genuinely forgotten or missed the original message. This step alone recovers 40–50% of overdue invoices.
Step 3: Day 7 — direct reminder with re-attached invoice
Hi [Client Name],
A reminder that Invoice #[Number] for R[Amount]
is now 7 days overdue.
📄 Invoice re-attached for your convenience.
Please arrange payment at your earliest
convenience and send us your proof of payment.
If you have a query about this invoice, please
reply to this message and we'll resolve it promptly.
[Your Company]
Re-attaching the invoice is important — “I never received it” is a common response, and this pre-empts it. The query option gives clients a face-saving exit if they have a genuine dispute.
Step 4: Day 14 — formal notice, owner copied
Dear [Client Name],
Invoice #[Number] for R[Amount] is now 14 days
overdue despite previous reminders.
We kindly request that payment be made within
5 business days to avoid further action.
If payment is not received by [Date], this matter
will be escalated to our legal recovery process.
Please contact [Owner Name] directly at
[Phone] to resolve this matter.
[Your Company]
The tone shift here is deliberate. “Dear” instead of “Hi”. Reference to legal process. A specific deadline. At this point, the business owner is also notified by the system — this account needs personal attention.
Step 5: Payment confirmed — stop the sequence immediately
When a client sends proof of payment, the system must stop the sequence immediately and send a receipt. Nothing destroys client relationships faster than continuing to chase someone who has already paid.
Thank you, [Client Name] ✓
Payment of R[Amount] received and confirmed.
Official receipt: [Receipt link or number]
We appreciate your prompt payment.
See you next month! 🙏
The technical setup — how to build this yourself
What you need
- WhatsApp Business API (360dialog recommended — from R180/month)
- Google Sheets (free) — your debtor register
- Google Apps Script (free) — the automation engine
- Google Docs (free) — invoice template
Your Google Sheets debtor register
Set up a sheet with these columns:
Column A: Client Name
Column B: WhatsApp Number
Column C: Invoice Number
Column D: Invoice Amount
Column E: Due Date
Column F: Status (SENT / REMINDED_3 / REMINDED_7 / ESCALATED / PAID)
Column G: Payment Date
Column H: Receipt Sent (Yes/No)
The Apps Script trigger logic
function runDailyCollections() {
const sheet = SpreadsheetApp.getActiveSheet();
const today = new Date();
const data = sheet.getDataRange().getValues();
for (let i = 1; i < data.length; i++) {
const dueDate = new Date(data[i][4]);
const status = data[i][5];
const daysOverdue = Math.floor(
(today - dueDate) / (1000 * 60 * 60 * 24)
);
if (status === 'PAID') continue; // Skip paid invoices
if (daysOverdue === 0 && status === '') {
sendInvoice(i, data[i]); // Invoice day
} else if (daysOverdue === 3 && status === 'SENT') {
sendReminder3(i, data[i]); // Day 3
} else if (daysOverdue === 7 && status === 'REMINDED_3') {
sendReminder7(i, data[i]); // Day 7
} else if (daysOverdue === 14 && status === 'REMINDED_7') {
sendEscalation(i, data[i]); // Day 14
}
}
}
Set this function to run daily using Apps Script triggers: Triggers → Add trigger → runDailyCollections → Time-driven → Day timer.
Industry-specific considerations
Construction and engineering
Construction payments are governed by the CIDB and often involve retention releases and progress claims. Your collection sequence needs to handle disputed amounts and partial payments. The Day 14 escalation should reference your contract terms specifically.
Professional services (law, accounting, consulting)
Client relationships are long-term and sensitive. The first two reminders must be softer. Consider a phone call flag at Day 10 before the formal Day 14 notice — the system can trigger an alert to your accounts person to make a personal call before the formal escalation fires.
Medical practices
Patient shortfall collections must be handled carefully — the NCA (National Credit Act) applies to medical accounts in certain circumstances. Keep the tone supportive and always offer a payment arrangement option.
Security companies
SLA clients who don’t pay remain protected sites — which creates operational tension. Your escalation sequence should trigger an internal alert at Day 14 so the operations director can make a decision about continued service provision.
✓ Average result across NanoLeap clients: 73% reduction in overdue debtor book within 60 days of deploying WhatsApp collection automation.