← All Tips

How to Build a Google Sheets Invoice Template for Freelancers

Learn how to build a Google Sheets invoice template with auto-calculated totals, a Payments Log tab, and a Dashboard that shows outstanding balances at a glance.

Published July 1, 2026

If you’ve been freelancing for more than a year, you’ve probably built an invoice more than once by starting from scratch — opening a blank sheet, retyping your client’s name and address, eyeballing the math, and hoping the total is right. It works. But it costs time you don’t have, creates room for errors you can’t afford, and makes tracking overdue payments a manual headache.

A properly built Google Sheets invoice template fixes all of that. One file, three tabs, every calculation automated. Here’s how to build it.

The Invoice Tab

The core of the system is a single Invoice tab that handles everything from line items to totals to payment status.

Columns to include:

  • Invoice # — a unique identifier for each invoice (more on numbering in the tips section)
  • Client Name — free text or a dropdown if you have repeat clients
  • Issue Date — date the invoice was created
  • Due Date — calculated from Issue Date using a Net 15 or Net 30 formula
  • Line Item Description — what you did or delivered
  • Qty — number of units, hours, or deliverables
  • Rate — your price per unit
  • Line Total — automatically calculated
  • Subtotal — sum of all line totals
  • Tax % — your applicable tax rate
  • Tax Amount — calculated from subtotal
  • Total Due — final amount owed
  • Status — a dropdown: Unpaid, Paid, or Overdue
  • Payment Date — filled in when you receive payment

Key formulas:

Line item total (D3 = Qty, E3 = Rate, F3 = Line Total):

=D3*E3

Subtotal (sum of all line totals in rows 3–10):

=SUM(F3:F10)

Tax amount (F12 = subtotal, G2 = your tax rate percentage as a decimal):

=F12*G2

Total Due (subtotal plus tax):

=F12+F13

Due Date using Net 30 (C3 = Issue Date):

=C3+30

Swap 30 for 15 if you use Net 15 terms. The formula updates automatically whenever you change the issue date.

Conditional formatting: Select the entire data range and add a rule — when the Status column contains "Overdue," fill the row background red. This makes overdue invoices impossible to miss when you scroll through the sheet without having to read every status dropdown.

The Payments Log Tab

The second tab is your payment history. Every time a client pays, you log it here — separate from the Invoice tab, so your invoice records stay clean and uncluttered.

Columns for the Payments Log:

  • Date Received — when the payment cleared
  • Invoice # — the invoice number this payment covers
  • Client — pulled automatically with VLOOKUP
  • Amount — what was received
  • Payment Method — bank transfer, PayPal, check, Venmo, etc.

VLOOKUP to auto-fill Client: If your Invoice tab has invoice numbers in column A and client names in column B, and your Payments Log has the invoice number in column B starting at row 2:

=VLOOKUP(B2,Invoice!A:B,2,FALSE)

This pulls the client name from the Invoice tab every time you enter an invoice number — no retyping, no copy-paste errors. If the invoice number doesn’t exist yet, VLOOKUP returns an error you can wrap in IFERROR to leave the cell blank until you fill it in.


Mid-article CTA: Managing clients, invoices, and project deadlines across multiple spreadsheets creates friction that costs real time every week. The Freelancer Client Tracker ($22) is a Notion template that puts client records, project status, and invoice history in one linked system — so nothing lives in a separate file. It pairs well with this Google Sheets billing setup.


The Dashboard Tab

The third tab is where you see the full picture of your billing at a glance. Three numbers tell you everything you need to know before your first client email of the day.

Outstanding balance — total of all Unpaid invoices. Assumes Status is in column K and Total Due is in column J on your Invoice tab:

=SUMIF(K:K,"Unpaid",J:J)

Paid this month — use SUMIFS with a date range filter so you only see payments received in the current calendar month:

=SUMIFS(J:J,K:K,"Paid",C:C,">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1))

Overdue count — number of invoices with Status = Overdue:

=COUNTIF(K:K,"Overdue")

Check this Dashboard every Monday morning before you start work. Outstanding balance tells you what you’re waiting on. Paid this month gives you a running revenue total. Overdue count tells you exactly how many follow-up emails to send before 10am.

Tips for Using This System Well

Number invoices systematically. A format like INV-2026-001, INV-2026-002 makes sorting simple and VLOOKUP references reliable. Never use a client name or project name as an invoice number — it breaks alphabetical sorting and creates duplicate-lookup problems if you have two projects for the same client.

Use Net 15 or Net 30 consistently. Set your payment terms before your first invoice and stick to them. Net 30 is standard for agencies and larger clients; Net 15 works better for smaller freelance projects with quick turnaround. Always restate the due date in your invoice email — most late payments are genuinely forgotten, not intentional.

Send PDF exports, not shared links. When a client receives a Google Sheets link, they may accidentally edit formulas, see draft rows, or struggle to open it on mobile. Instead go to File → Download → PDF and email the exported file directly. You keep the working spreadsheet; your client gets a clean, professional document they can print, archive, or forward without issues.

Duplicate the invoice tab for each new invoice. Don’t overwrite old ones. Right-click the tab → Duplicate, rename it (INV-2026-005), fill it in. This keeps a permanent record of every invoice you’ve ever sent without any separate filing system — the whole archive lives inside one Google Sheets file, one tab per invoice.


Frequently Asked Questions

Can I make an invoice in Google Sheets? Yes — Google Sheets is one of the best free tools for building invoices because formulas handle all the math automatically. Set up line item totals, subtotals, tax calculations, and running totals with a handful of simple formulas. The result is an invoice that fills itself in as you type, without any manual arithmetic or risk of adding errors.

Is there a free invoice template in Google Sheets? Google’s template gallery includes a basic invoice template, but it’s a single-sheet design with no payment tracking or dashboard. You can build a more complete system from scratch using this guide, or use a paid template that includes the full three-tab setup — Invoice, Payments Log, and Dashboard — already wired together and ready to use from day one.

How do I track unpaid invoices in Google Sheets? Add a Status column to your Invoice tab with a dropdown containing Unpaid, Paid, and Overdue. Then on a Dashboard tab, use a SUMIF formula pointing to that Status column to pull the total outstanding balance from all Unpaid rows automatically. Every time you mark an invoice Paid, the outstanding balance drops in real time — no manual updating needed.


A three-tab Google Sheets billing system won’t replace dedicated invoicing software for large agencies — but for most freelancers billing under 20 clients a month, it handles everything that matters. The formulas do the math. The Payments Log keeps your records clean. The Dashboard tells you what you’re owed before you’ve had your first cup of coffee.

Get the Ultimate Notion Productivity System ($27) → — the full workspace for freelancers and solopreneurs, including goal planning, project tracking, and client management in one Notion template.

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.

Ready to get organized?

Browse our Notion templates and find your perfect setup.