Cellwise Try it free

Free Excel template · Excel for freelancers

Free freelance invoice tracker template

For freelancers and consultants who need to know, at a glance, who owes what and for how long. Log each invoice with its date, amount and terms. The tracker works out the due date, marks it Paid, Open or Overdue, counts the days late, groups what is outstanding by age, and names the invoice to chase first.

cellwise-freelance-invoice-tracker.xlsxExcel workbook · 4.9 KB · works in Excel, Google Sheets, Numbers and LibreOffice · no signup
Download free template

Preview and try it

This is the template's sheet, calculated by the same engine as the Cellwise app. Change any number to see the formulas react before you download.

ABCDEFGHIJKL
1Invoice #ClientInvoice dateAmountTerms (days)Due datePaid dateStatusDays overdueAs of dateNov 1, 2026
2INV-2041Alder CoffeeAug 28, 20265853046292Overdue35
3INV-2042Fernway TrustSep 5, 202636003046300Overdue27Outstanding (not paid)9795
4INV-2043Alder CoffeeSep 12, 202632001446291Sep 30, 2026Paid0Not yet due5610
5INV-2044Brightline DentalSep 20, 20261572.53046315Oct 14, 2026Paid01-30 days overdue3600
6INV-2045Kestrel LabsOct 1, 20261800746303Oct 9, 2026Paid031-60 days overdue585
7INV-2046Northpine OutdoorOct 3, 202627903046328Open0Over 60 days overdue0
8INV-2047Tallow and CoOct 10, 202624001446319Oct 28, 2026Paid0
9INV-2048Brightline DentalOct 17, 202610203046342Open0Paid so far8972.5
10INV-2049Kestrel LabsNov 1, 20261800746334Open0Average days to get paid17
110Chase firstAlder Coffee (INV-2041)
120
130
140
150
160

How the formulas work

Due date from your terms

F2=IF(C2="","",C2+E2)

Invoice date plus the payment terms in days. Use different terms per client (7, 14, 30) and each due date follows. Empty rows stay blank so the sheet is ready for new invoices.

Paid, Open or Overdue

H2=IF(A2="","",IF(G2<>"","Paid",IF($L$1-F2>0,"Overdue","Open")))

A paid date always wins. Otherwise the invoice is Overdue once the as-of date in L1 is past the due date, and Open before that. Type the date you review into L1 (or replace it with =TODAY() in your own copy to keep it current).

Days overdue

I2=IF(H2="Overdue",$L$1-F2,0)

How many days past the due date an overdue invoice is. Everything else shows 0, so the aging buckets and the "chase first" lookup only see late invoices.

Aging buckets

L6=SUMIFS(D2:D16,I2:I16,">30",I2:I16,"<=60")

SUMIFS adds the amounts whose days overdue fall in a range, here 31 to 60. The rows above and below use the same idea for 1 to 30 and over 60. The older a debt gets, the harder it is to collect, so watch the bottom bucket.

Who to chase first

L11=IF(MAX(I2:I16)=0,"Nothing overdue",INDEX(B2:B16,MATCH(MAX(I2:I16),I2:I16,0))&" ("&INDEX(A2:A16,MATCH(MAX(I2:I16),I2:I16,0))&")")

MAX finds the most days overdue, MATCH finds its row, and INDEX returns the client and invoice number. The IF in front shows Nothing overdue when every invoice is on time, instead of naming a random row.

Make it yours

FAQ

How do I track unpaid invoices in Excel?

Give each invoice a row with its date, amount, terms and a Paid date column left empty until the money arrives. Then =SUMIF over the status, or SUMPRODUCT with (paid_date="") as a condition, totals what is still owed.

What is invoice aging?

Grouping unpaid invoices by how late they are, usually 1 to 30, 31 to 60, 61 to 90 and over 90 days. It shows how much of what you are owed is at risk and who needs a follow-up.

Can I make the as-of date update itself?

Yes. Type =TODAY() in L1 and the statuses and days overdue update each time the file recalculates. Keep a typed date if you want a fixed snapshot, such as month-end.

Functions used

Related guides

More free templates

Updated