It's 2pm on a Tuesday and you've got three invoices overdue, two more due next week, and no idea which client actually paid you last month. You spend an hour digging through emails and spreadsheets, then manually send a polite reminder to whoever owes you money. Next week you'll do it all again. Multiply this by fifty freelancers and you're looking at thousands of hours of wasted time each month. The good news: this workflow doesn't need to exist. You can build a dashboard that tracks every invoice, flags overdue payments automatically, sends reminders without your input, and even logs payment activity for your records. The better news: it takes less than a day to set up, and you'll never manually chase a payment again. This guide walks you through building a freelancer dashboard using three tools that do exactly what they're designed for, connected via orchestration so everything talks to everything else. No babysitting. No copy-pasting. Just invoices flowing in, statuses updating, and reminders going out on schedule.
The Automated Workflow
The core idea is simple: your productivity app stores invoice data and generates reminders, an AI platform handles payment logic and status updates, and a coding cost tracker monitors your own tool spending. An orchestration tool (we'll use n8n for its flexibility and local-first options) connects the three so data flows in one direction without manual intervention. Here's how the data moves: 1. You create an invoice in your productivity app (with client name, amount, due date, payment status).
-
n8n polls that app every 4 hours and fetches new invoices.
-
For each invoice, n8n checks the due date against today's date.
-
If an invoice is overdue, n8n triggers a reminder in Flash AI (the automation platform) which queues a payment follow-up message.
-
Flash AI logs the reminder sent and updates the invoice status in your productivity app.
-
BurnRate tracks the cost of running all these AI calls so you know what this automation actually costs you. Setting up n8n as the backbone n8n is the orchestrator here. It's open-source, self-hosted by default, and lets you build workflows without touching APIs directly. Install it locally or use n8n Cloud. Start by creating two credentials: one for your productivity app, one for Flash AI. Most productivity apps expose a REST API with simple auth tokens.
GET /api/invoices
Headers: Authorization: Bearer YOUR_PRODUCTIVITY_APP_TOKEN Accept: application/json
This endpoint returns a list of invoices structured like this:
json
{ "invoices": [ { "id": "INV-001", "client_name": "Acme Corp", "amount": 2500, "currency": "GBP", "due_date": "2025-01-15", "status": "unpaid", "created_at": "2025-01-08" }, { "id": "INV-002", "client_name": "Beta Ltd", "amount": 1800, "currency": "GBP", "due_date": "2025-01-20", "status": "unpaid", "created_at": "2025-01-10" } ]
}
In n8n, create a new workflow with these steps: 1. Schedule trigger, set to run every 4 hours.
-
HTTP Request node pointing to your productivity app's
/api/invoicesendpoint. -
Split node to iterate over each invoice.
-
Function node to compare due date against today and flag overdue invoices.
-
Conditional branch: if overdue, proceed to step 6; otherwise, skip.
-
HTTP Request node to Flash AI's reminder endpoint.
-
HTTP Request node to update the invoice status back in your productivity app.
The date comparison logic
In the Function node, add this JavaScript snippet to identify overdue invoices:
javascript
const today = new Date();
const dueDate = new Date(item.json.due_date);
const daysOverdue = Math.floor((today - dueDate) / (1000 * 60 * 60 * 24)); return { ...item.json, is_overdue: daysOverdue > 0, days_overdue: daysOverdue
};
This adds two fields to each invoice: a boolean flag and the number of days overdue.
Triggering Flash AI reminders
Flash AI has a task automation endpoint that queues follow-up messages. The endpoint expects a POST request with client details and message content.
POST https://api.flashai.io/v1/tasks
Headers: Authorization: Bearer YOUR_FLASH_AI_TOKEN Content-Type: application/json
Body:
{ "task_type": "send_reminder", "client_name": "Acme Corp", "invoice_id": "INV-001", "amount": 2500, "currency": "GBP", "days_overdue": 5, "message_template": "payment_reminder_first"
}
Flash AI generates a personalised reminder message based on the days overdue. First reminder (0-7 days) is polite. Second reminder (8-14 days) is firmer. By day 15, you're asking for a conversation. Flash AI returns a response confirming the task was queued:
json
{ "task_id": "TASK-12345", "status": "queued", "scheduled_send": "2025-01-16T14:00:00Z", "message_preview": "Hi Acme Corp, just a friendly reminder that invoice INV-001 for £2,500 was due on 15 January. Please arrange payment at your earliest convenience."
}
Updating invoice status
Back in n8n, after Flash AI confirms the reminder was queued, send a PATCH request to your productivity app to update the invoice status:
PATCH /api/invoices/INV-001
Headers: Authorization: Bearer YOUR_PRODUCTIVITY_APP_TOKEN Content-Type: application/json
Body:
{ "status": "overdue", "last_reminder_sent": "2025-01-16T14:00:00Z", "reminder_count": 1
}
This keeps your productivity app in sync. When you log in to check invoices, you see which ones have been flagged and when the last reminder went out.
Logging costs in BurnRate
BurnRate tracks API call costs automatically if you're using Claude-based tools or other major providers. Since we're calling Flash AI repeatedly, BurnRate can estimate the cost of each reminder task. Configure BurnRate to monitor your n8n workflow execution logs, and it will break down cost per invoice processed. This matters because if you've got 50 overdue invoices, you're triggering 50 API calls every 4 hours. BurnRate tells you if that's costing you £10 a month or £100 a month, so you can decide whether to run reminders daily instead of every 4 hours.
The Manual Alternative
If you want more control over when reminders go out, skip the schedule trigger and instead use a manual approval step. Replace the schedule trigger with a webhook, then manually hit that webhook from your productivity app whenever you want to run the payment chase. Alternatively, check your productivity app dashboard daily, run the n8n workflow manually when you notice overdue invoices, and let Flash AI generate the reminder but send it yourself. This takes 10 minutes instead of seconds, but gives you a chance to personalise each message or skip a reminder for a client you know is having cash flow problems.
Pro Tips
Avoid duplicate reminders.
If n8n runs every 4 hours and sends a reminder, Flash AI might queue multiple messages for the same invoice.
In the Function node, add a check: only trigger a reminder if the last reminder was sent more than 3 days ago.
javascript
const lastReminderDate = new Date(item.json.last_reminder_sent);
const timeSinceLastReminder = Math.floor((today - lastReminderDate) / (1000 * 60 * 60 * 24)); return { ...item.json, should_send_reminder: timeSinceLastReminder >= 3
};
Set escalation tiers.
Don't send the same message every time. Configure Flash AI's template to change based on days overdue. By day 20, the tone shifts from "friendly reminder" to "this account is in arrears." BurnRate can track which message templates cost more to generate (longer reminders usually do), so you can balance politeness against cost.
Monitor API failures gracefully.
If Flash AI is temporarily down, n8n should log the error but not crash. Add a retry node: wait 5 minutes, try again, and if it fails twice, send yourself a Slack notification so you know to follow up manually. This prevents invoices from falling through the cracks.
Test with a single invoice first.
Before running the workflow on all 50 invoices, create a test invoice with today's date minus 5 days as the due date. Run the workflow once manually and verify that the reminder actually arrives and the status updates. Then enable the schedule. Use the Productivity app's nested AI chat for drafting custom messages. When you want to send a one-off message to a difficult client, use the productivity app's built-in AI chat to draft something professional, then paste it into Flash AI as a custom reminder. This keeps your tone consistent without needing to write every message from scratch.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| Productivity app with nested AI chats | Pro or Business | £10–£30 | Stores invoices; pay for team seats if applicable |
| Flash AI | Standard | £20–£50 | Usage-based; ~£0.10 per reminder sent, scales with frequency |
| BurnRate | Free or Pro | £0–£15 | Free tier tracks up to 10,000 API calls; Pro adds detailed cost breakdowns and optimisation suggestions |
| n8n Cloud | Free or paid | £0–£29 | Free tier includes 5,000 executions/month; paid plans enable higher execution limits and priority support |
| Self-hosted n8n | One-time setup | £0 | Run on your own server; costs only your server time and electricity |