← All Tips

How to Build a Google Sheets Freelance Income Tracker (Month-by-Month)

Track every invoice, client payment, and tax estimate in one Google Sheets freelance income tracker — built from scratch in under 30 minutes.

Published July 7, 2026

Here's the freelance tax problem most people don't realize they have until March: they made good money last year — $60k, $80k, more — but they can't tell you how much until they sit down with a spreadsheet, a folder of PayPal notifications, and three hours to spare. The income was real. The tracking wasn't.

Most freelancers solve this the wrong way: they download a budgeting app, link their accounts, and trust the auto-categorization. Two months in, the app calls a client payment "business income" and a Stripe transfer "transfer," the categories are wrong, and reconciling it requires more work than building a tracker from scratch would have taken.

A simple Google Sheets freelance income tracker fixes this permanently. You control every entry, every formula, every category. It takes under 30 minutes to build. Here's how.

The 4-Tab Structure

Before adding a single formula, set up four tabs. The structure is what makes the tracker work — each tab has one job and feeds the next one.

Tab 1: Income Log — every invoice you've sent, with status and amount. The raw data.

Tab 2: Client Summary — SUMIF-powered totals per client. Revenue, invoice count, and average invoice size.

Tab 3: Monthly Dashboard — SUMIFS breakdown by month, a bar chart of monthly income, and a YTD total. Your income at a glance.

Tab 4: Tax Estimate — self-employment tax calculation, income tax estimate, quarterly payment due, and next deadline alert.

Name the tabs exactly as listed above — formulas in later tabs will reference them by name.

Tab 1: The Income Log

This is the engine. Every other tab pulls from it. Set up these columns in row 1:

  • A: Date — the date you sent the invoice (not the date you got paid — that goes in a Notes column or you track it via Status)
  • B: Client — client name, spelled consistently. "Acme Corp" and "Acme" will break your SUMIF formulas later — pick one and use it every time.
  • C: Project — a short project description ("Website redesign," "Monthly retainer – May")
  • D: Invoice # — your invoice numbering scheme. Even "INV-001" is fine. Gaps are okay; what matters is uniqueness.
  • E: Amount — the invoice amount. Format this column as currency (Format → Number → Currency).
  • F: Status — a Data Validation dropdown with three options: Sent, Paid, Overdue. Don't use free text here — consistent values are essential for filtering.
  • G: Payment Method — ACH, PayPal, Stripe, Check, Wire. Useful at tax time for reconciling bank statements.
  • H: Notes — anything that doesn't fit elsewhere: partial payments, late fees, project context.

Conditional formatting for Status: Select the Status column (F:F). Add two rules: cells containing "Paid" → green background; cells containing "Overdue" → red background. At a glance, every overdue invoice is immediately visible without opening a filter.

Name this tab IncomeLog (no space — your SUMIF formulas will reference it by name).


Running your finances out of a tracker like this and want to see the bigger personal picture too? The Personal Finance Tracker for Google Sheets ($19) adds a full expense log, monthly budget tracker, and savings goal dashboard alongside your income data — all pre-built and ready to copy.


Tab 2: The Client Summary

Create a second tab named Client Summary. This tab answers one question per client: how much revenue have they generated?

Set up three columns: Client (A), Total Revenue (B), Invoice Count (C), Average Invoice (D).

In column A, list each client name — spelled exactly as they appear in the Income Log. In B2, enter:

=SUMIF(IncomeLog!B:B,A2,IncomeLog!E:E)

This sums every amount in column E of the Income Log where column B matches the client name in A2. Copy down for each client row.

For invoice count in C2:

=COUNTIF(IncomeLog!B:B,A2)

For average invoice size in D2:

=IFERROR(B2/C2,0)

The IFERROR wrapper handles the divide-by-zero case for clients with no invoices yet. Format column D as currency.

Add a total row at the bottom: SUM of Total Revenue across all clients. This is your all-time gross revenue number — useful when a potential client asks about your capacity or when you're applying for a business loan.

Tab 3: The Monthly Dashboard

Create a third tab named Monthly Dashboard. This is where you'll spend the most time during your monthly income audit.

