Some thoughts on establishing hledger habits. Also applicable to any plain text accounting. Read about it at https://hledgerfan.com/powerful-hledger/.
+1, excellent topic !
Similar thoughts at Tips for learning hledger.
Atomic Habits is one of the best known books on this. It has a nice official summary. Here's some discussion on Reddit.
The thing I took away (from skimming in the airport) is this:
How to create a good habit:
- The 1st law (Cue): Make it obvious.
- The 2nd law (Craving): Make it attractive.
- The 3rd law (Response): Make it easy.
- The 4th law (Reward): Make it satisfying.
That sounds pretty simple - start with one account.
I picked cash in my wallet. Now I have one account.
I bought a cup of coffee. Paid $4.36.
Now how do I create a journal entry
11/16/2025 Starbucks | Bought a cup of coffee
Cash -$4.36
(I only have one account!)
I’m stuck.
Seriously, I’m going to need some expenses to spend on and some way to refill my wallet.
Also, this syntax is kind of hard to remember. There must be a better way for a newby to add journal entries.
The docs mention starting with a balance for your accounts. In your case “wallet” would have a starting amount. then you can use that account to “balance” the transaction to zero.
I think what was meant was one real-world account - not literally one account name. So you'd balance the entries with equity:opening balances, expenses or whatever you like.
But it's possible to start simpler, with single-entry accounting:
2025-11-16 Starbucks | coffee
(Cash) $-4.36
2025-11-16 Farmer's market | greens
(Cash) $-10
Or a more compact notation:
cash.tsv:
2025-11-15 ATM 50
2025-11-16 Starbucks | coffee -4.36
2025-11-16 Farmer's market | greens -10
cash.tsv.rules:
fields date, description, amount_
account1 (assets:cash)
amount1 $%amount_
$ hledger -f cash.tsv bal -DH
Ending balances (historical) in 2025-11-15..2025-11-16:
|| 2025-11-15 2025-11-16
=============++========================
assets:cash || $50.00 $35.64
-------------++------------------------
|| $50.00 $35.64
There must be a better way for a newby to add journal entries.
@rdsteed, there's also some UIs, like hledger add (video) and hledger-web (video) ?
You have raised a good point concerning entering transactions. I like to use hledger add or hledger-iadd to ease data entry. Here is a tutorial for hledger add: https://hledger.org/add.html.
Rob
I saw virtual accounts mentioned in the documentation. That’s an interesting use case - single entry accounting. But honestly, the habit I want to develop is capturing all my transactions as double entry. And that means developing the habit of thinking about (at least) two accounts being affected by every transaction. (Everything should be made as simple as possible, but not simpler.)
As far as the user interfaces, how should I capture transactions on the go? I don’t think any of the hledger interfaces work on my phone (web might, but only if I have a signal). I think when it comes to spending cash, I’m reduced to entering a date, amount, and description with the other account(s) to be determined later based on the description. If I have double entry in mind, I can write a supporting description.
I like the suggestion of using a tsv file for capture. Or maybe a mobile spreadsheet that works in offline mode to get some formatting. Or maybe even paper. For every transaction, a piece of paper goes in my wallet when the bills come out.
I appreciate the Atomic Habits observation.
Mobile apps - hledger has the current phone app options.
In the past I have jotted transaction notes on the go, eg in obsidian which syncs to my laptop. Or on paper of course. A spreadsheet is a good idea. If you want to get fancy you could import CSV from a google sheet.