How I Created a Budget Tracker in Notion

Benjamin Gowers
8 min readJul 16, 2020

Table of Contents

  1. Intro
  2. Wanna Use It?
  3. How I did it!
    1. 📉 Expenses
    2. 📥 Income
    3. 🍌 Budget Split
    4. 📤 Total Outgoing

I’m a recent Computer Science and AI graduate that has just secured a job in a totally new city. Because of this, I started to realise that there’s a whole lot of admin in life, mainly consisting of how much you can spend versus how much you earn.

I’m also an avid Notion user. Notion is a note-taking app on steroids which provides many, MANY features — from simply writing a bulleted list of notes, to creating linked databases (tables) with conditional formulae. If you haven’t used it before, take a look. Seriously. You won’t look back. (Also some of this post might be confusing if you’ve never used it before!)

Given the above two points, I wanted to create a space in Notion where I could outline a rough model of all my expenses against my income. I wanted to be able to see relevant information, straight away, while still being able to update existing (and add new) expenses, where everything would dynamically update.

So you might ask, ‘why the f!@k don’t you do it in excel?’. That’s a good question to which the answer is, I did. I created a budget tracker in excel, listing out and categorising all my expenses, then showing how much I had left each month, etc. I have 2 reasons that I then moved to Notion and did it again.

  1. I wasn’t satisfied. I had a budget tracker, but opening up an ugly looking excel spreadsheet every time I wanted to tweak my budget, put me off wanting to do it at all.
  2. I keep everything on Notion. My goals, my projects, my to-do list… the list goes on. So why the hell wouldn’t I keep my finances there too?!

So before I dive into how I did it, I’ll quickly mention how I split up (categorise) my spending. A friend of mine mentioned a useful budget split to me a while back — Needs (50%), Wants (30%) and Savings (20%). This 50/30/20 split is a good model to follow.

  • Needs should equate to 50% of your net income. These are things that you can’t get by without (rent, food, wifi).
  • Wants should equate to 30% of your net income. These are things that keep you happy (Netflix, holidays, hobby bits).
  • Savings should equate to 20% of your net income. Savings are… savings. You put money away for a rainy day or long term.

Wanna use it?

Make sure you have a notion account, go here and duplicate the page. There are instructions on how to use it there too!

How I did it!

Stop reading if you aren’t interested in the Notion technicalities!

The cover of this post shows what the budget tracker looks like, but here it is again!

This looks nice and simple:

  • Net income entries are on the top right. These are manually entered.
  • Total outgoing cash is on the top left (along with a proportion of total income and a message). This is dynamically calculated.
  • Budget Split, in the middle, shows total outgoings for a certain category. Each category is a page that, holds a table showing all expenses for that category. These are also dynamically calculated.
  • All Expenses is an unfiltered table showing each expense along with its price per month, tag (if any) and category (displayed below).

📉 Expenses

This is the table that I started with. I brainstormed all of my expenses and noted each one down into a table. I then added the £ / month column and entered each entry’s details (dividing yearly/other costs appropriately). Then I decided to tag each entry, to give it a more personal flare. Finally, the category column is actually a relation to the Budget Split table, enabling me to categorise any expense that I add, into needs, wants or savings!

Before taking a look at the Budget Split table, let’s take a quick look at Net Income in a slightly different view.

📥 Income

Each entry is given a name and (again) an amount per month (preferably net since that is what you actually take home!). On top of this, each entry links to every category in the budget split. This is because we use a rollup column in the Budget Split table to total up all income entries. So each new income entry must be assigned all 3 relations for the budget tracker to work properly.

🍌 Budget Split

This table is the most complicated of all 4… but don’t be put off, I’ll explain!

I’m going to work backwards here and you’ll see why. So look at the last two columns, Expenses and Income(s). These two columns are relations. As the names describe, the Expenses column is a relation to the All Expenses table and the Income column is a relation to the Net Income table. Remember when looking at the expenses table, each expense is categorised into one of these splits… now we can see the relation the other end! Same with the Net Income table.

So going back to the first column Total / month, this value shows the total expenditure within that category for a month. It is effectively the sum of all expenses with the category ‘name’ (Savings for example). This is done with a rollup column which uses the Expenses relation column and selects the sum of the £ / month.

The Total / month (number) column, is exactly the same as the Total / month column, except that it exposes the value as a number by using a formula. This is needed for the Total Outgoing table (as rollup columns cant be used in relations or rollups in other tables).

The % of Net Income / month column shows the proportion of income that this category uses. So the formula reflects this (100 * total expense / total income). It is rounded to 2 d.p. and formatted with a % sign.

The % (number) column is again exactly the value of the % of Net Income / month column, just as a number (in the same way as Total / month (number)).

The Total Income column is a rollup of the Income(s) relation, summing all the £ / month values. As you can guess, the Total Income (number) is exactly the value of Total Income, only formatted as a number (using a formula column type).

The Total Outgoing column is simply a relation to the Total Outgoing table. This will become clear below.

So you’re probably wondering why the hell I have all these (number) columns. I briefly mentioned that other tables cannot rollup relations using one of their rollup properties. So, see property in the image above? Well, properties of the Income(s) relation of type rollup (if any) wouldn’t show up there. Therefore, any values that I need to use in other tables (namely Total Outgoing) are exposed as numbers using formula column types.

📤 Total Outgoing

The Total Outgoing table only contains one entry since it only needs to display the total of all your expenses versus your income.

The £ / month (u) is a rollup column on the Categories relation, summing the total expenditure per month for each category.

The £ / month column is the same value as the £ / month (u) column, is just has a crazy formula that formats the number to look like a currency (specifically sterling).

This formula is used in other columns too so I’ll call it the formatting formula and explain it quickly here. It works as follows:

  1. Round the number to 2 d.p.
  2. Concatenate “£” onto the front of the number.
  3. If the number has no decimal point, convert it to a string and add “.00” onto the end of it.
  4. If the number has one number after the decimal point (divisible by 1/10), convert it to a string and add “0” onto the end of it.
  5. Otherwise, do nothing else.

I won’t go into any more detail about specifically how this is done using notion, but feel free to look at the formula and work it out!

The % of Net Income / month (u) column is again a rollup on the Categories relation, this time summing the proportions of each category.

% of Net Income / month uses a formula to round and format the % of Net Income / month (u) column value.

All Good? is a formula that checks whether the proportion of income being spent is over 100%. If it is, it will display how much you are overspending, if it is not, it will display how much you have left.

Categories is a relation to Budget Split so that we can access all of these values to rollup.

Income is a rollup on the Categories relation, this time using the Total Income (number) property. This value is used to work out how much money is left. Since each category in the Budget Split table holds the total income value, we can just take the max since all of them are the same.

Over By (u) calculates how much money is left (or overspent). It always formats the number to be positive since it is used in a message.

Over By uses the formatting formula so format Over By (u) into a currency.

That’s it! Thanks for getting all the way to the end. I hope you end up using it or learnt something useful!

🔝 Back To Top 🔝

--

--

Benjamin Gowers

Software Developer @ Kooth, Former Organiser @ React Native London. I love learning and letting other people know what I’ve learnt!