hledger looks pretty amazing, but there are so many dependencies and updates with Haskell programs. Almost every other day I'm updating like 20 Haskell packages for hledger or pandoc when I run a system update. It isn't inherently bad, but never had this issue with a C or Go program.
Well, there's always ledger, the C++ program that HLedger was originally based on:
https://github.com/ledger/ledger
I used Ledger once upon a time, quite successfully! Worth a look.