Personal Finance
Sid Su |Introduction
Starting off my monthly resolutions, my August resolution was to have a clearer understanding of my finances. More specifically, I outlined the S.M.A.R.T goal:
Specific—I will figure out a method—paper or software—that can help me record my expenses, and view my assets across all my accounts.
Measurable—I will have succeeded if all transactions across all accounts are recorded, all transactions match and all balances on my ledger match with the balances on the online ledgers.
Attainable—I am limiting myself to the month of August to start, so I do not need to record every transaction I have ever made since I was a toddler.
Related—by having everything across all accounts recorded for my own records, I will haveclearer understanding of my finances.
Time-bound—I am looking at the month of August, and must have everything done by . (Su)
I believe I was successful in my goal. I looked at several personal finance applications, and determined that GNUCash is right for me. I now know my assets and liabilities—allowing me to calculate my net worth. My expenses are auditable through receipt files attached to transactions in GNUCash. As of (my statement date), all of my transactions are accurate to the cent.
Requirements
My main, obvious, requirement is that I want a practical solution that can be used day-to-day. The meme in Fig. 1 resonates with me—mastering simple tool is better than bringing complex, often cumbersome tools (Maddox). I think the ends of the bell curve in Fig. 1 should be Excel, but finding a personal finance software close in versatility and simplicity without the effort should be the goal.

Defining specific requirements:
- More Than a Spreadsheet
- If the solution does less than what a typical budget spreadsheet does, then there is no reason to use it.
- Double-Entry Bookkeeping
- The solution must use double-entry bookkeeping, which improves auditability. This is not strictly necessary for personal finance, but I want to learn double-entry bookkeeping, so it is a requirements.1
- Ownership of Data
- I must own my own data, meaning my ledger is viewable and editable from a file on my computer. Even if my data is locked behind a free SaaS, there have been cases where previously freely stored user data gets locked behind a subscription (Freedman).2
- Data Portability/Archivability
- My ledger must be accessible, even if the original solution ceases to exist. In practice this looks like data stored in a standard format.3
- Efficient Workflow
- Entering a transaction should not take longer than it takes to put the same transaction into a spreadsheet.
- Fast as a Program
- The solution should be light on system resources. Specifically, I am targetting no more than 200MiB of RAM, and 10% CPU load.4
- Auditability
- I want to keep receipts organized and digitized, so that I can consult the original documents to find and correct errors.
- BONUS: Asset Value Tracking
- If there is a way to track the value of securities and currencies, and use them to track the value of an account, that is a welcome bonus.
Most Accounting Software Sucks…
For a software application category that is 70 years old and a glorified spreadsheet, it is impressive how bad most accounting applications are. Either it has a UI/UX design that is feature-complete, but not usable by humans—or it takes more system resources than many Xbox 360 games.
To illustrate these issues, these are the unchosen accounting applications I researched, and the downsides that led me to not choose them:
- Quicken Simplifi and YNAB
- These are the most fully-featured solutions, and have amazing features:
- Online banking support
- Asset price management
- Cross-platform support
- Beautiful reports
- Ledger and HLedger
- These are plain-text accounting or PTA solutions that have
gained popularity in the last decade. As the name suggests, PTA solutions store
the ledger as a series of human-readable plain-text markup files. Proponents of
PTA say that the format is better suited for version control, allowing for
easier auditing using minimal line-changes. However, from my—admittedly
brief—investigation I think PTA has some serious downsides:
- Plain-text formats lose speed, potential data compression and a significant amount of tooling compared to structured formats.
- Plain-text accounting gives few tools to start, just a command-line program, making it hard to generate meaningful reports.
- Plain-text advocates seem to create their own scripts and tooling, which they say gives them better control, however tooling and scripting languages are readily available and powerful for structured formats. SQLite, CSV, XML and JSON are standard formats that have well documented and open libraries.
- Both ledger and hledger do not have a way to attach receipts, reducing auditability.
- If a doomsday event occurs, and we lose the ability to read SQLite, it
is just as likely that we also lose the
ext4
filesystem, SATA-compatible connectors and computing as a whole.
- Homebank
- A pretty, fast, functional accounting application that does almost everything I want it to—but it does not have a way to attach receipts, which is one of my core requirements.
- Skrooge
- Similar to HomeBank, but I did give it the time of day because it tries to increase its search ranking with keywords. If you search for HomeBank, GNUCash or KMyMoney in package managers, Skrooge will also pop up. This is poor etiquette, and the Skrooge developers should stop doing this.
- Firefly III
- A feature-complete solution that comes with amazing reports and an API exposing all functionality. It also has the worst UI for anything in this roundup and for any piece of software that I have ever used. Doing anything requires a lot of clicking: from making reports, to adding transactions, to modifying accounts. If someone UI/UX minded came along to create an app using the API, it would be the best solution, but such an app does not exist.
- Actual
- A pretty, easy to use accounting app. It works well—but is a single-entry accounting solution.
- KMyMoney—The Runner Up
- A feature complete, powerful and fast accounting tool. It is likely a little bit better than the solution I chose, as it checks all the boxes just a little bit better—but I am primarily on GTK, so in order to keep the environment looking native, I chose a GTK application.
No Bad Options
Despite my criticisms, I understand if use a solutions I chose to skip over.
Drugs don’t work in
patients who don’t take them
(Lindenfield). If using plain-text
accounting enables you to manage your finances better, then use it. If like
most people you do not care about having to open a web browser to view your
ledger, then do it. It is better that you do something than nothing, and all
the applications listed are capable of doing 95% of what the others can. Avoid
Skrooge though, they have bad etiquette.
GNUCash Does Everything… Unglamorously
The accounting solution I ended up choosing is boring and unglamorous. Having released in , GNUCash is an old piece of software. However, I see this as an advantage, not a disadvantage. Here are the main reasons for GNUCash:
- Ergonomics
- GNUCash has had 27 years to become easy to use, with keybinds and layouts that have been refined over many iterations.
- Resource Usage
- GNUCash only uses ~100MiB of RAM, and ~2% CPU, which is within my requirements.1
- Stable, Bug-Free
- GNUCash has been around so long that I can expect that most breaking changes were done 10–20 years ago. It is a stable experience that will keep working for years to come.
- Ecosystem
- Tooling has grown up around GNUCash over the years to do things that are not available in the basic program. Mainly, this comes in the form of extensions written in PERL.
- Double-Entry Bookkeeping
- GNUCash does double-entry bookkeeping, which was one of my basic requirements.
- Archivability
- GNUCash has the option to save ledgers as either compressed XML, SQLite or connecting to an external SQL server. Weirdly, the XML is a lot smaller than SQLite. This is likely due to the XML being compressed, and the SQLite not being compressed.
1GNUCash was designed in a different era, when both RAM and storage was expensive. It is written in C with extensions written in Perl, making it fast and efficient.
Using GNUCash
It can be easy to get caught in the details of which software is best; actually using the software is a whole different task. GNUCash has some quirks to learn, and it can be a bit confusing at first, but I will try to clarify the parts that confused me. If there are parts that are still confusing, feel free to reach out to me, and I will add it to this page.
Creating a New File
To start with GNUCash, create a new file by going to
File→New File
.

