I'm a hardcore command-line and keyboard-only power user, so I would have absolutely loved to have made Ledger work for me rather than use the mouse-heavy GnuCash interface, but couldn't, and went back to GnuCash with my tail between my legs.
I'd still rather use it, so maybe I'll give it another try some day.
As you imagine, the fact that it's text-only has been both a burden and a blessing.
Burdens:
- inserting transactions takes a long time, when you're starting out. will always take a long time if you never "automate"
- it's easy to make little mistakes and not catch it until the next time you compile or make a report.
blessings:
- git, sed, grep, awk all "work as advertised"
- you can automate the boring things, as they get more boring, and you can learn a lot along the way
at this stage, I have a combination of awk and python scripts (maybe 500 lines total, but a lot of it is regex) that convert my financial institutions' transaction export csvs into ledger transactions. I pretty much copy paste that into specific ledger files. The next step that I'm currently automating takes a concatenated `git diff` and interactively categorizes expenses/splits/assigns to the correct ledger file.
I also blew a ton of time (maybe 40 hours) on scraping those csvs from bank websites, workday, and fidelity (basically, a puppeteer script for logging in, downloading all the files available). Getting past google auth for workday was hard. But learning these things has been fun.
With all this automation, I spend maybe 20 minutes every weekend importing things over from the banks. I'd do it every month, but I'm still a control freak with it.
Doing this has been super fun! And it also has yielded a lot of insight into my finances. Above all, it gives me a feeling of "control" over my finances like no other. Itemizing deductions takes an hour, just as a throwaway example.
I switched from GnuCash to ledger about 8 years ago and never looked back.
I have a script that pulls my bank account using aqbanking [1] and icsv2ledger.py [2]. The latter can match transactions to templates and set transaction accounts and payees automatically. It also supports autocompletion of account names when a transaction is not matched by a template.
For cash entries, I use ledger-mode in Emacs. (I also use Org mode, so I spent a lot of time in Emacs anyway.) ledger-mode also supports autocompletion.
I only use the command line for reporting and have aliases for the most common reports. These mostly revolve about showing my current budget.
[1] https://wiki.gnucash.org/wiki/AqBanking [2] https://github.com/quentinsf/icsv2ledger
Fun fact: The second program I wrote was a database in Turbo Pascal to keep track of my loose change.
Not so fun fact: I lost my GnuCash files after I made the switch. Ten years of accounting gone. :(
Similar problem, except I use KMyMoney. I wrote a program to convert my KMY file to Ledger format. So I still enter transactions in KMyMoney but have the power of Ledger as well.
It's totally changed the way I think about finance, for my person and for businesses. It also means I can have very informed conversations with accountants! :)
Double-entry accounting as a domain is super interesting, and Ledger's intersection of that domain with UNIX hackery is a joy to experience.