After I wrote hledger, I got some good feedback, both from a friend in-person and also on Twitter.
My in-person friend asked, frankly, do I really try to manage money like this: tracking every single expense? Which affirms my suspicion, that many people don't, and that it perhaps isn't essential to do so.
Combined with the details below, 3/4 of the way through my experiment with
hledger, I'm not convinced that it has been a good idea.
I'm quoting my Twitter feedback here in order to respond. The context is handling when I have used the "wrong" card to pay for something: a card affiliated with my family expenses for something personal, or vice versa. With double-entry book-keeping, and one pair of transactions, the destination account can either record the expense category:
2022-08-20 coffee family:liabilities:creditcard £ -3 jon:expenses:coffee £ 3
or the fact it was paid for on the wrong card
2022-08-20 coffee family:liabilities:creditcard £ -3 family:liabilities:jon £ 3 ; jon owes family
but not easily both.
When you accidentally use the family CV for personal expenses, credit the account "family:liabilities:creditcard:jon" instead of "family:liabilities:creditcard". That'll allow you to track w/ 2 postings.
This is an interesting idea: create a sub-account underneath the credit card, and I would have a separate balance representing the money I owed. Before:
$ hledger bal -t £ -3 family:liabilities:creditcard £ 3 jon:expenses:coffee
2022-08-20 coffee family:liabilities:creditcard:jon £ -3 jon:expenses:coffee £ 3
$ hledger bal -t £ -3 family:liabilities:creditcard £ -3 jon £ 3 jon:expenses:coffee
Great. However, what process would clear the balance on that sub-account? In practice, I don't make a separate, explicit payment to the credit card from my personal accounts. It's paid off in full by direct debit from the family shared account. In practice, such dues are accumulated and settled with one off bank transfers, now and then.
Since the sub-account is still part of the credit card heirarchy, I can't just use a set of virtual postings to consolidate that value with other liabilities, or cover it. Any transaction in there which did not correspond to a real transaction on the credit card would make the balance drift away from the real-word credit statements. The only way I could see this working would be if the direct debit that settles the credit card was artificially split to clear the sub-account, and then the amount owed would be lost.
Else, add: family:assets:receivable:jon $3
A "receivable" account would function like the "dues" accounts I described in hledger (except "receivable" is an established account type in double-entry book-keeping). Here I think Pranesh is proposing using these two accounts in addition to the others on a posting. E.g.
2022-08-20 coffee family:liabilities:creditcard £ -3 jon:expenses:coffee £ 3 family:assets:receivable:jon £ 3 jon:liabilities:family £ -3
This balances, and we end up with two other accounts, which are tracking the exact same thing. I only owe £ 3, but if you didn't know that the accounts were "views" onto the same thing, you could mistakenly think I owed £ 6.
I can't see the advantage of this over just using a virtual, unbalanced posting.
I'd invented accounts called "dues" to track moneys owed. The more correct term for this in accounting parlance would be "accounts receivable", as in one of the examples above. I could instead be tracking moneys due; this is a classic liability. Liabilities have negative balances.
jon:liabilities:family £ -3
This means, I owe the family £ 3.
Liability accounts like that are identical to "dues" accounts. A positive balance in a Liability is a counter-intuitive way of describing moneys owed to me, rather than by me. And, reviewing a lot of the coding I did this year, I've got myself hopelessly confused with the signs, and made lots of errors. Crucially, double-entry has not protected me from making those mistakes: of course, I'm circumventing it by using unbalanced virtual postings in many cases (although I was not consistent in where I did this), but even if I used a pair of accounts as in the last example above, I could still screw it up.