---
title: "The late-invoice chaser: escalating payment reminders without a €500/month SaaS"
subtitle: "Polite, automatic follow-ups that get you paid on time"
url: "https://rxed.ai/blueprints/2026-07-06-late-invoice-chaser-invoice-ninja.html"
id: "late-invoice-chaser"
version: "1.0"
published: "2026-07-06"
kind: "workflow"
setup_effort: "A weekend"
setup_hours: "6-10"
running_cost_usd_per_month: "5-12"
paid_software_usd_per_month: "0"
time_saved: "saves ~0.7–1.3 h/week for the owner at 10 runs per week"
time_saved_basis: "4–8 minutes of manual handling per run"
runs_by: "owner"
data_location: "mixed"
data_location_note: "Invoices and contacts stay on your server; reminder emails pass through your mail provider."
first_to_break: "the payment status in Invoice Ninja falling behind reality, so customers who already paid still get chased"
failure_signal: "loud"
problem: "Late payers only get chased when you find a spare moment, so your money arrives late. Dedicated chasing software costs EUR 160-800 every month."
fix: "Your invoicing system sends polite reminders on a fixed schedule by itself, and every Monday you get one list of who still owes what. For stubborn cases a firmer letter is drafted for you — you always press send yourself."
tools: ["Invoice Ninja", "n8n", "Ollama", "Docker"]
tech: ["Invoice Ninja", "n8n", "Ollama"]
repos:
  - name: "Invoice Ninja"
    url: "https://github.com/invoiceninja/invoiceninja"
  - name: "n8n"
    url: "https://github.com/n8n-io/n8n"
  - name: "Ollama"
    url: "https://github.com/ollama/ollama"
categories: ["Invoicing", "Payments", "Reminders", "Self-hosted", "n8n", "Local AI"]
source: "RXed AI News — https://rxed.ai"
---
# The late-invoice chaser: escalating payment reminders without a €500/month SaaS

> Polite, automatic follow-ups that get you paid on time

## Before you start

- Every invoice must be issued from Invoice Ninja, carrying the real due date
- A mailbox or SMTP relay that can send as your domain, with SPF and DKIM set, or the reminders land in spam
- Payments must be marked off in Invoice Ninja promptly, or paid customers get chased
- About 16 GB of RAM if Ollama drafts the firmer letters locally

## What breaks first

the payment status in Invoice Ninja falling behind reality, so customers who already paid still get chased. A paid customer replies angrily; import or tick off payments before the Monday run goes out.

Automatic, polite, escalating reminders on every overdue invoice, plus a Monday-morning cash-flow digest — self-hosted, and the awkward final email stays human.

 

### The problem

 You did the work, sent the invoice, and now it sits. Chasing feels awkward, so it happens in bursts — usually when cash gets tight, which is the worst possible moment to discover that three clients are 40+ days late. The dedicated AR platforms solve this for $180–900 per month, priced for companies with a finance team. Meanwhile most small-business "automation" content on this topic is a listicle of email templates you still have to remember to send. The actual fix is boring: a system that never forgets, escalates on a fixed schedule, and puts one short exception report in front of you weekly.

 

### The architecture

 
 [ Invoice Ninja (self-hosted) ] — system of record 
     │  invoices, due dates, client portal, payment links 
     │ 
     ├── built-in reminder engine (no LLM involved) 
     │     • D-3: friendly "due soon" note 
     │     • D+7: overdue reminder + payment link 
     │     • D+14: firmer reminder + payment link 
     │ 
     └── REST API 
          │  polled weekly by n8n 
          ▼ 
 [ n8n workflow ] — Monday 08:00 
          │  pull open invoices → aging buckets (0–7 / 8–14 / 15–30 / 30+) 
          ├── digest to owner (email/Telegram): who owes what, how long 
          └── for 30+ days: [ LLM via Ollama ] drafts a personal escalation 
                email referencing the history — saved as draft, human sends 
 

 Two separate loops, on purpose. Routine reminders (D-3 to D+14) are template-driven and fully automatic — no AI, nothing to hallucinate, they just fire. The 30+ day escalation is where relationships and judgment live, so the machine only drafts and a human decides. Most AR SaaS sells you the first loop at platform prices; you can self-host it.

 

