For two years, my entire payment tracking system was a Google Sheet with four columns: client, amount, sent, paid. When money came in, I turned the "paid" cell green. It felt organised. It was not.
The sheet worked perfectly, as long as I updated it. That was the whole problem.
The short version, if you are here to decide: a spreadsheet is a workable freelance payment tracker only while you update it after every send and every payment. Because logging is a second step that lands right when you are switching to the next piece of client work, it gets skipped, and the sheet is out of date within a week. The only version that holds is one where the payment status lives on the invoice itself.
The gap between the invoice and the sheet
The trouble with a separate tracker is that it needs a separate action. I would send an invoice from one place, then, in theory, open the sheet and log it. In practice, I sent the invoice and moved on to the next thing, because the next thing was actual paid work and the sheet was admin.
So the sheet drifted out of sync with reality within about a week, every week. And an out-of-sync tracker is worse than no tracker, because you trust it.
One afternoon I sent a client a polite "just following up on the invoice from last month" message. He replied, a little confused, that he had paid it three weeks ago. He had. The money was in my account. I just never turned the cell green. I had chased a client for money he had already sent me, which is about the most unprofessional thing a freelancer can do while feeling organised.
The reverse happened too, and it was more expensive. A ₹15,000 invoice for a small brand project never made it into the sheet at all. I did not log it, so I never chased it, so I forgot it existed. I found it months later while doing my taxes, long past the point where following up felt reasonable. That was real money, earned and delivered, that I lost to a data-entry step I skipped.
What the spreadsheet was actually tracking
The sheet only ever knew what I remembered to tell it. On a good week that was everything. On a normal week it was whatever I logged before the next brief landed, which is a different thing entirely, and I am a freelancer with client work, so the one thing I do not have spare is the discipline to maintain a second document about my first documents.
Almost every freelancer I know has a version of this. One writer I know tracks payments by searching her own WhatsApp chats for the word "paid." Someone else used their bank statement as a to-do list. The tool asks for attention at the worst possible moment: right after you finish a piece of work, when the last thing you want to open is a spreadsheet.
Why a better payment tracking spreadsheet does not fix it
For a while I assumed the answer was a smarter sheet. More columns. Conditional formatting. A formula that turned a row red after 15 days. I built that. I still did not update it. Conditional formatting cannot make you open a file. Logging was a second step, and second steps are the first thing a busy week eats.
The only fix that holds is when the tracker is the same place you create the invoice. If the status updates as a byproduct of the work you were already doing, there is no second document to forget. You do not "log" a payment. You mark the invoice paid in the place the invoice already lives, and everything else, sent, viewed, overdue, updates itself.
Any system you have to feed will come asking on your busiest day. That is exactly the day it goes hungry. If you want the wider list of things that quietly cost freelancers money, the invoicing mistakes post covers the rest, and the story of almost forgetting a ₹35,000 invoice is the same lesson learned the hard way.
How I track freelance payments now
I stopped keeping a separate tracker entirely. Now the invoice and its status live in one place: pending, paid, or overdue. Sent, viewed and overdue update themselves, and marking one paid is one tap on the invoice, not a row in a second document. When I want to know who still owes me, I look once, and it is current, because I never had to remember to make it current.
The spreadsheet was not the enemy. Depending on my memory was. If your tracker only works when you remember to feed it, it will fail you on the exact day you are too busy to notice, and that is usually the day it matters. I kept that sheet for two years and it never once told me what it was missing. That is the part I would want back. With Riffit, the invoice you send from WhatsApp or the dashboard is the same invoice you track, so the status lives on the invoice itself and one look tells you where things stand, and the follow-up, when you need one, is the reminder you actually meant to send, not the one you sent a client who already paid.
FAQ
Track payments in the same place you create the invoices, so the status updates as a byproduct of the work rather than as a separate task. Any system that needs a second manual step, like updating a spreadsheet after sending each invoice, drifts out of sync because the logging gets skipped on busy days.