When choosing which accounts to create, do not worry too much about getting all the accounts right. You can refine them after-the-fact.

Also set opening balances. Again here, do not worry about getting all the amounts right, because you can and likely will update them later.

Finally, when saving, choose either XML or SQLite. Either is good, and you can convert between them in the future. I recommend SQLite, because it is faster to startup, at the cost of a larger file size due to a lack of compression.1

My Accounts
The main goals of personal finance:
- Track the money you have.
- Track where money is going.
There are other goals too, like budgeting, tracking the value of assets and allocating savings for big purchases, but all of these really emerge from doing (1) and (2) well. In GNUCash, setting up meaningful accounts is the most important is the most important part of solving (1) and (2).
I set up relatively standard accounts for assets, equity, expenses, income and liabilities, but there are a few things that I did differently.
- Assets
- Mostly standard, except:
- I split my accounts into
Assets
andAssets (Non-Liquid)
. - I put my Venmo as a bank asset—usually I have more money in Venmo than I take out, so it is acting as a pseudo-bank.
- I split my accounts into
- Equity
- I honestly don’t know what equity really means in this context. To me, it’s just a slush fund for opening balances and nothing else.
- Expenses
- I found that the default expense categories didn’t align with what I actually care about. Currently, I have major expense categories Everything Else, Me, Social, Town House and Transit. It takes a bit of a fine-tuning, but if you change.
- Income
- I have pretty standard accounts for capital gains, work, gifts and other income—such as selling things on EBay.
- Liabilities
- For liabilities, I have my car loan, credit cards and my house’s Splitwise. I put Splitwise in liabilities, because I don’t pay the utilities, so I suspect I’ll almost always have a balance in Splitwise, hence it’s a liability.
Here is how my accounts look overall:
Accounts ├── Assets │ ├── Checking │ ├── Business Checking │ ├── Venmo │ └── Wallets │ ├── Black Wallet │ ├── Brown Wallet │ ├── Green Wallet │ └── Red Wallet ├── Assets (Non-Liquid) │ ├── Car │ ├── Work 401k │ ├── Investments │ └── IRA ├── Equity │ └── Opening Balances ├── Expenses │ ├── Everything Else │ ├── Me │ │ ├── Beauty │ │ ├── Books │ │ ├── Clothes │ │ ├── Education │ │ ├── Medical │ │ ├── Technology │ │ └── Treats │ ├── Social │ │ ├── Dates │ │ ├── Dining │ │ ├── Drinking │ │ ├── Gifts │ │ ├── Holiday (Vacation) │ │ ├── Live Music │ │ ├── Movies │ │ └── Parties │ ├── House │ │ ├── Decor │ │ ├── Groceries │ │ ├── Rent │ │ ├── Rental Insurance │ │ ├── Supplies │ │ └── Utilities │ └── Transit │ ├── Car Fees │ ├── Car Fuel │ ├── Car Insurance │ ├── Car Maintenance │ ├── Parking │ └── Public Transportation ├── Income │ ├── Capital Gains │ ├── Gifts Received │ ├── Work │ └── Other Income └── Liabilities ├── Car Loan ├── Grey Credit Card ├── Blue Credit Card ├── Green Credit Card └── Splitwise (w/ Housemates)
What’s good about GNUCash is that creating new accounts does not take a long time, there’s a dedicated button for it (unlike Firefly III’s disaster of a UI). Also, if an account has no transactions, you can delete it from the keyboard with del.
Remember that no one’s accounts will be exactly the same. You might have different needs a different set of expenses that matter to you. Try some categories, and some categories never get used, delete them. If a category is too general, and would be better served broken up, break it up.
Adding Transactions
Now that my accounts are set up, I want to track my assets, expenses and liabilities. To add a transaction in GNUCash, simply add it to the bottom of an account ledger. Note that because this is a double-entry bookkeeping application, each transaction you put in will appear in two accounts, deducting from one and giving to the other.1
That’s literally just about it. You just do this for every transaction, and add as much or as little detail as you want. For me, I like to have receipts, because it makes it easier to make the numbers work at reconciliation time.
I reconcile my transactions with my bank statements each month, and make sure the numbers make sense.
Although the process is pretty simple, here are a few things that still confused me when starting out:
- If you are transferring from one account to another, how can you gain or spend money elsewhere? Or how does money get created and spent in the double-entry system?
- To gain money, you are crediting the income account—like salary—and debiting the asset account—like checking. This is confusing, because colloquially, we use credit to mean getting money, and debit is the opposite, so it must mean losing money. DEALER is an acronym that can help. DEA—dividend, expense and asset are debit balances, or a high debit means more money. LER—liability, equity, revenue are credit balances, or a high credit means more money. GNUCash abstracts this by using less formal names such as Deposit and Withdrawl, making it easier, but it is still helpful to know what the formal names are.
- Do you need to have an account for every place you spend money?
- You do not need an account for every place you spend money, unless you are a business that deals with a few big suppliers or customers. However, regular people spend money in many different stores and places, so it is usually a lot more useful to make accounts as meaningful spending categories than individual stores.
- How do I record my assets before installing GNUCash?
- Everything goes into
Equity::Opening Balances
, which is just like a slush fund for money before you started to use the accounting software. Unless you have a record of every transaction you have ever made since your first dollar, then this category is necessary. - Where does income come from?
- Income comes from the income category. It is typically credited to the income category, and debited to the asset category.
- How to deal with stocks going up or dividends?
- Transfer the income from the Capital Gains account into the account where
the dividend is going into. For stocks going up, you can use the security
editor located in
Tools→Security Editor
- How do I deal with assets like a car or house?
- Make a transaction for an asset with the amount you paid for the asset as a
debit in its own
Car
asset account, and a credit to the car loan liability account. In personal finance, you do not typically track the value of a fixed-asset.1
1I personally do not agree with this, because I think it is important to know net-worth, but it is a bit less work, and is the standard for personal finance, so I follow this recommendation at least for now.
The Day Book
The biggest disadvantage is the lack of a good mobile app for GNUCash. Not that it would be particularly hard to make one that is cross platform, since SQLite is literally everywhere. However, in order to deal with this downside, I have turned to a different strategy: the day book.
I now carry a notebook around everywhere, and this notebook has a pocket that I can put physical receipts into. This is really useful, because I have a singular place where I know the unreconciled receipts are.
I found that an A6 notebook works best. It so happens that I bought a Leuchttrum1917 A6 notebook back in Summer 2016, so it’s nice that I’ve finally found a better use for it—I originally used it back in high school to keep track of who has a crush on whom, but didn’t keep it up. I really like that it has a pocket not only for receipts, but also for small bits of paper that I always seem to accrue like doctor’s appointment schedules.

