DEV Community

max
max

Posted on • Edited on

How I Track Finances as a Freelance Developer (No Accounting Degree Required)

My first year freelancing, I didn't set aside a dollar for taxes. Not one. I'd come from a salaried job where all that stuff just happened automatically, and some part of my brain figured it would keep happening. It did not keep happening.

April rolled around and I owed the IRS $14,000 I didn't have. I ended up on a payment plan, which if you've never done that, is a special kind of humbling. You get letters. They're not friendly letters.

That tax bill is the reason this spreadsheet system exists. Not because I'm organized. Because I got my ass kicked and needed to make sure it didn't happen again.

QuickBooks is Probably Overkill for You

Every freelance finance article says the same thing: get QuickBooks, get FreshBooks, get Wave. And look, those are fine tools if you're running a landscaping company with employees and inventory and purchase orders.

You're a developer. You don't have inventory. You probably don't have employees. You have a laptop, some subscriptions, and clients who may or may not pay you on time.

QuickBooks is overkill for most solo devs and you'll spend more time setting it up than it saves you. I know because I tried. Spent an entire Saturday configuring categories and chart of accounts, then never opened it again.

What I actually needed was dead simple: am I making money, who owes me, and how much do I owe the IRS this quarter?

So I built it in Google Sheets.

The 4-Sheet System

Four sheets. They talk to each other with formulas. The whole thing takes about two minutes a day to maintain.

Sheet 1: Client and Project Tracker

Every project gets a row.

Field Why It Matters
Client + Contact So I know who to chase about late payments
Rate (hourly or fixed) Compares against actual time spent
Estimated vs Actual Hours Reveals if I'm undercharging
Total Invoiced vs Paid Shows outstanding balance instantly
Status Active / Completed / On Hold

The number that changed how I price projects: effective hourly rate. For fixed-price work, it's just total paid / actual hours. I quoted $5,000 for a project once, thought it'd take 40 hours. It took 100. My effective rate was $50/hr. That's a hell of a wake-up call when you think you're charging $150.

Conditional formatting does the rest. Red means someone owes me money for 30+ days. Green means done and paid. You'd be surprised how motivating it is to turn rows green.

Sheet 2: Invoice Tracker

Field Notes
Invoice number Sequential: INV-2026-001, 002, etc.
Amount + Tax Auto-calculated
Date Sent When I emailed it
Due Date Net 30 from send date
Status Sent / Paid / Overdue
Days to Pay Auto-calculated

That "Days to Pay" column is the most important column in the whole system.

I had a client "forget" to pay a $6,800 invoice for four months. Four months. I didn't have a contract with late fees, didn't have a system that flagged it, and honestly didn't even notice for the first six weeks because I was buried in other work. I got the money eventually, but that experience was the reason I started tracking payment speed religiously. Now I know which clients pay in a week and which ones drag it past 45 days, and that data factors into whether I take them on again.

Sheet 3: Income and Expense Dashboard

Two sections, nothing fancy.

Income log: Every payment, tagged by client and category (client work, product sales, consulting).

Expense log: Every business expense, tagged by categories that actually map to IRS Schedule C lines:

  • Software and Tools (GitHub, AWS, Figma, etc.)
  • Hardware and Equipment
  • Home Office
  • Professional Development
  • Marketing
  • Subcontractors

The dashboard auto-generates charts and one number I care about more than any other: effective hourly rate including non-billable time.

If I billed 120 hours at $150/hr but worked 160 hours total counting admin, marketing, and learning, my real rate is $112.50. That's the actual number. The other one is a fantasy.

Sheet 4: Tax Prep Summary

This is the sheet that exists because of the $14k mistake.

It auto-populates from the other three sheets. Quarterly income, deductible expenses, estimated self-employment tax at 15.3%, estimated federal and state. And the one number I actually need: what to send the IRS this quarter.

Before this system, I'd either overpay estimates and tie up cash I needed, or underpay and get hit with penalties. Now I'm within 5% every quarter. My accountant actually complimented the organization, which is probably the only compliment I've ever gotten from an accountant.

Two Minutes a Day

Log hours. Log expenses. Mark payments received.

That's it. The dashboard handles everything else. I do it at the end of the day before I close my laptop. If I skip a day, I do two days the next morning. The key is not letting it pile up, because once you're behind a month on this stuff, you're right back to the weekend-before-taxes scramble.

What a Year of Data Taught Me

I was undercharging for fixed-price work. My effective rate on fixed projects was 40% below my hourly rate. Forty percent. I was underestimating scope every single time. Raised my fixed quotes by 30% and started padding estimates by 20%. Still occasionally get burned but it's way better.

Software expenses are a slow bleed. I was spending $340/month on subscriptions. Cancelled the ones I barely touched and saved $120/month. That's $1,440 a year on tools I wasn't using.

Some clients cost you money. One client paid 45+ days late every time, wanted endless revisions, and my effective rate with them was literally half my normal rate. I didn't renew. Best decision I made all year.

Tax prep went from a full weekend to five minutes. When everything is categorized throughout the year, quarterly prep is just reading the summary and writing a check. That alone is worth maintaining the system.

Why Sheets and Not Some App

Free. Customizable. Works on my phone. My accountant can view it. No vendor lock-in. No loading screens.

Yeah, the initial setup takes a few hours. Building the formulas and conditional formatting isn't trivial. That's the one real downside.

The Formulas

If you want to build your own, these are the ones that matter:

Effective Hourly Rate:
= Total Paid / Actual Hours

Monthly Profit:
= SUMIFS(income, month, currentMonth) - SUMIFS(expenses, month, currentMonth)

Outstanding Balance:
= Total Invoiced - Total Paid

Quarterly Tax Estimate:
= (Quarterly Net Income * 0.153) + (Quarterly Net Income * Federal Rate)

Days to Pay:
= Date Paid - Date Sent

Average Client Lifetime Value:
= AVERAGEIFS(Total Paid, Status, "Completed")
Enter fullscreen mode Exit fullscreen mode

I built this system for myself after the IRS payment plan situation. Used it for a couple years, kept refining it. Other dev friends kept asking for a copy, so I eventually cleaned it up with a setup guide and put it on Gumroad. It's the Freelance Developer Business Kit if you want to skip the setup hours. Or build your own. I genuinely don't care either way, just track your damn finances.

Top comments (0)