hledger-0.10: A command-line (or curses or web-based) double-entry accounting tool.Source codeContentsIndex

A ledger-compatible balance command.

ledger's balance command is easy to use but not easy to describe precisely. In the examples below we'll use sample.ledger, which has the following account tree:


The balance command shows accounts with their aggregate balances. Subaccounts are displayed indented below their parent. Each balance is the sum of any transactions in that account plus any balances from subaccounts:

 $ hledger -f sample.ledger balance
                 $-1  assets
                  $1    bank:saving
                 $-2    cash
                  $2  expenses
                  $1    food
                  $1    supplies
                 $-2  income
                 $-1    gifts
                 $-1    salary
                  $1  liabilities:debts

Usually, the non-interesting accounts are elided or omitted. Above, checking is omitted because it has no subaccounts and a zero balance. bank is elided because it has only a single displayed subaccount (saving) and it would be showing the same balance as that ($1). Ditto for liabilities. We will return to this in a moment.

The --depth argument can be used to limit the depth of the balance report. So, to see just the top level accounts:

$ hledger -f sample.ledger balance --depth 1
                 $-1  assets
                  $2  expenses
                 $-2  income
                  $1  liabilities

This time liabilities has no displayed subaccounts (due to --depth) and is not elided.

With one or more account pattern arguments, the balance command shows accounts whose name matches one of the patterns, plus their parents (elided) and subaccounts. So with the pattern o we get:

 $ hledger -f sample.ledger balance o
                  $1  expenses:food
                 $-2  income
                 $-1    gifts
                 $-1    salary

The o pattern matched food and income, so they are shown. Unmatched parents of matched accounts are also shown (elided) for context (expenses).

Also, the balance report shows the total of all displayed accounts, when that is non-zero. Here, it is displayed because the accounts shown add up to $-1.

Here is a more precise definition of "interesting" accounts in ledger's balance report:

  • an account which has just one interesting subaccount branch, and which is not at the report's maximum depth, is interesting if the balance is different from the subaccount's, and otherwise boring.
  • any other account is interesting if it has a non-zero balance, or the -E flag is used.
balance :: [Opt] -> [String] -> Journal -> IO ()
showBalanceReport :: [Opt] -> FilterSpec -> Journal -> String
showInterestingAccount :: Ledger -> [AccountName] -> AccountName -> String
isInteresting :: [Opt] -> Ledger -> AccountName -> Bool
balance :: [Opt] -> [String] -> Journal -> IO ()Source
Print a balance report.
showBalanceReport :: [Opt] -> FilterSpec -> Journal -> StringSource
Generate a balance report with the specified options for this ledger.
showInterestingAccount :: Ledger -> [AccountName] -> AccountName -> StringSource
Display one line of the balance report with appropriate indenting and eliding.
isInteresting :: [Opt] -> Ledger -> AccountName -> BoolSource
Is the named account considered interesting for this ledger's balance report ?
Produced by Haddock version 2.6.1