Reconciling
Reconciling means checking that the balances hledger reports agree with the real world: the cash in your wallet, the balance your bank shows, your credit card statement. It catches missing or mistyped transactions, and occasionally the bank’s own mistakes. It gets quick with practice and frequency: done daily or weekly it takes a few minutes; left for months it will mean spending a lot of time hunting for discrepancies. (See also hledger manual > Reconciling.)
A basic workflow
-
Pick an account and a date, and find its real-world balance on that date: count your cash, or read the balance from your bank’s website or statement.
-
Compare with hledger’s balance for that account on that date. The balance sheet report (
bs) shows asset and liability balances:$ hledger bs assets:checking -e 2026-02-01If you mark reconciled transactions as cleared (
*), compare just those, with-C:$ hledger bs assets:checking -C -
If they differ, find the cause. The account’s register, with running balance, is the tool for this; compare it line by line with the bank’s transaction list:
$ hledger aregister assets:checking -e 2026-02-01Or use hledger-ui, which shows a live-updating register while you edit the journal (in versions before 1.99.5, use the
--watchflag):$ hledger-ui --register assets:checkingUsually you will find a transaction that is missing, duplicated, or has a wrong amount or date. This is easier if you recorded transaction dates similar to the bank’s clearing dates.
-
If you can’t find the cause, record an adjustment transaction so the balances agree, and move on. Eg if your wallet has $105 but hledger says $107:
2026-01-16 * adjust cash assets:cash $-2 = $105 expenses:misc -
Record the reconciled balance as a balance assertion, so that hledger will report an error if anything later disturbs it. You can add
= BALANCEto the last posting in that account on that date, or add a separate assertion-only transaction:2026-01-31 checking statement balance assets:checking $0 = $1234.56 -
Optionally, mark the reconciled transactions cleared, by adding
*after their dates. Then-Creports show only what you have reconciled, and-U/-Pshow what you haven’t. -
Repeat for your other asset and liability accounts.
If your journal is under version control, this is a natural point to commit.
Tips
- Reconcile the accounts that matter most: your main bank accounts and credit cards. Cash can be approximate.
- Balance assertions from CSV: when importing from bank CSV, the
balancefield in your rules can generate an assertion from the bank’s running balance on every transaction, reconciling automatically as you import. hledger check recentassertionsreports any account with balance assertions that has no assertion within 7 days of its latest posting. Running it regularly (eg inhledger check -s, or a pre-commit hook) nudges you to keep reconciling.-I/--ignore-assertionstemporarily disables assertion checking, useful while reorganising old entries.