Motivation
I’ve been tracking my expenses for more than a decade now, ever since I got my first job. It started out simple, by just having a single ledger to track my expenses, letting me know my spending. However, over time it has evolved into an effective mechanism to making me understand the different places where I’m spending my money.
In this blog post I will go over my method of expense tracking. I use the pro version of this app for tracking, but the techniques here should lend itself to using in any app with a few basic features. Even a spreadsheet should suffice if you’re up to it.
The first few sections explain the concepts behind the expense tracking. If you want to go straight to understanding the practical aspects of how to do the tracking, go to the walkthrough.
Concepts
The building blocks for tracking the expenses are transactions and accounts.
Transactions
Each entry in the ledger is a transaction. A transaction can be an expense or an income (alternatively a positive or negative transaction). The basic fields are:
amount
: How much was the transaction fortimestamp
: To identify when a transaction took placeDescription
: To identify what the transaction was fortype
: To track Expense/Income. Alternately, this can be made as positive/negative number in the amount field, but I’ve realized that this is a fundamental separation which makes it easier to track it as a first class field.
In addition, I’ve found it helpful for a transaction to have few other properties as well to aid further analysis/breakdown:
payer/payee
: To track who did the paymentcategory/subcategory
: Necessary to group transactions into buckets. Each transaction belongs to a single category -> subcategory tuple.mode (payment method)
: If you care to track the medium of transaction (card/cheque/UPI etc)tags
: To give arbitrary labels to aid further analysis.
Since this is the main interaction of bookkeeping, adding a new transaction should be made as easy as possible. Good client applications have ways to make this process friction-free.
An example transaction from my ledger is shown below:
Accounts
Each transaction needs to be associated with a single account. An account can be thought of as an entity to hold the money. Each transaction either increases or decreases the amount of money associated with a single account. There needs to be only one mandatory field for the Account:
Balance
: This is a derived field, that can be thought of us the sum of all transactions in an account. However, it might make sense to preserve this as a first class field rather than always calculating this on the fly.
Additional fields to tag accounts by types, currency etc, can be helpful (even necessary), but I’ve not found it needed for my use cases.
A snippet of my accounts are shown below:
Additional Concepts
In addition to the fundamentals, it makes sense to have some additional scaffolding built in, to make the process seamless.
Account transfers
In addition to regular transactions which increase or decrease the total balance in an account, you also do transactions from one account to the other which doesn’t affect your baseline. Some examples of these are:
- Credit card payments
- Taking of giving Loans
- Making an Investment
These come as pairs of transactions instead, one positive and one negative such that the net total remains zero. However, the balances in the individual accounts are changed. Although this is not absolutely required to have this (you can add two transactions independently) I find it necessary to have this as a first class feature in the application to prevent headaches of tracking which two transactions are tied to each other.
Account Types
Named Accounts
Named accounts which hold information about a single financial institution that you interact regularly with, like a bank or a credit card.
-
Deposit Accounts: These are accounts like wherein you put in the money. Primarily consists of Bank accounts, or any other first class investment schemes. If a financial institution has a dashboard/view where you can see the current balance at each time, it makes sense to keep them as individual named accounts. Each bank account should have a separate named account (unless you rarely touch them, in which case, it can be folded into an omnibus account). Even Investment portals like
Zerodha/Upstox/Groww
etc can be added as named accounts. -
Credit Accounts: There are the accounts from which you withdraw credit. Primarily consists of Credit cards, but can be also BNPL schemes, or even a single person/entity from which you withdraw money.
-
Joint Accounts: These are accounts that you share with someone else, like your spouse, business partner etc.
Omnibus Accounts
These are accounts for which individual transactions are rare, so it makes it cumbersome to track each one independently. These are primarily split into three types:
-
Wallet/Cash in Hand: This consists of the currency that you hold in your hand.
-
Investment Account: These consists of investments that you have made across various instruments. Generally, since you make many small investments in different places, it makes sense to have a single account to track it. If you see yourself making investments of a single type very commonly (say you stock market), it might make sense to have a separate named account for the same.
-
Loans Account: This account consists of the formal/informal loans that you have made/taken. Each loan given is reflected as an income (and a corresponding expense in another account) and each loan taken is an expense (and a corresponding come in another account).
The ALL Account
This is a derived account which is a view which shows the sum of transactions across all accounts. This shows you your total income/expenses/balance etc.
Walkthrough
Now let’s get into the meat of the discussion and understand the common scenarios of adding expenses.
Income/Expense Transactions
This is the simplest one. You just input the Income/Expense to the corresponding account, add the required description, categories and tags, and you’re done. This process remains the same whether you’re making a transaction with cash in hand or using a credit card.
Credit Card Payments
A credit card payment is not an expense, but a rearrangement of funds from your bank account to the credit card. In this case, you add an account transfer transaction from your bank account into the credit card account. This doesn’t change your net balance, but reduces the balance in your bank account, while reducing the credit due in the credit card account.
I generally don’t add additional description or tags to this transaction because bank -> credit card transactions are invariably credit card payments.
Loans
Loans are recorded as an account transfer to/from a regular account to a loans account. Of course, you’re assuming that the loan you’re giving or taken is creditworthy and hence it is just a matter of time before it comes back. However, in case someone defaults on the principal due to any reason/you’re paying interest on the loan, that becomes an expense transaction (In case your friend is paying interest to you on your loan, that is an income, but hey!)
Let me extrapolate with some real examples.
Suppose you are helping your friend by paying for a flight ticket worth 10,000 from your credit card (say, there is a 1000 Rs off on flight booking your card). Correspondingly, you record a transaction from your credit card account to the loans account for 10K on Day 0. On the whole your account balance hasn’t changed. A week later he returns the 10,000 to your account. In that case there is another transaction to from the loans account to your bank account. There is zero net expense although money has gone from your account.
Suppose a week later, you realize that he’s going through a hard time and won’t be able to pay back and are able to convince him that this is a gift? In that case you record an expense for Day 7 because that’s the moment when the money has gone from your account!
Instead of that, suppose he’s paying your back 10,500 for your timely help on booking the tickets (or alternatively, he’s sharing 50% of the net gain that he received). In that case, 10,000 rs is reflected back as a transaction using account transfer and 500 is added as an income when the money is received. Your net gain in this case is 500 Rs.
Tip: Since this technique doesn’t allow you to track the loans (especially the smaller ones) independently, you should use an app like Splitwise
which is tailor made for tracking such transactions between people
Investments
Investments are similar to loans except the fact that you’re (hopefully) also making a profit when you take back the money. The process is quite similar.
Suppose you’re investing in a Mutual fund for 100K. This is recorded as a transaction from the bank
account (say HDFC) to the Investment
account. After a year, the fund grows to 110K (from the AMC dashboard), but that’s not recorded as an income yet, because it hasn’t been reflected in our records. After two years, the fund has grown to 120K, and we decide to withdraw the transaction. At this point, we do a transaction from the Investment
account to the HDFC
account. In addition, we also add a transaction for an income of 20K which is now “realized” concretely.
Taxes
There are two ways to deal with Taxes. The simplest one is to record the Tax as a special type of expense and track it accordingly. However, I’ve found it easier to reduce the income proportionately at the source (a la TDS) and only add the net income at hand. This also has the advantage of reducing heartburn seeing all your money being spent on taxes!
Adding Tags
In addition to categories, which are the fundamental grouping for each transaction, you can add additional transaction to do more ephemeral grouping. For example each trip I do, I make a separate tag (say, Dubai 2019
) and all expenses of that trip are tagged with that. This allows me to quickly identify the total cost of a trip/event etc.
A long term type of expense that continues over and over again might be better tracked as a new category/subcategory.
International Transactions/Multiple Currencies
There are a few different kinds of transactions involving multiple currencies:
- Converting to a different currency/Forex card: In this case, you can track it as an expense for the amount of money that you initially spent, tagging it appropriately for the trip.
- Making an international purchase: Suppose you are using your credit card to make an international purchase, you can do the currency conversion live and add the transaction in the local currency.
- International Accounts: In this case, you need to create a new account with a different currency. Most expense tracking applications support this natively. In this case, you can make an Account Transfer between your accounts of different currencies and the currency conversion rate can also be specified and the application takes care of keeping the account balanced. In case your application doesn’t support this workflow, you might want to make two transactions, one expense in the local currency in the local account and one income with the foreign currency in the foreign account.
ExpenseManager
has tools to make currency conversions very easy by getting live rates. If that is not available, you will want to use an approximate standard rate and tally the numbers(explained below) periodically.
In any case, it is common to have further transaction costs associated with credit cards that your bank charges later/end of a credit cycle. This is added as a separate expense.
Tallying Accounts/Credit Cards
Over time, you will realize that you are missing a few transactions here and there. This could be due to additional taxes that are invisible in the first glance, transaction costs, or more likely(especially in my case) due to oversight. In any case, you will need to periodically tally your accounts to make sure the accounts don’t drift away too much from reality.
I do it once a month, for each of my accounts, at the time of paying my credit card bills. This is especially useful because I can check the statement of the credit cards to see that I have added each expense, and simultaneously giving me an understanding of where the money is spent. Any expense that I have missed is retroactively added at this point with the timestamp appropriately in the past. I do the same for the bank accounts with the bank statements, and also tally the money in hand as well to make sure that’s also in check.
In case I am unable to account for any mismatch, I have a special category called Tallying
to account for missing expenses which I cannot account for. Very rarely, this could also be an income in the way of credit card reimbursements etc as well (yay!). Usually this comes to a few basis points in my case, which is not ideal, but still better than the accounts drifting further from reality.
Closing accounts
If you feel that you are done with any account and will not be using it anymore, you can close the account to reduce clutter. In that case, you need to make sure that you transfer the money out of the account (just like you would do with an account IRL) before closing it off fully.
Joint/Shared Accounts
I have a joint account with my spouse, and hope to explain the philosophy and process of how we deal with finances in a separate post. But as far as this post is concerned, that account is added as a separate account and both of us periodically transfer money to this account.
Any money that she transfers into the account is credited as an additional income from my perspective and treated an income transaction. Expenses/Account transfer into card etc from the account are treated just like any other account. When she pays her credit card bill, it is considered as a single generic expense( see shortcomings below) from my perspective.
App specific optimizations
There are certain workflows that are made easy by the app that I am using. They are definitely not mandatory, but can certainly help improve the quality of use of the app. Some of them are:
- Currently Converter: As explained before, the app has a currency converter which can get live rates while doing an international transaction rather than manually adding the conversion factor each time
- Recurring Expenses: Recurring expenses (Netflix, Rent etc) can be added in one shot for a predetermined period.
What about auto-fill/smartfill?
Like many other apps, this one also has a autoFill
option which automatically reads your SMS and parses it to create a transaction. Although I tested using it for a bit, I eventually decided not to continue with it because of the following reasons:
- Incorrect/Imperfect transactions: Sometimes the app would classify an expense amount wrong, or category different than my intention. Although the option works great 95% of the time, the 5% of the time it doesn’t work exactly as expected became a major irritation as compared to the manual entry. I might be able to tweak it to work 99% of the time, but still I decided not to go down the path for the next reason.
- Lack of visibility: I’ve found that adding the transaction manually gives me a certain visibility into what is happening with my money which adds a bit of discipline into my expenses. Making it automated abstracts this process out, which I found made me less careful. YMMV.
Shortcomings
These are the places in the technique above where I found there was still scope for improvement.
- Tracking payments in joint credit card accounts: If my spouse is making a common transaction on her credit card, it is not captured immediately and instead comes as part of the generic credit card bill. This reduces the specificity of my ledger a bit for those transactions. I work around this by adding bigger expenses fro her transactions manually at the time of credit card payment, but this is still a workaround and not a solution.
- Tracking loans: This is done again as a generic transaction, and it is not easy to see who I have given money and taken money from. I track it with a separate app and only the final amount is tracked using the expense tracker.
- Multiple currencies: Like I mentioned before, tracking multiple currencies could be problem if I am traveling for a long term abroad. This technique tracks it correctly, but where I spend currency is not accounted exactly while travelling because currency is considered as an expense at the time of conversion and not while spending.
Conclusion
This was a fun post to write, and I hope this post has given a window into how you can track your expenses with a fair amount of accuracy. I believe that doing this regularly has given me a good appreciation of money and also where I am spending and how I can loosen or tighten my budget if need be. And you get pretty pictures like this about your expenses!