This year I've decided to bite the bullet and properly try out hledger for personal accounting. It seems I need to commit to it properly if I'm to figure out whether it will work for me or not.
Up until now I'd been strictly separating my finances into two buckets: family and personal. I'd been using GNUCash for a couple of years for my personal finances, initially to evaluate it for use for the family, but I had not managed to adopt it for that.
I set up a new
git repository to track the ledger file, as well as a
notes.txt "diary" that documents my planning around its structure and how to
use it, and a
import.txt which documents what account data I have imported
and confirmed that the resulting balances match those reported on monthly
For this evaluation, I decided to bite the bullet and track both family and
personal finances at the same time. I'm still keeping them conceptually very
separate. To reflect that I've organised my account names around that: all
accounts relating to family are prefixed
family:, and likewise personal
jon:.1 Some example accounts:
family:assets:shared - shared bank account family:dues:jon - I owe to family family:expenses:cat - budget category for the cat income - where money enters this universe jon:assets:current - my personal account jon:dues:peter - money Peter owes me jon:expenses:snacks - budget category for coffees etc jon:liabilities:amex - a personal credit card
I decided to make the calendar year a strict cut-over point: my personal
opening balances in
hledger are determined by what GNUCash reports. It's
possible those will change over this year, as adjustments are made to last
year's data: but it's easy enough to go in and update the opening balances
hledger to reflect that.
Credit cards are a small exception. January's credit card bills are paid in
January but cover transactions from mid-December. I import those transactions
hledger to balance the credit card payment. As a consequence, the "spend
per month" view of my data is a bit skewed: All the transactions in December
should be thought of as in January since that's when they were paid. I need to
explore options to fix this.
When I had family and personal managed separately, occasionally something
would be paid for on the wrong card and end up in the wrong data. The solution
I used last year was to keep an account
dues:family to which I posted those
and periodically I'd settle it with a real-world bank transfer.
I've realised that this doesn't work so well when I manage both together: I can't track both dues and expense categorisation with just one posting. The solution I'm using for now is hledger's unbalanced virtual postings: a third posting for the transaction to the budget category, which is not balanced, e.g.:
2022-01-02 ZTL*RELISH family:liabilities:creditcard £ -3.00 family:dues:jon £ 3.00 (jon:expenses:snacks) £ 3.00
This works, but it completely side-steps double-entry book keeping, which is the whole point of using a double-entry system. There's also no check and balance that the figure I put in the virtual posting (£3) matches the figure in the rest of the transaction. I'm therefore open to other ideas.
there are a couple of places in
hledgerwhere default account names are used, such as the default place that expenses are posted to during CSV imports:
expenses:unknown, that obviously don't fit my
family/jon:prefix scheme. The solution is to make sure I specify a default posting-to account in all my CSV import rules.↩