So, I made a small companion app called gnucash-helper [2]. It's a Python/Flask web app for doing the very basics of GnuCash, i.e. entering transactions, looking at their history, and checking balances.
If you want to try it out, there's a demo of it on https://demo.checkyour.finance. The container it runs in is destroyed every 30 minutes, but that's enough time to play with it. It's very simple, but it does everything I need, to the point that I no longer have to open the desktop program.
Your feedback is most welcome. I should say right now, though: it's more like beta software at this point. I haven't built the Docker container in a while, so the one on Docker Hub may or may not work. If anyone has any interest in contributing ideas or code to this, I would love to hear about it.
Edit:
A couple things I forgot to mention:
- The backend for this is a .gnucash file that is saved in the sqlite file format. You can add your own into an S3 bucket, and this will write to it using Python's boto3 library.
- There's no way as of yet to download the GnuCash file directly from the web app, but I would like to add that in the future.
- The heart of this app is the Piecash Python library [3]. It lets you use Python to alter GnuCash files.
References:
[1]: https://www.gnucash.org/docs/v4/C/gnucash-guide/basics-files...
Been thinking of an API/Web interface (or Telegram bot) to quickly save transactions - so it's wonderful to see you built something in that can help in that direction! Guess I can look at the telegram bot part now :)
It does seem like there's still room for a FOSS/selfhosted Mint clone that gracefully and automatically handles data import (I wouldn't even mind having to enter my banking passwords each time I want to update, to avoid storing them)
The downside is that ynab is some $, but I think it's worth it not to have ads for insurance, loans, or credit cards being shoved down my throat.
I evaluated personal capital[1] as well, but I got really turned off by them having a "continue with google" auth workflow that leads you to a page saying they haven't implemented it yet. Not a great way to build trust, which is a absolute must for any financial application.
If any HNers have good recommendations, I for one would appreciate hearing them. I'm ok spending ~100/yr on a good financial management app.
However, since I have quit, I have not found my habits to have changed. I think some part of the system is permanently burned into my brain. I am exploring my options with hledger, and it's been a neat experience so far.
Although I'm not sure how it compares to YNAB since I've heard good things about it too. What I like about Monarch is the nice UI, no ads, responsiveness and that the sync doesn't fail (often) like it failed (often) with Mint all the time.
I’ve been using it for 3-4 years now and happily pay for it. It makes tracking our family expenses manageable in a way that I can’t imagine with many other systems. It is especially helpful during times when your expenses suddenly skyrocket (buying a house, wedding, etc). The reports / graphing features are pretty useful too when you’re trying to understand how to shift your spending habits.
It’s essentially a “cash envelope” budgeting system made digital. The idea is to take all of your available cash and distribute it into categories with specific purposes. When you find there is extra money that needs to be distributed, you pay down some debt or maybe start saving for that vacation you’ve been needing. It really helps you get ahead of your spending and to act responsibly with money.
Our accounting software auto-imports all of our transactions daily via the Plaid API and our classifying ruleset categorizes 95% of them automatically. All that's left for our bookkeeper is to spend a few hours a month going over the unusual ones and doing some general accuracy/sanity checks. In addition we get dynamically generated reports every week which are ~90% accurate. Prior to these features the model was "bookkeeper manually imports a bunch of transactions from multiple sources and does a ton of work at the end of each month and produces one monthly report." Automation here has been a huge win, lower costs and better results.
As much as I appreciate and prefer FOSS software I would never go back to the old way of doing things, the last thing a founder wants to spend a lot of time or money on is bookkeeping.
Unfortunately too many use computers every days without even understanding how can they work for their user profit instead of some third parties mostly employing the human customer as a data cow and small-microfinance bank...
I now just download transacations from the institution (CSV, OFX, etc) and import the file. Many institutions charge extra for being able to pull automatically, but their export is free. Sounds like a pain but it isn't that bad.
Probably 90-95% of my spending goes on a credit card and then gets paid off at the end of the month. GnuCash has been great for tracking everything. I'll have to look at KMyMoney too.
I use gnucash for about half a decade now for private financing and it is absolutely a valuable helper. I run it at most once a week: Fetch transactions, query balance and reconcile.
In the past I used the plaid api to get transaction data.
What is this wizardry? I go to the web portal of my (banks) and basically do double entry.
GnuCash 4.7 - https://news.ycombinator.com/item?id=28666104 - Sept 2021 (11 comments)
Simple Personal Finance Tracking with GnuCash - https://news.ycombinator.com/item?id=23237445 - May 2020 (319 comments)
GnuCash: Open-source double-entry accounting software - https://news.ycombinator.com/item?id=20109545 - June 2019 (100 comments)
Using GnuCash as a Freelancer to Track Finances and Prepare Taxes - https://news.ycombinator.com/item?id=16857884 - April 2018 (184 comments)
I started using it in 2017 and still use it today. It's still really solid and makes filing quarterly taxes not too painful. In my opinion it's one of the best tools out there if you like your privacy and don't want to link your bank accounts to a third party service.
Since GnuCash involves manually entering in transactions it's easy to think that'll take a ton of time.
I just timed myself and it took 5 minutes to input everything for April 2022 into GnuCash. This includes all income and expenses (personal and business). I'm not even using GnuCash's automated feature for recurring payments too, so that 5 minutes includes manually inputting various subscription costs (I don't have a lot). This also includes a bunch of business related things (estimated tax information, a few income streams in their own "GnuCash Accounts" and a few expense streams in their own "GnuCash Accounts"). I do this by opening GnuCash and my bank's dashboard side by side and then running through last month's entries.
Most banks support exporting CSVs and I'm 100% certain I could write a Python script to parse this and auto-import things into GnuCash but since the bank item descriptions for the same transactions change over time I don't want to risk it. The 1 hour per year of manually entering numbers (I copy paste the dollar amounts to reduce human error btw) gives me more confidence than writing that script. I also know to make that script robust enough to consider using it for real in a way that wouldn't require manually checking it would be quite involved. As soon as the script's results require manually checking it for accuracy then you might as well have input things manually without the script.
Later, switched to beancount, it had a CSV importer and I tweaked some example script to do an "interactive" import. Each transaction would be presented and I could accept it as is, or modify it. If I saw a common issue, I could make a copy of the CSV and do a bulk replace, massage the data up front and quickly import.
I'm not saying you need to switch to CSV since your system is working for you. I'm mainly just agreeing that manual entry from a monthly statement can be pretty quick. But for those that are lazy like me that don't responsible balance the books each month, manually grabbing the CSVs and importing many months of statements in an afternoon can still be pretty quick. I would keep the bank statement PDFS + the "official csv" around as a sort of backup. Someone wanting to try GnuCash or any accounting software can start by downloading their statements/csvs for the last year and start punching their transactions in to get a real feel for how working with it will be.
The only issues I've had over all these years have been banks/credit cards that have weird idiosyncrasies in their file formats (lookin' at you, AmEx) that require you to remove the trailing white space (bad memory, I have a text file that reminds me what to do every time) or whatever and getting stock updates (gnc-fq-update) working again after upgrade.
It's also really accessible. While slow and a little annoying, I can do almost everything with a keyboard instead of the mouse (unlike so much online tax software, which is a carpal tunnel specialist's dream).
I think that's the kind of thing that some of us see as a neat challenge to figure out and overcome; but for others, it becomes a barrier for entry. I still evangelize the heck out of Gnucash, though. It's so powerful...and not Intuit.
Seems more targeted towards small businesses/freelancers... wonder if that would make it less ideal for use in a personal finance context.
FWIW I'm happily using a service called 22seven[1] that is backed by a big bank in my country (South Africa). It is super convenient and links to a bunch of different services so you can pull in all your investments etc. to track all at once (of course this means they track you too, but they were doing that before anyhow)... I just don't know for how many years it will stay updated, free, and available for use to people who bank at other banks (such as myself), so I'd like to at least plan for moving to a more open alternative when the time comes.
1. Lots of scheduled transactions. Rent, cable bill, paychecks, car insurance premiums, quarterly estimated tax payments, etc. Any transaction you can expect and guess at can be a scheduled transaction. This really cuts down on the catch-up work.
2. Transaction import. A lot of what's left after #1 is the random unpredictable expenses go on a credit card, and most of those support OFX or quicken format data downloads. As you import that data, it should be able to match up official records with what you had written down, and if different "update and record."
3. Monthly reconciliation. At the end of the month, review all the statements you get with your records using the reconcile window. If I'm lazy, I can skip liabilities and investments for a month as long as my main checking account is correct and CC payments for next month reflect their most recent billing statements.
My solution was to open a dedicated current account and or credit card for each category. This makes assigning a category to transactions simple because I know which budget category each account is designated to.
This also helps with day-to-day budgeting because I have setup scheduled transactions to top-up my essentials and luxuries bank accounts with the correct amount of funds from my savings. A side effect is the stark reminder that using the credit cards eats away my goals budget because I've already spent my allocated funds for essentials or luxuries.
One downside here is losing the credit card protection on some purchases. The work around is to transfer funds back to savings when making these purchases. Another is that it's difficult to adopt immediately because opening several accounts may affect credit rating or rouse suspicion from financial institutions.
- you need it for tax/legal/bureaucratic purposes, or
- you are really short on money and you need to keep track of it down to the last cent.
When either of those two conditions are true, double-entry is amazing.
If the above are not true (and it sounds that way based on your comment) then I would do it statistically.
Determine how much time you would like to spend recording transactions. Let's say it's 1/11 of the time it takes when you are doing a full accounting. (Eleven is good because it's prime, so it's less likely to accidentally line up with cyclic transactions.)
Enter all expenses/incomes only every eleventh day. Nothing the other days. You have to be really strict about this!
Instead of entering the actual number, though, multiply it by 11.
Tadaa! After a while, you have practically the same result but at a fraction of the effort (roughly three times per month instead of 30.)
Note that the number you get will have some sampling error. For bonus points, you can calculate the size of this. Depending on how large the variation of your expenses is and how often you enter them, it's not unreasonable to get a sampling error where three standard deviations are ±50 % -- are you okay with a rough estimation like that? If not, you have to sample more often.
More technical note: what I've described is actually a stratified sampling scheme, only once you've sampled a day, you do a full accounting of the transactions within that day. Depending on the practical structure of your transactions, you might find that you can optimise your sampling scheme (lower sample error and/or less effort) by selecting more days, but only entering one transaction from each day.
Read up on sampling! It's powerful!
Probably not, which is why I'm not actually using it right now. My main use cases are keeping track of various types of assets and liabilities (bank accounts, stocks, apartment deposit, etc) to track my net worth as well as having a general idea of where my money goes, e.g how much I spend on groceries as opposed to eating out.
The statistical sampling approach sounds very interesting, thanks for the tip!
In tools that I've tried, they've all been finely tuned to down-to-the-penny precision and capturing all data.
This maybe different for everyone. Currently, I'm fortunate to be saving about 80% of income. But even a decade ago when I was much more in a paycheck-to-paycheck situation, I didn't know what to do with this per-transaction double entry data.
I also think that the entire design of accounting software, where you assign a given expense to a specific category ("groceries", "fuel", "household", "vacation") is too limiting because they are artificially orthogonal. What if I have a "fuel" category and a "vacation" category, but I'm filling up on vacation? Same with groceries, but it's even worse because I needed to buy those anyway. It's really hard to use these categorized transactions to figure out if I need to cut back on vacations, or buy a more fuel efficient vehicle.
I do have to go fetch the CSVs myself, and if I want a purchase from e.g. Amazon to go into a category which isn't Expenses:Goods:Amazon I have to move it, but all in all it does the two things I need: puts my purchases into buckets and makes me look at my expenses on what should be a monthly basis but is closer to quarterly lately.
This is with ledger-cli, rather than GnuCash, but same principle I think.
The importers have historically erred towards being something the user writes on their own. But there's also some powerful helper tools for importing but they carry a different user experience than the other tool for financial reports & visualization.
Im starting to think a unified experience (think vscode + built-in extensions) for it all might help align intentions and broaden the userbase of plaintext accounting.
1. Login not on mobile (and also extend your browser winder size until the mobile mode is gone. Mobile mode changes how you login, because of course it does...)
2. Click one your bank accounts.
3. Click "Download", "Custom date range", from some time ago to today*.
4. Download as Printable Text Format
This will give you a simple CSV file of all your transactions.
I'm horrible with money, but still try to export all my transactions and merge them onto one spreadsheet so I can plan out money stuff as needed.
* You can only download up to 6 months at a time, but you can go pretty far back in your banking history.
I found it easier to manage personal finances in a spreadsheet.
That one got me awhile back. Ram was spun off in 2010, but they're both owned by Stellantis.
GnuCash is open source and this is hacker news…
They don’t have some sort of exportable file format that both quicken and gnucash can understand?
Which, of course, doesn’t help with the UI issues.
It's almost impressive how bad it is on my phone.
The content takes up 2/3 of the page horizontally to make room for the logo on the side.
I get GNU and it's culture are less about mobile and more about *nixy desktops/laptops/servers, but it takes more effort to break things like this than letting the browser do it's natural thing most of the time.
But you're probably still right, I'm sure at some point they just peppered those into all their pages to fix them at least a tiny bit.
I used GnuCash when I had a consulting business (including abusing the invoicing features for time-tracking), as well as for personal finances.
Over the years, I keep experimenting with different ways to use it.
At one point, I could even run a custom report to show how much I was saving by making coffee at home rather than picking up one each day.
Eventually I kept simplifying, especially in Expense accounts, eventually only distinguishing transaction categories by tax implications.
I also stopped recording each individual little cash transaction. Instead, I occasionally counted the cash in my wallet, and added an "Expenses:Misc." transaction to make it match what GnuCash thought (given ATM withdrawals the bank import showed).
I never did figure out a practical way to track Guideline.com 401(k) in GnuCash, and, the instant I could close the account, I rolled it over to Fidelity. Where tracking the prices and every dividend reinvestment of my ITOT and AGG was easy and almost fun.
I'm currently taking a break from GnuCash for 2022, seeing whether a fancy assets&liabilities spreadsheet in Libre Office would be better. (While still saving the monthly OFX/QFX exports from my financial accounts, while I can, in case I ever need them.)
Initially, the spreadsheet seemed to do what I want with less effort, but I'm finding that GnuCash might actually be less effort in practice for the level of up-to-date and historical charting that I have.
Also for Fidelity I've been struggling to track all the dividend and various random automatic transactions that happen (incl. ESPP, Stock Awards, etc). How do you manage that so it feels easy? I'm sure I'm just missing the right way to import or something. Id love to learn
The lack of a basic "cash in the register in the morning", i.e. a basic ability to input the transactions in the different times of day (despite the backend supports it) was an instant no go for the task.
I used GnuCash for a couple of years to track the finances of my family, but the inability to place the transactions by the time is a thing which drived me to totally abandon the thing.
For example if I transfer between two banks, the date of the transaction in bank A and bank B differ my a day or more. So now I'm stuck deciding which account is "incorrect". Which also makes importing a pain because it borks the matcher.
The fact that it doesn't have an official companion smartphone app (that I'm aware of) was the dealbreaker; I can go for weeks without touching my personal computer.
Ultimately I've resorted to Google Sheets with a lot of formulae and data validation; I can now see all my incomes and expenses, the summary of all my accounts, expenses across different categories etc. I've been on this for a while now and it's been great.
And Google Sheets sync to my smartphone as well. (I periodically manually backup all the important stuff separately, just in case Google blocks me).
Also I'm not a huge fan of the UI.
Still, I would've used GNUCash if I used my personal computer regularly.
I took a glimpse into the chasm of madness of trying to OCR their PDF statements and decided... no.
Do you mean that kMyMoney is simpler and easier to use? I didn't even know kMyMoney was a thing until now, I'll give it a try.
I think it's easy to make anything better than the super buggy mint.com.