### Tool choices — and why

 Invoice Ninja, self-hosted (9.9k stars, active — last push 30/06/2026). A full invoicing system with the reminder engine built in: three configurable reminders plus recurring "endless" reminders after that, each with its own template, timing relative to the due date, and optional late fee. It also gives you a client portal and online payment links — the single biggest lever for getting paid faster, because "click here and pay" beats "please wire to IBAN..." every time. License note: Elastic License 2.0, not OSI open source — self-hosting it to run your own business is explicitly fine; offering it to others as a hosted service is not. The free self-hosted edition shows small Invoice Ninja branding on client-facing documents; a paid white-label option exists if that bothers you. Alternatives: if you already invoice from accounting software that has reminders (e.g. your bookkeeper's platform), use those and keep only the digest loop below — don't run two invoicing systems.

 n8n (194.8k stars, active — last push 01/07/2026). One scheduled workflow: call the Invoice Ninja API, bucket open invoices by age, format a digest, send it to you. This is deliberately read-only against the invoice system — the workflow can't modify invoices, so a bug produces a wrong report, not a wrong invoice. Fair-code Sustainable Use License; self-hosting for your own business is allowed.

 Ollama + a small instruct model (MIT, ~175k stars, active). Used for exactly one thing: turning "Client X, 3 invoices, 34 days, €4,200, second escalation" into a short, firm, personal email in the client's language. Payment history stays on your machine. An 8B-class model does this well because the input is structured and the output is four sentences. If you skip the LLM entirely, the blueprint still works — you just write the escalation emails yourself from the digest.

 Monthly cost. Software: €0. Hardware: a €5–12/month VPS runs Invoice Ninja + n8n comfortably; add the LLM only if the box has ~8 GB+ RAM, otherwise run Ollama on an office machine. Payment-link fees are the real cost: card/PSP processing typically runs ~1.5–3% per transaction depending on provider and country (verify current rates for your PSP) — for B2B, offering bank transfer with a structured reference alongside cards keeps this near zero.

 

### Setup outline

 1. Self-host Invoice Ninja (official Docker image) and migrate active clients + open invoices. Connect your SMTP so reminders come from your own domain. 
 2. Configure the three reminders: D-3 friendly, D+7 overdue, D+14 firm — each with a payment link. Write them once, in your voice, per language you invoice in. 
 3. Decide the late-fee question consciously. EU B2B rules (Directive 2011/7/EU, as implemented in your country) allow statutory interest plus a fixed recovery cost on late business payments — whether enforcing that is worth the relationship damage is a business call, not a technical one. This is general information, not legal advice. 
 4. Build the n8n Monday digest: Invoice Ninja API → aging buckets → one message. Keep it under 15 lines; if you won't read it, nothing else matters. 
 5. Add the escalation drafter: for 30+ day invoices, LLM drafts from structured facts only (client, amounts, dates, prior reminders) → saved as draft or sent to you for approval. 
 6. Run one full month, then check two numbers: average days-to-paid before vs after, and how many escalation drafts you actually sent unedited. Tune the templates, not the architecture.

 

### Pitfalls — the real ones

 Never auto-send the escalation. Reminder 1–3 are expected business hygiene; nobody resents them. The 30+ day email lands differently — one wrong tone to your biggest client costs more than a year of the automation saves. Draft-only is the design. 
 Reminders only work if invoice data is clean. Wrong due dates, invoices marked sent that never were, part-payments not recorded — the automation amplifies whatever is in the system. Fix intake first (our receipt-intake blueprint is the sibling of this one). 
 Don't chase disputed invoices. Add a "disputed" flag workflow: one label in Invoice Ninja pauses reminders for that invoice. An automated dunning email on a disputed amount is how you turn a billing question into a lost client. 
 Escalation is a process, not an email. After the drafted 30+ day email, the next steps are a phone call and, in serious cases, formal action — humans, not workflows. The blueprint's job ends at making sure you know, every Monday, exactly who to call. 
 GDPR footnote: payment behavior is personal data when your clients are sole traders. Self-hosting keeps it on your infrastructure; if you swap in a hosted LLM API for drafting, you're shipping client payment history to a third party — don't, the local model is more than enough here.

 

### Verified repos

 
 [Invoice Ninja](https://github.com/invoiceninja/invoiceninja) — Elastic License 2.0, 9.9k stars, active (June 2026) 
 [n8n](https://github.com/n8n-io/n8n) — Sustainable Use License (fair-code), 194.8k stars, active (July 2026) 
 [Ollama](https://github.com/ollama/ollama) — MIT, ~175k stars, active (June 2026)
 

 
 Get the next blueprint as it publishes — free, practical, verified tooling only.

 [Subscribe](https://subscribe.rxed.ai) · Want this audited or extended for your business? DM [@RXed_EU](https://x.com/RXed_EU)
