GnuCash – Open-source personal and small-business accounting software
gnucash.org
gnucash.org
Every time it does, it's obvious it has devoted fans and bitter enemies. The biggest problem with it as far as I can tell is the requirement for manual entry.
Given Europe and the UK have had Open Banking for years now, and a universe of apps automatically pulling, categorising and reporting transactions (including many incumbent banking apps) - I'm curios if this is a US-only phenomenon - why would people use decade-old software instead of the latest in banking technology? Any users from Europe or UK?
Previous threads:
- https://news.ycombinator.com/item?id=31219754
GnuCash isn't restricted to manual entry. It supports OFX [1], which you can set up to automatically pull transaction data from your bank.
More importantly, can it invoice customers via email with a template?
I would be willing to use a script which I can audit and run myself, but nobody offers that for my bank.
Disclaimer: I work for them. What I'm saying here is 100% personal and does not reflect the views of my employer, yada yada...
To be honest, we're doing an excellent job of protecting our customers' data. It's one of our core concern, and I have absolutely zero issue putting my own data in there.
We do _NOT_ store your credentials or even receive them at any point. Quite frankly, we don't want them. Any authorisation you would give us automatically expires after some time anyway, enforced by the banks.
The primary offer of Ponto is one API to interact with all your own bank accounts. No license needed, we handle all of that. We also provide a unified interface to all the banks.
The API is well thought out. All of our managers are highly skilled devs, so they understand what it takes to build good software (= time).
Check it out, we have a great support directly via Slack. I'm not answering that myself, but the guys who do it are super dedicated and will go a long way to help you.
Honestly I can't say enough good things about this product and our team! A product you can rely on, long term.
Fintech might be overall more security focused in their software development practices, but 10 years is still a very long time to entrust someone with your data.
So the answer is a clear no then, please be up front about it instead :)
The topic is GnuCash, parent said "The biggest problem with it as far as I can tell is the requirement for manual entry" whereas someone replied "To use these APIs in Europe you need a license" and you said "There's Ponto", and I asked you if I can use Ponto to connect to GnuCash.
I think it's understandable to think that if someone is suggesting Ponto (in a submission about GnuCash), then you should reasonably be able to use Ponto to connect to GnuCash, since that's the entire point of this submission. Otherwise your comment just reads as trying to shoehorn in your own product wherever it's only slightly related to the topic at hand.
The apps which don't have a deal with these aggregators request you to provide credentials (now fortunately most of them are defunct due to MFA)
Aggregators to require you to provide credentials are just web-scraping the websites or have reverse engineered the banks (internal) APIs.
I'll concede that it's only for business accounts. But, that includes small single owner businesses and I've been considering to switch to ABN to automate the accounting of my small side business.
The PSD2 APIs (also for consumers) indeed need a PSD2 license and an EIDAS certificate.
Technically, for consumer data, I think you could use GDPR to request a computer-readable extract of your transaction data. However, I think most banks would then redirect you to some CSV/MT940 export option in the web interface that is hard to automate.
[1] https://support.n26.com/en-eu/security/open-banking-psd2/psd...
I have been playing with the idea to use its API for my personal finance but the API with MFA is not so simple. At least not simple enough for me to spend much time for writing a customized interface. So I am still using their web interface which works well for my personal needs.
I don't know what I was thinking. This is Europe and there is very little chance a good idea won't be ruined with some sort of bureaucracy, licensing requirements, utterly vapid credentialism, or as a last resort, some other form of obtuse gatekeeping.
Maybe the situation is better on the continent, but from living in Ireland and the UK I don't believe this is a solved problem here. Open Banking allows third parties to connect with your bank accounts with your consent but I'm not aware of any (reputable) service that simply gives you an API into your own bank accounts. Would be happy to be corrected on that.
That said, I wouldn't call the entry process entirely manual. GnuCash supports importing transactions in a broad range of formats, including OFX, QIF and CSV with user-defined rules. Yes, you still need to log into your bank/credit card/etc and download statements for import, but personally I don't mind doing that. My workflow is that I spend about half an hour every week logging my transactions in GnuCash. Sometimes I skip a week or two. Yesterday I had to enter a full month of transactions and it took me about an hour (complicated by the fact that I had lots of business expenses).
I wrote a pretty simple budget webapp before the regulation took effect but was forced to stop after.
It's kinda good because it reduces the risk startups take security on the light shoulder like I did with my self hosted app, but it's obviously annoying as a user.
We must never loose hope.
That's a problem? I'm still using YNAB Classic, and prefer manually entering my transaction data over my time using Mint years ago (which imported my accounts). IMO, it has made me more conscious of my spending.
There’s a karma train on HN that you can collect when a related post can be made.
Nonetheless. I am from germany and I successfully integrated sync with multiple bank accounts via aquafinance. I can pull down and automatically categorize transactions and even issue transfers.
There are more reasons i did not fully commit yet:
I have no automatic backup configured. I do not have an designated desktop-pc yet. Having all this important data on a mobile device is insecure imo. I have no _real_ usecase to apply double-checked accounting (hopefully this is the correct term).
Nonetheless, it's great. If one had a tax-guy I guess it is even more beneficial.
Here is the link: https://aquamaniac.de/rdm/
I integrated all my accounts of Kreissparkasse and DKB. Works flawlessly. I also tried all alternatives to connect to these institutions. I wouls recommed this setup.
Gnucash support automated importing from a whole bunch of sources like CSV and OFX/QFX.
Open banking is a great initiative but I currently haven't found any product or tool that actually lets me use it that can actually successfully connect to my accounts.
Also, what differentiates GnuCash from many other tools is that it is full double entry accounting, which gives far more security in terms of knowing that you are not misreporting or missing anything.
So really the difference is between having Qucken log in to my bank directly vs me logging in and just downloading a file with transactions.
GNU are also very hard on principals. Again, I think society started leaning quite a bit more pragmatic over the past 10 years.
In the tech industry you can see this trend for example GCC to LLVM, LibreOffice to just using Google Docs, GPL to MIT, etc.
MIT by contrast lets you do whatever you want, and that seems more like the libertarian approach to me.
It requires you share the code with your users/the people you distributed derived works to for no additional cost. You can still charge money for the software, but you can't charge an additional fee for access to the code. You also give them the right to share it how they seem fit, so they could share it (the code, not necessarily trademarked things like names or artwork/assets) for free, share derived software including the code for a free or a fee, or not share any derived work at all.
You can read more here: https://www.gnu.org/licenses/gpl-faq.html
Labeling something "socialist" or "libertarian" in a diverse place like HN probably harms more than it does good, as everyone will read it differently and have different takeways.
Socialism had plenty of that going around, sticking with older working ideas.[1][2] But I hear you.
"The Free Software Movement does not endorse Libertarianism".
In terms of time commitment, about 20 mins every two weeks seems to be enough for logging all my transactions into Gnucash - I have 3 bank accounts, 1 investment account and 1 retirement account.
Another pet peeve is the time order. A lot of times I'll have have a credit and debit on the same day, but the order I enter these depends on the order I'm going through my accounts. Since GnuCash only lets you put a date, it'll look like the account was overdrawn when it's simply mis-ordering the transactions. The only way I know to fix is to re-enter both transactions.
Yes the same-day ordering is visually quite annoying, although the final end-of-day/end-of-statement balance is really the only value that matters.
!
This was partially because the UI has a lot of issues (especially the bank statement importing - if you don't do everything just right, you have to redo it from scratch, and it is very easy to make it fail), and partially because the ability to automatically assign transactions to categories was too limited (it expects the reference to match exactly, but in many cases it doesn't, so I would have to spend a lot of time manually assigning things to categories, again from a really bad UI).
I have to add, this was 5-6 years ago, so it's possible that the UI has improved since then.
This method relies on balancing to the cent each time, since I use my actual bank balance as the target.
It is indeed tedious at first, however I find that 1) manually entering transactions helps me spot problem payments quickly (comprimised credit card, overcharges on direct debits etc.) and 2) the predictive auto-complete feature speeds entries up over time, as most entries are assigned to either a a)groceries, b)eating-out or c)bills expense account. You just press 'Tab' when the correct suggestion pops-up after entring the first few letter, and the line entry gets auto-filled. I still usually need to change the numerical value, but the correct expense account and transaction detail are prepopulated correctly most of the time.
Overall I would recommend giving it another chance.
It's not the transactions themselves that I find tedious, it's all the ways I split them. My partner and I split many transactions together and we often travel with friends so I charge friends over Zelle/Venmo for transactions we had while out. Importing transactions from my banks makes it significantly easier to reconcile all of these, especially when I'm on a vacation. Ease of writing importers was a huge driving factor when I switched to hledger from GNUCash.
It's amazing discipline that you enter these manually. I remember that GNUCash has decent autocomplete which certainly helps. I don't think I'd be able to keep up with my finances myself if I had to input it all myself. I personally have anywhere from 50-100 transactions a month.
The only quirk is that one of my accounts uses a non-standard ordering for its csv file which needs fixing before HomeBank will accept it since the import UI is limited.
I also find that it is useful to track the database file under git.
I'm using CC for almost everything but there is still a lot that I miss because of random cash spendings.
However if it is a large cash amount (e.g. rent payment) then I will transfer from Asset:Bank to Asset:Cash before entering into Expenses:Rent.
I'm really interested in lived experience of using Gnucash vs, say Beancount or HLedger.
One of the main reasons I stick with Gnucash is the monolithic file format. If one day I need an accountant to review my finances, or if I suffer an audit by the tax man, I can send on the single .gnucash file with all my data. While Gnucash's UI is not the greatest, an accountant/auditor can easily install Gnucash and generate reports with only basic knowledge.
Another nice feature is the file linkage features, where I can directly link my payslip pdf files to the gnucash entries. I have folder structure on my GDrive with all of my stored bills, payslips etc. If required, I can zip up my Gnucash file and corresponding documents folder and the reviewer can instantly access important financial documentation from within the Gnucash application. Gnucash uses relative file paths for sourcing linked documents - all a reviewer has to do is specify the head directory and all the linked documents will open as usual. Correct me if I'm wrong, but I dont think this is a feature in the text-only approaches.
I unless I'm missing something, all those features are available to me now.
> If one day I need an accountant to review my finances, or if I suffer an audit by the tax man, I can send on the single .gnucash file with all my data.
I can do the same with a git repo, or a zipfile.
> an accountant/auditor can easily install Gnucash and generate reports with only basic knowledge.
I'm not sure I understand the advantage here. A professional could install beancount too, and run the same scripts I do. My real life experience is they don't actually want this level of depth.
> Another nice feature is the file linkage features, where I can directly link my payslip pdf files to the gnucash entries. I have folder structure on my GDrive with all of my stored bills, payslips etc.
You can link to external documents in Beancount and possibly the others and it's kept in the same archival system:
https://beancount.github.io/docs/beancount_language_syntax.h...
It looks like I'm not missing out?
1. I personally prefer graphical tools, especially when looking at a sea of numbers. I gravitated to GNUCash because, even if the tool felt crufty, it was still a lot easier to read/get started with than hledger.
2. I used GNUCash for a long time. GNUCash has a very cool autocomplete feature that actually makes it quite easy to enter in recurring transactions. Things like regular bills, income debits, etc are all trivially autocompletable.
3. GNUCash makes it really easy to generate reports. While hledger certainly is infinitely scriptable/manipulable, GNUCash has a much easier out-of-the-box experience to use.
The main thing that made me switch to hledger was the ease of autogenerating transactions into a plain-text format. My partner and I split many expenses and we often travel with friends so I split many things many ways. I also fund my parents to some extent and so I buy gifts/split transactions with my parents. GNUCash made recurring transactions easy but made it a lot harder to generate split transactions according to fixed splits that I regularly engage with my friends/family in.
With hledger I have a system of taking CSVs, classifying transactions using a stack of Python scripts and using them to generate hledger importable files. I go by hand and annotate transactions that my scripts couldn't classify/split, and then I import it into my main hledger file. I store all my inputs and intermediate imports in a git repository along with my main ledger file for auditability and to look at annotations. The ease of automation just can't be beat with PTA but it's definitely harder to use if you don't have a preference for TUI work.
Gnucash has a lot of cruft and definitely feels like it was written in 2003, but it does address this issue and provides the basic input validation you need to minimize errors.
The other issue with plain text accounting software is most of it only flags errors after you 'compile' your books (or, more properly, run them through some sort of command-line tool), which is far too late to make data entry convenient. (Some of them have web-based tools, like beancounts "fava" package, that act more like Gnucash...but at that point the term "plain text accounting" loses all meaning IMO, you're just using another client, so why not use a better one?
Which input validation do you get in gnucash that you don't get in e.g. hledger? Asking as a hledger user. So far I mostly have assertions every month about account balances, and of course hledger checks itself that transactions are balanced. I avoid duplicating accounts (say expenses:something:stuff and expenses:other_thing:stuff) using autocompletion.
Edit: phrasing
Free/open:
- Gnucash -- solid app: https://www.gnucash.org/
- Beancount -- Text based: https://beancount.github.io/docs/index.html
- Fava -- Web interface for Beancount: https://beancount.github.io/fava/
- Plain Text Accounting -- there are several apps with a similar approach: https://plaintextaccounting.org/
Others/Paid:
- You Need a Budget -- Popular a couple years back: https://www.youneedabudget.com/
- Moneydance -- https://moneydance.com/
- Lunch Money -- https://lunchmoney.app/
While their pricing has increased quite a bit (by now also for long time users coming from YNAB 4), for me it is worth every penny and better than anything else out there. I can't recommend it enough and I don't even get paid to write this comment.
Once you get everything dialed in you can almost run on auto-pilot (repeating transactions and goals are your friend). Could I drop YNAB and continue with my better financial behavior? Possibly, probably in the short-term for sure but I know I'd slowly drift until I was back where I was before starting YNAB. The yearly cost ($99/yr) is well worth the cost to keep me on the right track and notice early when I'm slipping.
This small amount of work lets me see down to the cent where I am spending money and track my net worth. It has a bit of a learning curve starting out, but I would really recommend trying it out.
It's also just a helpful way to track the growth of your net worth over time when you have multiple accounts, investments, etc. You may or may not take action based on what you find but it's good to know.
If you own a business or do work on the side where you are 1099'd then it makes it way easier to send your books to your accountant so they aren't asking for information.
This drive sorta came after using Beancount+Fava for a couple years and realizing Im the only one who could understand the accounting system and it'd suck if I needed to share it to family or start an organization with it.
Happy to hear if there's interest in such a thing. I'm the same guy that collaborated on bringing extensions to Fava a few years ago.
I have written https://github.com/dorfsmay/gnucash_general_journal and it help somehow but it still is a lot of work for them and can be confusing if they're not willing to spend the time on it + time they spend is money they charge me.
I plan to change this to output to OFX sheets separating the different accounts, hoping it helps.
I'm surprised there are no standard for accounting data and would love to hear from accountants what would help them importing data in their systems.
For the report you use, why don't you send a traditional general ledger and let them pivot it in excel by account (columns) and transaction number (rows)?
The main reason is anyone in my household whose spending can then add transactions. Further and more importantly, I can attach receipts to transactions. Given Google forms work on mobile I can literally take a photo and in a few clicks have everything added to my spreadsheet.
Another thing gnu cash helps me solve a lot easier than sheets is handling multiple currencies (I live in a country with its own currency but with part of the economy in USDs, notably cars and real estate, plus I earn in USD and some of my local purchases are done in local currency but using my US card). With gnu cash it’s dead simple to handle transactions and accounts in multiple currencies (I use 3), including having historical values available.
Not saying your method is wrong at all, of course, just wanted to offer the perspective from someone who apparently did the inverse migration you did.
I do keep track of incomes, expenses, and transfers. A bit complicated setup initially but not bad
One major limitation is that tracking cryptocurrencies without slow accrual of rounding errors is nigh impossible due to the precision limits set in place by Gnucash.
This of course is on top of the fact that Gnucash refuses to add support for adding additional currencies or commodities which requires tracking them like securities. The solution to this of course is to recompile Gnucash with the internal currency list modified but that breaks compatibility with all other Gnucash compatible apps unless you recompile those as well. And in general either workflow (recompiling or using the securities workflow) is just an unnecessary hassle to deal with when I want to track things other than cryptocurrencies like airline miles, cashback points, etc.
The other major issue I have is that the support for tracking price bases in multiple currencies is really not there yet. I'll likely be moving to another country in the next two years and I will need to be able to track gains across multiple currencies. Ultimately the difference will be small enough that it won't matter much for taxes but nonetheless I'd prefer to be able to maintain consistency in my books to the best of my ability.
I also just find the workflow for tracking unit prices to be clunky and awkward.
I found a post on the mailing list which describes this problem (and provides a solution). Can I ask for a reference of the refusal to better understand your concern?
I maintain a ledger with GNU Ledger; until now, I'd assumed hledger and GNU Ledger were basically at feature parity.
Can you not do something like this in hledger?
20 AAPL {$100.00} @ $151.28 ; [=2022-07-18]
After that I switched to MoneyMoney [1] which is just awesome to work with. It is mostly focused on the german market and directly supports import from most major german banks, sadly MacOS only.
It serves the power user/technically adept individual user, and the very simple corporate user (e.g. books for an entity that holds an investment property, personal consulting business) quite well, but think commercial software is the much better solution for basic individuals and SMBs+
For individuals with any sort of modest complexity double entry accounting is the only solution and it’s great at that.
Looks like this, and it really helps me plan:
https://preview.redd.it/908a4kg3ww931.jpg?width=879&format=p...
Here is another competitor promising this feature, would be great if Gnucash could do it somehow too:
(Also somewhat switched to ledger, but I still use KMyMoney for data entry and then run a script to convert the KMyMoney XML to Ledger).
[1] https://en.wikipedia.org/wiki/Boleto (roughly translating, a ticket)
There tends to be two main ways these aggregators interface with banks. The first is via screen-scraping or reverse-engineering internal APIs. The second is via direct integration (ie Oauth-type connections). Understandably, a lot of the HN-crew is skeptical of "handing over" their credentials to third parties, but for Oauth integrations, it's worth noting that:
- you're redirected to the bank to enter your credentials (ie the third party never gets a chance to see them)
- often, you get to choose which permissions to allow (ie read vs write, read only, which accounts)
- the banks have signed off on the integration
So even if you decide you're not comfortable with the screen-scrapes / internal APIs because you don't trust the aggregators, worth considering the direct ones.> Note this feature is considered experimental. It works for most of the common use cases but some corner cases have been reported to result in data loss. The GnuCash developers fix each issue as it gets reported. There is however no full test coverage so there may still be scenarios left that result in data loss.
Running a business is hard enough - I cannot imagine debugging my accounting tool.
Agree that as a business you would not want to take any chances. For my personal use I use SQL because that means I can use the piecash[1] library to interact with my financial data without relying on the official Python bindings (which aren't great to use).
Out of curiosity, was there anything about it that wasn't working?
When I got married I moved away from GNUCash because the interface was too intimidating...but I had been using the MySQL backend for a few years by then? and I don't recall any issues with it.
Still, highly recommend. Open-source, all platforms, polished, active development.
In the end it wasn't worth maintaining -- too much manual down;loading and entry. I need a system that can automatically pull the information from my banks and make it easy for me to massage the data as needed.
I'd love for "shortcuts" to include a statement hook. "Every month, copy most recent apple card statement, email to xyz@domain.tld". But the "wallet" section of the shortcuts app is basically empty.
Until then, I email myself apple card statements at the end of the month, takes maybe 5 minutes but it involves a lot of tapping.