You've sent an invoice three weeks ago. The client hasn't paid. You've forgotten to follow up because you were busy delivering the next project. By the time you remember, it's been five weeks, and now sending a reminder feels awkward. This cycle repeats across your client list, and suddenly you're owed thousands in cash that should already be in your account. Most freelancers and contractors treat invoice tracking as something that happens in the background of their work; a spreadsheet, maybe a note in their calendar, perhaps an occasional email they remember to send. The result is late payments become normalised, cash flow becomes unpredictable, and you spend more time chasing money than actually earning it. What if you stopped waiting for payment reminders and started letting your tools remind you instead? This workflow automates the entire process: tracking invoice due dates, flagging overdue invoices, generating personalised payment chase emails, and escalating follow-ups without any manual intervention. You'll set it up once and then watch it work across all your clients. For more on this, see Freelancer invoice and payment chasing automation with re....
The Automated Workflow
The architecture uses four connected components working in sequence. An orchestration layer monitors your invoices and triggers actions based on due date rules; AI generates contextually appropriate chase emails; reminders keep you informed; and payment agents can handle follow-ups if you opt in.
Step 1: Set up invoice tracking in your productivity app
You'll need a database or list in your productivity tool (Notion, Airtable, or equivalent) that contains at minimum: client name, invoice number, amount, due date, and payment status. This becomes your source of truth. Make sure dates are formatted consistently so your automation can parse them.
Step 2: Choose your orchestration tool
For this workflow, n8n is the best choice because it offers reliable scheduling, multi-step conditionals, and built-in error handling without needing to worry about API rate limits catching you off-guard. Here's how to structure it: A scheduled trigger runs daily at 9 AM. Every morning, it fetches all invoices from your productivity app where the status is not "Paid."
GET /api/invoices?filter=status:!Paid
For each invoice returned, the workflow evaluates three conditions: is it overdue by fewer than 3 days (gentle reminder), overdue by 3-7 days (follow-up email), or overdue by more than 7 days (escalation)?
Step 3: Generate chase emails with AI
For each invoice in the 3-7 day overdue bracket, use the ChatGPT Writer extension or call the OpenAI API directly with GPT-4o mini. This model is fast and cost-effective for generating professional emails. Prompt it to generate a polite but firm payment reminder with specific invoice details embedded.
{ "model": "gpt-4o-mini", "messages": [ { "role": "system", "content": "You are a professional accounts manager sending payment reminders. Be polite but direct. Include the invoice number and due date." }, { "role": "user", "content": "Generate a payment reminder email for client: ${client_name}, invoice: ${invoice_number}, amount: ${amount}, due date: ${due_date}, days overdue: ${days_overdue}" } ], "max_tokens": 200
}
Store the generated email in a staging field in your productivity app. This gives you a chance to review before sending, or you can automate email sending entirely using your email provider's API.
Step 4: Create reminder notifications
At the 3-day overdue mark, send yourself a notification (email, Slack, or push notification depending on your setup) flagging the invoice and attaching the AI-generated chase email. This keeps you in the loop without requiring you to check anything manually.
Step 5: Escalate with Payman AI (optional)
If you want to fully automate follow-ups and you're comfortable with it, Payman AI can handle outbound payment reminder tasks. You configure a task that includes the client contact details and the generated email copy. Payman's agents attempt to contact the client and report back whether payment has been committed. This is particularly useful if you have many invoices and want to avoid manual contact altogether.
Wiring it together in n8n
Here's a skeleton workflow configuration:
1. Schedule Trigger (daily, 9 AM) ↓
2. HTTP Request: Fetch invoices from productivity app ↓
3. For Each invoice: - Calculate days overdue - Switch node: evaluate condition ├─ If < 3 days: Log only ├─ If 3-7 days: Call GPT-4o mini → Generate email → Store in app └─ If > 7 days: Call GPT-4o mini → Generate escalation email → Log to Payman AI ↓
4. Send notification to you (Slack/Email) ↓
5. Update invoice status in productivity app (mark as "reminder sent")
The key variable you'll need to pass through each step is the invoice object itself. In n8n, use the ${item(0).fieldName} syntax to reference fields from your productivity app.
const invoiceData = { client_name: "{{$node['Fetch Invoices'].json['body'][0]['client']}}", invoice_number: "{{$node['Fetch Invoices'].json['body'][0]['id']}}", amount: "{{$node['Fetch Invoices'].json['body'][0]['amount']}}", due_date: "{{$node['Fetch Invoices'].json['body'][0]['due_date']}}", days_overdue: Math.floor((new Date() - new Date("{{$node['Fetch Invoices'].json['body'][0]['due_date']}}")) / (1000 * 60 * 60 * 24))
};
The Manual Alternative
If you prefer to keep human judgment in the loop, skip the email generation step and simply use n8n to send yourself daily digest emails listing overdue invoices. Read through them each morning, assess which clients need a gentle nudge versus a firm reminder, and send emails yourself. You lose the time saving but retain full control over tone and client relationships. Some freelancers prefer this approach, especially early in their business when client relationships are still forming and personalisation matters more than speed.
Pro Tips
Error handling and missing invoices.
If your productivity app is down or a request fails, your workflow will break silently unless you add error handlers.
In n8n, use the "On Error" setting on every HTTP node to log failures to a backup channel (email to yourself, for example). This prevents invoices from slipping through without being tracked.
Rate limits on the OpenAI API.
GPT-4o mini has a rate limit of around 500 requests per minute on most plans. If you have hundreds of invoices, you might hit this. Use n8n's built-in rate limiting node to throttle requests to 10 per second, ensuring you never exceed the limit.
Avoid email fatigue.
Don't send AI-generated chase emails directly to clients without reviewing them first. Store them as drafts in your productivity app for 24 hours, then send them only if you haven't already received payment. This prevents embarrassing emails going out to clients who've already paid.
Customise email tone by client.
Add a "Client Type" or "Relationship Strength" field to your invoice table. Pass this to the GPT-4o mini prompt so it adjusts tone accordingly. Long-standing clients might get friendly reminders; new clients might get slightly firmer language.
Track response metrics.
After sending a chase email, log the timestamp and note when payment arrives. Over a few months, you'll see which approaches work best with different clients, allowing you to refine your prompts and escalation strategy.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n | Professional | £50 | Needed for reliable scheduling and multi-step workflows |
| OpenAI API (GPT-4o mini) | Pay-as-you-go | £5–15 | Assumes ~100 invoices per month with email generation |
| Productivity app (Notion/Airtable) | Pro or equivalent | £10–20 | Needed for invoice database and field updates |
| Payman AI | Pay-per-task | Variable | Optional; only use if automating outbound contact |
| Email API (SendGrid/Resend) | Starter | £0–10 | Only needed if automating email sending |
| Total | £65–105 | Highly dependent on invoice volume and Payman usage |