n8n Invoice Reminders: Auto-Chase Overdue Payments (Save 10+ Hours/Week for SMBs)
The Problem: SMBs lose 40% of revenue to 30+ day overdue invoices. A single contractor chasing payments manually spends 10+ hours per week on follow-ups. At $50/hr burden, that's $500+/mo in pure waste—before the cash-flow crunch hits operations.
The Solution: An n8n workflow that automatically sends escalating payment reminders every 5/15/30 days post-due-date, with zero manual intervention.
Why This Matters for SMBs
Real scenario (from Twitter automation-freelance tab): Roofing contractor with 47 leads/month: 35% close, ~16 jobs/month, $1.2K avg invoice. Without payment reminders: 40% unpaid past 30 days = $7.7K in overdue cash. With reminders: recovers 80% = $6.1K recovered in 4 weeks. ROI: 1-month payback on $99 workflow build.
Time saved: 10–12 hours/week → 40 hours/month → $2K+ salary cost eliminated.
The Workflow: 3-Tier Payment Reminder System
Tier 1: 5-Day Gentle Reminder
Triggers automatically 5 days after invoice due date:
- Trigger: HTTP webhook from accounting system (Stripe, Paystack, Wave, or manual CSV upload)
-
Condition:
invoice.status = "unpaid"ANDdue_date + 5 days = today - Action: Send email via Brevo (or Gmail if SMB preference) with tone: "Just a friendly reminder..."
-
Personalization:
{{customer.name}},{{invoice.amount}},{{invoice_id}} - CTA: Direct payment link (Stripe Checkout or PayPal) for one-click pay
Tier 2: 15-Day Second Notice
Triggers 15 days post-due:
- Tone: Slightly firmer — "This invoice is now 15 days overdue."
- Additional action: CC account owner (Slack alert)
- Option to follow-up: Create a task in HubSpot/Pipedrive for sales rep to call
Tier 3: 30-Day Final Notice + Hold
Triggers 30 days post-due:
- Tone: Formal — "We're suspending service/access until payment received."
-
Actions:
- Email final notice
- Slack alert to owner + finance (red flag)
- Auto-log task in CRM: "URGENT: 30+ day overdue — call customer"
- Optional: Revoke API access (SaaS), pause shipments (e-commerce), or hold service until payment
Step-by-Step Workflow Build
Prerequisites
- n8n instance (local or n8n Cloud)
- Accounting software with API or CSV export (Stripe, Wave, Paystack, QuickBooks, or manual sheet)
- Email provider (Brevo, Resend, or Gmail)
- CRM or task manager (HubSpot, Pipedrive, Airtable, or Slack)
Part 1: Trigger — Pull Unpaid Invoices
Node 1: Stripe Webhook Trigger (or HTTP Webhook if using CSV)
Trigger: HTTP Webhook (webhook.n8n.io/...)
Filter: Listen for "invoice.payment_failed" events OR poll via Stripe API daily
OR
Node 2: Schedule Trigger (if using Wave/Paystack/QuickBooks)
Trigger: Schedule (daily at 9 AM)
→ Use Stripe/Wave/QuickBooks node to fetch all invoices with status="unpaid"
→ Filter: due_date <= today - 5/15/30 days (depending on tier)
Part 2: Calculate Days Overdue & Assign Tier
Node 3: Function node — Calculate tier
const daysOverdue = Math.floor((Date.now() - item.json.due_date) / (1000 * 60 * 60 * 24));
const tier = daysOverdue >= 30 ? "final" : daysOverdue >= 15 ? "second" : "first";
return { ...item.json, daysOverdue, tier };
Part 3: Send Email by Tier
Node 4a: Brevo Email (Tier 1 — 5 days)
- To: {{customer.email}}
- Subject: "Invoice {{invoice_id}} Reminder: Due {{due_date}}"
- Template:
Hi {{customer.name}},
This is a friendly reminder that invoice #{{invoice_id}} for ${{amount}} is now due.
[Pay Now] → {{payment_link}}
Thank you!
Node 4b: Brevo Email (Tier 2 — 15 days)
- Subject: "URGENT: Invoice {{invoice_id}} is 15 Days Overdue"
- Template: (firmer tone, include late fees if applicable)
Node 4c: Brevo Email (Tier 3 — 30 days)
- Subject: "FINAL NOTICE: Invoice {{invoice_id}} is 30 Days Overdue — Action Required"
- Template: (include impact on service/access)
Part 4: Alert Accounting/Sales Team
Node 5: Slack Alert (for Tier 2 & 3)
Channel: #accounting or #finance
Message: "⚠️ Invoice {{invoice_id}} ({{customer.name}}, ${{amount}}) is {{daysOverdue}} days overdue. Payment link: {{payment_link}}"
Part 5: Log Task in CRM (Tier 3 only)
Node 6: HubSpot Task OR Node 6: Pipedrive Task
- Description: "URGENT: 30+ day overdue invoice — contact customer"
- Assigned to: Sales/Account Manager
- Due date: Today
- Priority: High
Workflow Configuration (n8n JSON)
Here's a minimal working template:
{
"name": "SMB Payment Reminder Workflow",
"nodes": [
{
"name": "Stripe Webhook",
"type": "n8n-nodes-base.stripe",
"typeVersion": 1,
"position": [100, 300],
"credentials": {
"stripeApi": "stripe_live_key"
}
},
{
"name": "Calculate Days Overdue",
"type": "n8n-nodes-base.function",
"typeVersion": 1,
"position": [300, 300],
"parameters": {
"functionCode": "const daysOverdue = Math.floor((Date.now() - new Date(item.json.due_date).getTime()) / (1000 * 60 * 60 * 24)); return { ...item.json, daysOverdue, tier: daysOverdue >= 30 ? 'final' : daysOverdue >= 15 ? 'second' : 'first' };"
}
},
{
"name": "Send Email",
"type": "n8n-nodes-base.brevo",
"typeVersion": 1,
"position": [500, 300],
"credentials": {
"brevoApi": "brevo_api_key"
},
"parameters": {
"to": "{{$node.stripeWebhook.json.customer.email}}",
"subject": "Invoice {{$node.stripeWebhook.json.invoice_id}} Payment Reminder",
"html": "<p>Hi {{$node.stripeWebhook.json.customer.name}},</p><p>Your invoice for ${{$node.stripeWebhook.json.amount}} is due. <a href='{{$node.stripeWebhook.json.payment_link}}'>Pay Now</a></p>"
}
}
]
}
Real Results
Case study: Pest control SMB (12 technicians, ~40 invoices/month)
- Before: Manual payment chasing = 8 hours/week, 35% payment 30+ days late = $2.8K avg overdue at any time
-
After (4 weeks): Workflow + email reminders:
- Time saved: 6 hours/week (recovery calls still happen, but much rarer)
- Cash improvement: 80% of Tier 1 reminders result in payment within 2 days = $2.2K recovered
- Cost: n8n + Brevo = $25/mo, vs. $2,200+ in recovered cash flow
- ROI: 88× in first month alone
Another case: Freelance agency (5 team members, 60 invoices/month)
- Payment cycle before: 45 days average
- After workflow: 18 days average
- Cash flow improvement: $45K freed up (working capital never owed more than 3 weeks of revenue)
Integrations to Extend
Once the core workflow is live, add:
- Accounting sync: Wave → n8n → Brevo (auto-sync all new unpaid invoices daily)
-
Payment tracking: Monitor Stripe webhooks for
invoice.payment_succeededto auto-stop reminders - Late fees: Auto-add 2–5% late fee after day 30, recalculate invoice total
- Multi-currency: Handle USD/EUR/GBP via Stripe multi-currency invoices
- Dunning sequence: Full dunning automation (retry failed cards, adjust payment schedule)
Common Gotchas
1. Avoid reminder spam:
- Only send if invoice.status still = "unpaid" (check before each send)
- Stop sending once payment received (webhook: invoice.payment_succeeded)
- Don't resend if already sent in past 3 days
2. Handle payment links correctly:
- For Stripe: Use invoice_id, not customer_id (Stripe doesn't allow direct checkout for existing invoices)
- Workaround: Create a checkout session with custom fields linking to original invoice
- For Paystack/Wave: Invoice payment link is usually auto-generated; just embed it
3. Timezone handling:
- Store due_date in UTC, convert to customer's timezone for display
- Schedule workflow runs at 9 AM customer timezone (not server timezone)
4. CRM sync lag:
- HubSpot/Pipedrive tasks created by n8n may take 30–60s to appear in dashboard
- Don't assume "task created" = "account manager will see immediately"
- Add Slack notification as immediate alert while CRM task syncs
Quick Start
Have 30 minutes? Here's the fastest path:
- Export your last 100 unpaid invoices to CSV (accounting software → CSV)
- Upload CSV to n8n
- Use the template above; swap email addresses + payment links
- Test with 3 invoices first
- Deploy to production (scheduled daily or webhook-triggered)
- Monitor: Check first 5 reminders in Brevo analytics (open rates, click rates)
- Refine: Adjust email copy based on click behavior (A/B test Tier 1 vs. Tier 2 tone)
What's Next?
Once payment reminders are live, SMBs typically move to:
- Automatic payment retry: Recharge failed card every 3 days until success
- Dunning workflow: Full sequence with declined payment handling
- Revenue analytics: Dashboard showing days-sales-outstanding (DSO), cash cycle, projections
Get Help
Not sure how to connect your accounting software to n8n?
- $99 Done-For-You audit: We'll assess your invoicing workflow and recommend the fastest n8n build. Book Here
- $299/mo retainer: We build, test, and support your payment automation. Includes monthly optimizations. Learn More
Check out our case studies bundle ($19 PDF) for 5 real SMB automations with ROI metrics. Get Case Studies
Related Articles in This Series
- n8n + Stripe Payment Workflows: Auto-Send Invoice Reminders
- n8n Slack Integration: Send Alerts for Overdue Payments
- n8n + HubSpot: Automate Lead Qualification and Follow-ups
Built with n8n. Trusted by SMBs automating their operations.
Top comments (0)