Also, I have a OneDrive folder with receipts for transactions that need to be added.
Reports
When choosing GNUCash, my greatest worry was that I would lose the flexibility of generating charts in Excel, and the defaults are a bit underwhelming. I would have liked there to be a bar chart option, but the pie chart is good enough for now. I suspect there are some PERL add-ons that add bar charts, but I have yet to do the work in finding them. Here is a pie chart of my expenses for the month of August. Yes, I did spend as much money on social expenses as I did rent and living expenses:

Also, I get get more granular with the charts. For instance, here are my social expenses for the month of August. It doesn’t look as bad when it’s broken up like this.

Budgeting
The biggest feature promoted by proprietary solutions like YNAB and Simplifi is that they excel at making tight budgets which save you money. YNAB prefers zero-based budgeting, which just means that every cent needs to be accounted for each month. Simplifi is unopinionated, but gives you the tools to do zero-based budgeting or 50/30/20 budgeting—allocating after-tax income to 50% on needs, 30% on wants and 20% into savings. GNUCash is also capable of zero-based budgeting or 50/30/20 budgeting, but it’s all business, and doesn’t babysit you when making your budget.

Budgeting in GNUCash is done through its own interface, making for a more congruent workflow. It doesn’t force you to do zero-based budgeting, but by giving you that choice, it really helps. Furthermore, it makes it easy to see how you did each month with a table view and barcharts in budgeting reports. I don’t quite know how to make the numbers line up yet, but I’ll get back to you on that.
Conclusion
Going back to my initial goals, I think I have succeeded, at least for the month of :
Specific—I will figure out a method—paper or software—that can help me record my expenses, and view my assets across all my accounts.
Measurable—I will have succeeded if all transactions across all accounts are recorded, all transactions match and all balances on my ledger match with the balances on the online ledgers.
Attainable—I am limiting myself to the month of August to start, so I do not need to record every transaction I have ever made since I was a toddler.
Related—by having everything across all accounts recorded for my own records, I will haveclearer understanding of my finances.
Time-bound—I am looking at the month of August, and must have everything done by . (Su)
However, there is a lot more to a resolution than just the one month, and we will see if I keep with the ledger, or find it too cumbersome and let it go. It is really hard to create a new habit. Afterall, dentists spend their entire career telling people to floss (a 45 second task), yet patients more than often do not.
Whatever happens in the future, my
resolution is the infamous get fit.
I want to focus on cardio, because I
played baseball at my friend’s party, and I was huffing and puffing. See
you next month :).
Works Cited
Freedman, Sonia. What’s Up With Quizlet? An Exclusive Interview
With the CEO.
M-A Chronicle, 17 Oct. 2022,
machronicle.com/whats-up-with-quizlet-plus-an-exclusive-interview-with-the-ceo.
GNUCash Development Team. 2.4. Storing your financial data
.
GNUCash Tutorial and Concepts Guide. 29 Jun. 2025.
gnucash.org/docs/v5/C/gnucash-guide
Kircher, Paul. The need for integration of accounting systems and the
design of electronic data-processing systems.
Proceedings of the March
1–3, western joint computer conference. 1 Mar. 1955,
dl.acm.org/doi/10.1145/1455292.1455297
Maddox. This Meme Perfectly Illustrates the Road to Mastery.
Medium, 30 Oct. 2022, madmaddox.medium.com/c97314ff6ad2.
Quake Isn’t Earth-shaking.
New York Daily News, 6 June.
1996, www.nydailynews.com/1996/06/30/quake-isnt-earth-shaking.
Recommended Formats Statement: Datasets.
Library of Congress,
www.loc.gov/preservation/resources/rfs/data.html. Accessed 2 Sept. 2025.
Su, Sid. Why Not Monthly Resolutions?
sidsu.com, 28 Aug. 2025,
www.sidsu.com/blog/Monthly Resolutions.
Whiteside, Eric. The 50/30/20 Budgeting Rule Explained With Examples.
Investopedia. 22 Aug. 2024.
www.investopedia.com/ask/answers/022916/what-502030-budget-rule.asp.