Set up a 12-row table: one row per month (January through December), with columns for Month, Income, and Running YTD.

In the Income column for January, use SUMIFS to sum all amounts where the date falls within that month:

=SUMIFS(IncomeLog!E:E,IncomeLog!A:A,">="&DATE(2026,1,1),IncomeLog!A:A,"<="&EOMONTH(DATE(2026,1,1),0))

Change the month number (the second argument in DATE) for each row: 2 for February, 3 for March, and so on. The EOMONTH function finds the last day of each month automatically, so you don't need to hardcode dates.

For the Running YTD column, use a cumulative SUM: =SUM($B$2:B2) in the first row (January), and it expands as you copy down.

Below the table, add a YTD total cell: =SUM(B2:B13). This is your single-number answer to "how much have I made this year?"

Add a bar chart. Select the Month and Income columns, then Insert → Chart. Choose a bar chart. Label it "Monthly Income 2026." This chart updates automatically as you log new invoices — no manual refresh needed.

Tab 4: The Tax Estimate

Create a fourth tab named Tax Estimate. Taxes are the part of freelancing most people either ignore until April or wildly miscalculate. This tab makes quarterly estimates automatic.

Set up four labeled input cells:

  • YTD Income — pull from the Monthly Dashboard: ='Monthly Dashboard'!D13 (or whatever cell holds your YTD total)
  • Self-Employment Tax Rate — enter 15.3% (this is the combined employer + employee portion of Social Security and Medicare that self-employed people pay)
  • Income Tax Rate — enter 22% as a starting estimate (adjust based on your tax bracket — 12% for lower income, 24% or 32% for higher)
  • Quarterly Estimate — formula: =B1*(B2+B3)/4 — your YTD income times total tax rate divided by four quarters

Add a fifth cell: Next Quarterly Deadline. Enter the next deadline date manually (April 15, June 15, September 15, or January 15). Apply a conditional formatting rule: if this date is within 30 days of today, turn the cell background red. Formula for the rule: =AND(B5-TODAY()<=30, B5-TODAY()>=0).

Now every time you open the tracker near a quarterly deadline, the date turns red automatically. You have your estimated payment amount one cell above it. The transfer takes five minutes.

5 Practical Tips

1. Log every invoice the same day you send it. Not when you get paid — when you send it. This keeps your Sent vs. Paid vs. Overdue breakdown accurate and prevents the "wait, did I invoice them for that?" problem three months later. Make it a rule: invoice sent, Income Log updated, same session.

2. Use named ranges for your key totals. Select your YTD total cell in the Monthly Dashboard, go to Data → Named ranges, and name it ytd_income. Then in the Tax Estimate tab, reference =ytd_income instead of a cell address. If you ever restructure the Monthly Dashboard, the Tax Estimate tab won't break.

3. Color-code clients in the Income Log. Apply conditional formatting to the Client column: one background color per client name. You don't need to build a formula — just add rules manually for each client. With 3–6 regular clients, the color coding makes the Income Log scannable at a glance and makes it obvious when one client is generating a disproportionate share of your revenue.

4. Share view-only with your accountant. At tax time, go to Share → Copy link, and set access to "Anyone with the link can view." Send that link to your accountant. They get clean, organized data without you exporting anything or answering the same questions about every transaction. Set a calendar event in December to do this — proactive sharing saves two hours of email in February.

5. Set a monthly "income audit" calendar event. On the first Monday of every month, block 20 minutes: update any Sent invoices to Paid (or Overdue), open the Monthly Dashboard, note whether income is up or down from last month, and check the Tax Estimate for the current quarter. That's the whole audit. Twenty minutes, once a month, and you'll never be surprised by your own finances again.

Free Resource

Not ready to buy? Grab our free Notion Quick-Start Template

A no-fluff starter workspace to get organized in 30 minutes. Free, no credit card required.

Monthly Budget Planner (Google Sheets) — $19

Once your income is tracked, the next step is making sure expenses don't quietly eat it. The Monthly Budget Planner for Google Sheets has a transaction log, monthly budget vs. actual dashboard, and savings tracker — all pre-built and ready to use the moment you make a copy.