
GnuCash: Open-source double-entry accounting software - mNovak
https://www.gnucash.org/
======
Youden
I've been looking at the various open source accounting options recently and I
settled on Beancount:
[http://furius.ca/beancount/](http://furius.ca/beancount/)

~95% of the reason is the fantastic web interface Fava:
[https://beancount.github.io/fava/](https://beancount.github.io/fava/)

It's a bit annoying that you have to configure it with Python code but once
you set it up it's pleasant to use.

The pain point for me right now is figuring out the counterparty for
transactions (e.g. I can see that money went out of my bank account to pay the
grocery store but I need to map that to the "Expenses:Groceries" category). It
seems I need to use some kind of smart importer or something.

One application I thought got that part quite right was Buchhaltung (which
works with Ledger/hledger rather than Beancount):
[https://github.com/johannesgerer/buchhaltung](https://github.com/johannesgerer/buchhaltung).
It's matching system made that dead easy. Buchhaltung also comes with an
AqBanking integration if you live in a country where banks actually provide
useful APIs.

~~~
XorNot
I spent some time thinking about this problem recently (after also discovering
beancount) and kind of concluded that double-entry accounting doesn't really
work so well - as commonly explained - for individuals.

If you were a business for example, then your "expenses" would actually
represent things like business units and other managers and stuff - other
people handling money - which is basically what double-entry was invented to
manage. But there isn't a "Coffee" business unit for you - it's just a nominal
category and really more of a tag explaining why you were paying "Joe's Coffee
Cart Holding Inc." $3

My conclusion on this then is that what I really need is an extensive tagging
system to associate with transactions, because the actual "accounts" should
represent places money can actually go to or did go to - since in the event of
unexplained balances and the like, that's the type of thing I can actually
track down.

~~~
boronine
> the actual "accounts" should represent places money can actually go to or
> did go to

I'm not an accountant but I don't believe this is true. You can use accounts
for anything you like. I implement a simple tagging system on top of beancount
using accounts like Expenses:Food and it works just fine.

~~~
seltzered_
Agree, and if you don’t like the account naming changing it can be a simple
cut-and-replace ^h operation. Beancount also supports hashtags on transactions
if you need (e.g.for certain events like vacations)

(Plug: I helped add “extension reports” to Fava recently, so you can now also
make your own Jinja templates for your bespoke financial goals if
querying+custom links isn’t enough)

------
a254613e
Having tried a couple of different accounting/budgeting applications, this is
what I always end up coming back to. As it just works when it comes to keeping
track of finances.

However GnuCash really falls short if you have anything other than default
locale settings. Want US language and EU number/date formatting? Syncing that
across different OS'? GnuCash will probably struggle with it, you'll need to
sometimes set locale, sometimes `LC_MONETARY`, sometimes system regional
settings, sometimes all of it, and sometimes it still won't work.

I really wish they would move to a more user friendly settings system.

Also, the whole UI is extremely ugly, and the reports UI/UX could be better.
But at the end of the day as a whole package it's still a lot better than a
lot of alternatives, and more importantly it's not cloud based.

I hope that one day they'll rework the UI and perhaps adapt reporting,
portfolio, etc to be more like something you'd see in banktivity (scroll down
for screenshots)
[https://www.iggsoftware.com/banktivity/](https://www.iggsoftware.com/banktivity/)

~~~
mNovak
Yeah, I agree on reporting in particular--would be nice to make them easier to
modify

~~~
neilv
A few years ago, I managed to add a new report to GnuCash (specifically, an
invoice format requested by a consulting client), but it was difficult because
I couldn't find documentation on the application-specific APIs. The Scheme
part itself was easy and a great choice for this.

~~~
watsocd
I also looked into building a new report and did not succeed because of
documentation issues.

------
tarsinge
Slightly OT but if you want to get a basic understanding of double-entry
accounting in a few minutes I found this article really great:
[https://martin.kleppmann.com/2011/03/07/accounting-for-
compu...](https://martin.kleppmann.com/2011/03/07/accounting-for-computer-
scientists.html) (discussed here
[https://news.ycombinator.com/item?id=2298471](https://news.ycombinator.com/item?id=2298471))

~~~
ms013
The NPR planet money podcast also had an interesting episode from 2012 that
recently replayed that talked about the origins of the double entry accounting
scheme. Pretty interesting history that I didn’t know.

[https://www.npr.org/2019/05/15/723715402/episode-407-a-mathe...](https://www.npr.org/2019/05/15/723715402/episode-407-a-mathematician-
the-last-supper-and-the-birth-of-accounting)

~~~
chris_wot
Actually, I taught myself bookkeeping and accounting from the following:

[https://www.accountingcoach.com/accounting-
basics/explanatio...](https://www.accountingcoach.com/accounting-
basics/explanation)

~~~
majewsky
I used the GnuCash manual. It contains an extensive and (IMO) fairly
approachable introduction to double-entry accounting.

------
module0000
I've been using GnuCash to keep my consulting books for 10+ years now. It does
dual entry well, generates pretty invoices, and has never given me any
trouble. It's great software. Didn't expect to ever see it on the front page
of HN though...

~~~
nickjj
Here's a big discussion on it when I posted about it last year:
[https://news.ycombinator.com/item?id=16857884](https://news.ycombinator.com/item?id=16857884)

------
cVwEq
After doing accounting for my business, a medium-sized non-profit, and our
personal finances, I keep coming back to Microsoft Excel. Using someone else's
accounting software feels like trying to do an Iron Man with a straight
jacket. At least with Excel, you can code VBA/C#/formulas/etc. to your heart's
content and make it do exactly what you want. That's what I love about it.

Want to import bank data? Well, you DO have to export the CSV manually from
the bank, but then you can code something to make your financial reporting do
exactly what you want.

Need graphs or reporting? MS Excel, well, excels at that.

Want to munge the data in a special way? Easy to do with formulas, coding,
excel builts-ins, or some combination thereof.

Want to pre-process data before you suck it into a finances program? Write an
external munger that exports to a .txt file, and then link an Excel Data Range
to that .txt file.

I wonder sometimes if I have blinders on for choosing Excel, but hey, it
works. And since I like coding, it actually makes doing finances kinda fun.

~~~
orthecreedence
You're brave. I struggled with Excel for a year before giving up and moving to
Ledger/SQLite, which was a night and day difference (and I had an easier time
scripting).

If I was going to use Excel, I'd store the transactions in a real database and
export to Excel for reporting.

------
markstos
GnuCash has been around for over a decade-- why post it today? This isn't even
a link to a recent release announcement with notable new features. The last
release was back in March.

For personal finance on Linux, you may find Moneydance more user-friendly:
[http://moneydance.com/](http://moneydance.com/)

~~~
tytso
+1. I use MoneyDance as well; I especially like the Dropbox and Android
integration.

~~~
mNovak
Can you elaborate on the Dropbox bit? Couldn't you just stick the DB files in
a sync folder?

------
cocoa19
One of the biggest shortcomings is it doesn't download bank information
reliably. If you're lucky, your main bank supports OFX and the plugins work
for you. It doesn't work for me.

I've thought of starting an open source plaid alternative, scraping webpage
information, but dealing with sensitive information and the banks changing
undocumented interfaces have scared me away.

~~~
e40
Yep, loss of OFX was the impetus for me to finally leave Capital One. They
gave me the runaround for a week then admitted they turned off OFX, after
trying to blame my software (Moneydance, which I highly recommend).

~~~
aaronkaplan
Where did you go? It's hard to find any US bank that supports it any more, let
alone one with decent interest rates.

~~~
e40
USAA. Chase does, too, though I only use them for credit credit cards. Citi
the same. I also know that E*Trade and Schwab do.

For USAA you need a military angle to get in. My dad served in the Army, so
that was enough. If you have any close relatives that have served, you can get
an account.

------
rodolphoarruda
Somebody should step ahead and create a "cloud version" of it that would allow
multiple users to collaborate from their desktop installed GnuCash. It's just
an idea from an old user.

~~~
vitoc
With Prudent, you can combine multiple ledger journals from different users
(maybe share the journal text files via Git) and obtain aggregated financial
reports based on the combined ledgers.

[https://prudent.me](https://prudent.me)

~~~
rodolphoarruda
I use Linux, so Prudent is not an option. And even considering its workflow,
it would be impossible for my users to adopt it. I have a retail business in
which I employ non-tech people.

But I appreciate your suggestion anyway. I think Prudent looks very elegant
from a UI perspective -- 100x more elegant than GnuCash, for example. And it
ended up stimulating me to think about a possible text/command-line based
financial solution for SMEs. That would be great in many ways. For example,
imagine something like IntelliSense working on top of a workflow.

>Create expense of $39.99 paid to Staples on 6/1/2019

>Show me expenses this month

Well, I believe design and implementation of such solution would be enormous
given all the processes and situations that would have to be covered and
forethought, but the end result would give so much agility to end users that I
believe it would compensate the effort.

------
watsocd
I have been using GnuCash for about three years after Quickbooks Online
substantially raised their rates. It's a great free alternative for a one
person company.

I would not want to use it for personal finances though. As others have said,
it can be difficult to navigate.

~~~
nicolaslem
I do the exact opposite: I keep my personal finances in GnuCash and I
absolutely love it. It really changed the way I perceive and spend money. It
took me about a day of learning basic accounting and watching Youtube videos
before being comfortable with the software.

But I do the accounting for my company using a SaaS because it knows
everything about local tax laws (deadlines, online filling...).

------
Wehrdo
I got my Dad set up using GnuCash several years ago when I transitioned him
from using an ancient version of Quicken on Windows 3.1. He's in his 70s and
uses it to manage his small business finances. Although the dense menus can
make it hard to find what he's looking for (and for me to help him), he's been
pretty happy using it for just basic accounting and creating monthly/yearly
reports. Good to see that it's still being developed.

------
jotakami
Switched to GnuCash about four years ago after Quicken forced me to pay for a
new version of their software. I have _very_ complicated personal finances
(churning, crypto trading, etc.) and double-entry is the only possible way to
keep an accurate account of my cash flow and net worth.

~~~
orthecreedence
What were some of your favorite resources for learning it? I've tried a few
times to sit down and learn it, but always ended giving up because some of the
things I thought should be easy were just so obtuse.

------
juice_bus
I had issues with the save files corrupting them selves, and it happened so
often that I had to stop using it. I suspect it was me inputing an invalid
date or something but it was quite frustrating to come back after a day, or
week and have progress wiped out.

While it was working, i loved it.

------
osrec
If you need some good, free bookkeeping software, try
[https://usebx.com](https://usebx.com) \- it's designed to be clean and
simple, and works on any device!

------
vasili111
Overall it is good software but it needs "Undo/Redo" feature.

~~~
pugworthy
I'm curious under what situations you'd use Undo/Redo.

I would think that anything related to transaction records specifically should
not have an "undo" feature, or if it does, it is recorded as part of the
transaction.

It's a silly scenario perhaps, but I'd not want to pay someone, record the
transaction, then "undo" that I had payed them.

~~~
BeetleB
It's not that hard to come up with scenarios.

1\. Accidentally deleting an old transaction

2\. Accidentally modifying the value of an old transaction (and not realizing
_which_ transaction)

3\. Accidentally overwriting the payee/notes of the transaction.

The list could get very long, but basically: "Accidentally" anything. I think
it's even more likely if you are dealing with downloaded transactions.

It's happened a number of times that I am entering perhaps 10 transactions
into it, and I screw something up. My only option is to quit and restart
everything.

~~~
groby_b
In any decent accounting system, you cannot accidentally modify _anything_
after it's written. It's a log system, you can only append.

If gnucash doesn't do that, I'd consider it disqualified for any kind of
accounting.

~~~
BeetleB
Not an accountant, but that would suck more than not having undo.

Real accountants may be very diligent. The average user (even tech user) is
going to make tons of mistakes while entering data. I've often found when
reconciling accounts that I put a transaction in the wrong account and I fix
it.

~~~
groby_b
You can still do that. It's just a move from one account to the other. "Undo"
is booking the transaction in reverse.

It's fine if that's automated, the point is that it's recorded in the first
place.

(OK, I misspent my youth as an assistant to an accountant. With actual hand-
written ledger books. Maybe I _am_ super-picky about these things :)

------
hesk
Ah, personal finance tracking. One of the first programs I wrote as a teenager
was to track my expenses. It was written in Turbo Pascal and only had room for
10 entries per month. Then I found GnuCash and even later ledger-cli.
Unfortunately, I lost about 10 years of my GnuCash files when moving data from
one notebook to another. I searched old backups but the data is gone. It would
be interesting to run some queries over the data.

~~~
jhoechtl
> It was written in Turbo Pascal and only had room for 10 entries per month.

Sounds like back in the days you were not aware about dynamic allocation and
only had record[10] some fond memories

------
wiradikusuma
I've used GnuCash, but the UI is very ugly (programmer design—disclaimer: I'm
a programmer) and it doesn't work over the web.

At the moment I use waveapps.com. It's not open source, but it's free. From
the outside, it looks like it's for businesses, but once you create an
account, on the top-left you can toggle between business and personal!

------
7532yahoogmail
Do any of these systems allow mass import w/ file attachments eg scanned
receipts?

------
klingonopera
Is anyone using this in Germany? Is there anything in the program that can be
automated?

EDIT: Apart from that, AMA using GnuCash with SKR03.

------
faitswulff
Does anyone know of any free/open source software that calculates compounding
interest on accounts?

~~~
stevezsa8
Any spreadsheet software will do this. =money_in_account*(interest_rate/12)

I would advise to start with a spreadsheet and then move to custom accounting
software after you are used to keeping track of numbers.

~~~
faitswulff
Hmm, I suppose spreadsheets would work, but I'd like if there was something
with a friendlier interface for seeing how much someone owes me after a
certain time, and with partial payments.

------
nerd7473
I use GNU Cash all the time! It's simple and does what you tell it to :)

