Well done! I tried to do that with one source, but the pdf was cut into a lot of different parts that I had to piece back together to get all the information, and I ended up just doing it manually. At some point, I may revisit that.
I've never bothered to import transactions from my financial institution.
As far as manually adding, I do it the same day in almost all cases. Since I do so few transactions, it's quite easy to look at the receipt of the things I've purchased and get them added
from hledger stats:
Txns last 30 days : 51 (1.7 per day)
Txns last 7 days : 9 (1.3 per day)
I'm using homemade https://cashier-svelte.netlify.app/ (or previous versions cashier-ii.alensiljak.eu.org
and cashier.alensiljak.eu.org
) to enter transactions ASAP so I don't have to think of them.
Occasionally I reconcile the balances and add any missing transactions by checking the bank account transactions online or in an app.
Cashier helps me a lot to maintain scheduled transactions like income and monthly or annual bills.
I never import any transactions (other than what's exported from Cashier).
I use Emacs. I manually add transactions by writing a short snippet in a separate buffer and converting it to a hledger transaction, then append it to my hledger journal by using my own Elisp library.
For example, a snippet 20250107 food 500+700
will be converted to
20250107 food
Expenses:Groceries:Food 500 JPY
Liabilities:CreditCard
20250107 food
Expenses:Groceries:Food 700 JPY
Liabilities:CreditCard
The payee defaults to CreditCard
.
A more complicated one 20250107 food 5$=800JPY @bank ;an entry paid by creditcard
will be converted to
20250107 food ;an entry paid by creditcard
Expenses:Groceries:Food 5 $ @@ 800 JPY
Assets:Bank
The payee is assigned Bank
by using @
.
I also created a minor mode in the separate buffer to bind the Enter
key to quick insert the date and use abbrev-mode
or yasnippet
to expand some short templates into entries. So usually my workflow is:
- Press Enter in the separate buffer to insert today's date. I also have keybindings to backward and forward the day.
- Type a single char
f
, thenspace
key to expandf
intofood
- Write down the amount manually.
When there are enough snippet lines, I call the command to convert and append them to the journal one time.
It's pretty easy and doesn't take much time, so I do it several times a day.
Edit: update some details.
For importing PDFs I've used camelot GitHub - atlanhq/camelot: Camelot: PDF Table Extraction for Humans quite a bit and generally works pretty well if you have some python/programming skills.
Just noticed that it got archived yesterday, so looks like there isn't further development happening on it
Sorry, my mistake, development just got moved here GitHub - camelot-dev/camelot: A Python library to extract tabular data from PDFs