Notion Freelance Invoice Template: Build a Client Billing System That Tracks Itself
Learn how to build a Notion invoice tracker with a Board view, overdue formula, Clients relation, and rollup revenue totals — all in one billing system.
Published June 24, 2026
Notion Freelance Invoice Template: Build a Client Billing System That Tracks Itself
Most freelancers start with a spreadsheet for invoices. Then the spreadsheet becomes a mess of tabs — one per client, one per year, one "NEW_FINAL_v3" that nobody can find. The invoices get sent, sometimes on time, and then the tracking falls apart. Who owes you money right now? How much did you earn from your top client last quarter? Most freelancers genuinely don't know without digging.
A Notion invoice tracker solves this — not by replacing your invoicing software, but by giving your billing data a home. Here's how to build one from scratch, including the Board view, overdue formula, client linking, and revenue rollup that make it actually useful.
Step 1: Create the Invoices Database
Start a new full-page database and name it Invoices. Add these five core properties:
| Property | Type | Notes | |----------|------|-------| | Client | Relation | Links to your Clients database (set up later) | | Amount | Number | Format as Currency | | Status | Select | Draft / Sent / Paid / Overdue | | Due Date | Date | When payment is due | | Sent Date | Date | When you sent the invoice |
A few notes on setup choices:
Status as Select (not the built-in Status type) — Notion's newer Status property is cleaner for task management, but for invoices you want custom stages. The four stages above — Draft, Sent, Paid, Overdue — match the real lifecycle of a freelance invoice. Add colors: Draft = grey, Sent = yellow, Paid = green, Overdue = red.
Amount as Currency — When you create a Number property, click the format option and select the currency symbol you use. This applies to every record and makes the rollup calculations readable later.
Two date fields — Sent Date and Due Date serve different purposes. Sent Date helps you track how long payment is taking. Due Date is what drives your overdue formula.
Step 2: Build the Board View (Draft → Sent → Paid → Overdue)
Switch from Table to Board view and group by Status. Your four columns — Draft, Sent, Paid, Overdue — now match the stages of an invoice's life.
A few tweaks to make this view actually useful:
- Show Amount on cards — Go to Board settings → Properties → toggle Amount to visible. Now you can see the dollar amount directly on each card without opening the record.
- Sort within columns — Sort each column by Due Date ascending so the oldest due dates surface at the top of Sent.
- Hide Done — Create a second Board view called "Active" and filter out Paid invoices (
Status ≠ Paid). This is your working view; the default view becomes your full history.
The Board view earns its place at a glance: you can see exactly how many invoices are in each stage and what they're worth, without opening a single record.
Step 3: Add the Overdue Detection Formula
The Status field is manual — you move cards between columns yourself. But an automatic overdue flag adds a safety net for invoices you might have forgotten to update.
Add a Formula property called Overdue Flag:
if(
and(
prop("Due Date") < now(),
prop("Status") != "Paid"
),
"⚠️ Overdue",
""
)
This formula returns "⚠️ Overdue" on any invoice where the due date has passed and the status isn't Paid. Add this property to your card display and you'll see the flag on the board without having to open anything.
You can also use it in a saved filter view called Needs Attention: Filter by Overdue Flag → is not empty. That view shows every invoice that's past due and unpaid — your collection priority list.
Free Resource: Not ready to build from scratch? Grab our free Notion starter template — includes a basic invoice log you can duplicate and customize in under 5 minutes.
Step 4: Link to a Clients Database
The Invoices database becomes significantly more powerful once it's linked to a Clients database. Here's how to wire that up:
- Create a new database called Clients with properties: Client Name (Title), Status (Select: Lead / Active / Archived), Email (Email), Rate (Number), and Start Date (Date).
- Go back to your Invoices database — the Client property you added in Step 1 should already be a Relation type. Point it to the Clients database.
- Notion creates a two-way link automatically. Open any client record and you'll see a tab showing all their invoices.
This linking is what transforms two separate databases into a billing system. Your client record now shows every invoice you've ever sent that client — amounts, dates, and statuses — without any extra work.
For a deeper look at structuring the Clients database, see the guide on building a Notion CRM for freelancers — the same relation pattern applies.
Step 5: Add a Revenue Rollup Per Client
Once the Invoices relation is set, add two Rollup properties to the Clients database:
Total Billed:
- Rollup over: Invoices (your relation property)
- Property: Amount
- Calculation: Sum
- Shows every dollar you've invoiced this client, regardless of payment status
Total Earned (Paid Only):
- Rollup over: Invoices
- Property: Amount
- Calculation: Sum
- Filter: Status = Paid
For the second rollup, click the filter icon inside the Rollup configuration and add Status → is → Paid. Now you have two distinct numbers: what you billed versus what you actually collected. The gap between them is your accounts receivable.
Sort your Clients database by Total Earned descending. The result is a ranked view of your clients by revenue — useful when deciding where to invest relationship time.
Step 6: Formula for 30-Day Revenue Totals
To track monthly revenue without a separate sheet, add a Formula property to your Invoices database called This Month:
if(
and(
prop("Sent Date") >= dateSubtract(now(), 30, "days"),
prop("Status") == "Paid"
),
prop("Amount"),
0
)
This formula returns the invoice amount for any paid invoice sent in the last 30 days, and 0 for everything else. To get your 30-day total, add a filtered view showing only paid invoices from the last month and use the Sum calculation on Amount in the table footer.
Alternatively, use a Gallery or Table view with a footer calculation: click Calculate at the bottom of the Amount column → Sum. Apply a filter for Sent Date → is within → the past month and Status → is → Paid. The footer total updates automatically as you mark invoices paid.
For a broader look at financial tracking in Notion, the personal finance tracker guide covers income and expense dashboards that pair well with this invoice setup.
Why Building This Yourself Takes Longer Than You Think
Everything in this guide works. The issue is that building it correctly — the relation linking, the rollup configurations, the filter views, the formula syntax — takes time even if you've done it before. There are also a dozen small decisions (Do I use Select or Status type? Two date fields or one? How do I show the rollup only for paid invoices?) that each require testing to get right.
Most freelancers spend 3–5 hours on a first attempt and end up with something that half-works. The Board view is there but the rollups aren't configured. The relation exists but the client records are empty. The formula runs but throws errors on blank cells.
A dedicated template sidesteps all of that. Everything is pre-wired, the formulas are tested, and the views are configured. You duplicate it, fill in your clients and invoices, and you're done.
Skip the Setup: Freelancer Client Tracker
The Freelancer Client Tracker for Notion has everything covered in this guide, built and ready to duplicate:
- Invoices database with Client, Amount, Status, Due Date, Sent Date — exactly as described above
- Board view with Draft → Sent → Paid → Overdue columns
- Clients database linked via Relation, with Total Billed and Total Earned rollups
- Overdue formula pre-built and showing on cards
- Active invoices view filtered to hide paid invoices
- Revenue summary view sorted by top clients
$22 — Get the Freelancer Client Tracker →
If you're already using Notion for client work, see the full Notion setup for freelancers guide for the complete workspace structure this invoice tracker fits into.
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.
Skip the Setup: Freelancer Client Tracker
A pre-built Notion workspace for freelancers — includes the Invoices database, Clients relation, revenue rollups, and Board view described in this article. Duplicate and start billing in minutes.
Related Articles
How to Build a Freelancer Notion Setup That Actually Sticks
If you've been freelancing for more than a few months, you've probably experienced the "oh no" moment: a client you forg…
Read more →The Simple Notion Goal Tracker System That Actually Gets Things Done
I've set January goals in Notion at least four times. I've had color-coded vision boards, elaborate habit trackers, and …
Read more →How to Build a Notion Personal Finance Tracker (That You'll Actually Use)
Most budgets fail in the first month. Not because the person is bad with money — but because the system punishes them fo…
Read more →