You don't have a spreadsheet problem yet.
Start without one.

In plain English

What it does
Builds you a working Excel spreadsheet from scratch — a job log, an invoice list and a summary page — without asking you for anything.
Why it helps
It arrives already set up so the two most expensive mistakes flag themselves: work you finished but never invoiced, and invoices sitting unpaid past 60 days. Nobody has to remember to check.
What you need
Nothing at all. Press one button.
How long
About five seconds, and you get a real .xlsx file that opens in Excel or Google Sheets.

Our other tools ask you to upload a file so they can tell you what is wrong with it. This one asks for nothing. Press the button and you get a working Excel tracker where the two mistakes that actually cost money — finishing work you never invoice, and invoices quietly ageing past 60 days — flag themselves. Nobody has to remember to check.

No upload, no signup, no email. The file is assembled in your browser and saved straight to your downloads.

What you get

Jobs

Every job you complete. The Invoiced? column watches the invoice register and turns itself into NOT INVOICED the moment a finished job has no matching invoice number.

Invoices

What you billed, and whether it landed. Days Outstanding and Status update themselves every time the file opens — OVER 60 DAYS is not a note someone forgot to write.

Dashboard

Five live totals: money finished but never invoiced, money outstanding, money past 60 days, and a duplicate-job-number count that catches double entry before it reaches a customer.

The formulas, in the open

These are the whole trick. There is nothing else in the file — no macros, no add-in, no link back to us.

Did we ever invoice this job?

=IF($A2="","",IF(COUNTIF(Invoices!$B:$B,$A2)>0,"Yes","NOT INVOICED"))

Looks for this job's number in the invoice register. Absent means finished work nobody billed — the single most common leak we find in real books.

How old is this invoice, really?

=IF(OR($C2="",$E2="Yes"),"",TODAY()-DATEVALUE($C2))

Recalculates on open, so the number is never stale. Paid invoices go blank rather than showing a misleading age.

Money finished but never invoiced

=SUMIF(Jobs!$F:$F,"NOT INVOICED",Jobs!$E:$E)

The number worth putting on a wall. In the sample rows it is not zero, which is the point.

Already have a spreadsheet full of history?

Then the tracker is the wrong end. Run your existing export through the free file check — it will tell you what is already stranded in there. Or see a real report first without uploading a thing.

Have us set it up for you, free