DEV Community

Cover image for How I automated my freelance payment tracking (and stopped chasing clients for money)
Nathaniel Richard
Nathaniel Richard

Posted on

How I automated my freelance payment tracking (and stopped chasing clients for money)

As developers, we love building products, but we usually hate the administrative side of freelancing.

For a long time, my invoicing system was a disaster. I was tracking payments in a messy notes app, relying on my memory to know who owed me what, and feeling awkward every time I had to ask a client for money. I was losing cash simply because I forgot to follow up.

So, I decided to treat my invoicing like a software problem and built a simple, automated system to handle it.

Here is how I structured the logic, and the exact email swipe file I use to get paid on time.

The System Architecture (Google Sheets)
Instead of paying for expensive SaaS accounting tools, I built a lightweight database in Google Sheets. The goal was zero manual math and visual alerts.

Here is the core logic I set up:

The Ledger: A simple table tracking Invoice #, Client, Issue Date, Due Date, and Amount.

The Status Engine: I wrote a nested IF statement that compares the Due Date to TODAY(). If the current date passes the due date and the "Date Paid" cell is empty, the row automatically turns bright red and updates the status to "Overdue."

The KPI Dashboard: A top-level summary using SUMIF formulas to constantly show me my Total Cash Collected vs. Pending Balance.

Whenever I open the sheet, I instantly know exactly who to email.

The "Zero-Awkwardness" Email Swipe File
The hardest part of getting paid is knowing what to say. I created a standard 4-step communication protocol. You can copy and paste these for your own clients:

  1. The Friendly Heads-Up (3 Days Before Due Date)

"Hi [Client], a quick courtesy reminder that Invoice [Invoice #] for $[Amount] is scheduled for payment on [Due Date]. I’ve re-attached a copy below for easy access. Let me know if your accounts team needs any additional information to keep things moving!"

  1. The Day-Of Notice

"Hi [Client], just dropping a quick note that Invoice [Invoice #] is due today. Please reply with the remittance receipt once processed so I can mark this as settled in my tracker."

  1. The 7-Day Overdue Follow-up

"Hi [Client], following up on Invoice [Invoice #], which is now 7 days past due. I understand administrative delays happen. Could you please confirm if this has been queued for approval, or provide an updated date for when I can expect the funds to clear?"

  1. The 14-Day Firm Notice (Project Hold)

"Hi [Client], I have not received payment regarding Invoice [Invoice #], which is now 14 days past due. Per our terms, active project deliverables are temporarily paused until the outstanding balance is brought current. To resume scheduled work, please settle the balance today."

Want the "Plug & Play" Version?
If you want to skip building the formulas, conditional formatting, and dashboard yourself, I packaged my exact Google Sheet system into a template.

It includes:

The automated Status & Days Overdue calculator

A dynamic currency switcher ($, €, £, ₹, ¥)

The clean UI dashboard

The complete PDF guide with the email templates

👉 You can grab the Universal Payment & Cash Flow Tracker here: https://nathanielade.gumroad.com/l/lymjlo

Stop tracking your money in your head. Build a system, send the emails, and get paid for the code you write.

Top comments (0)