The hledger package

[Tags: gpl, library, program]

hledger is a minimal haskell clone of John Wiegley's ledger text-based accounting tool (http:newartisans.comsoftwareledger.html). hledger generates ledger-compatible register & balance reports from a plain text ledger file, and demonstrates a functional implementation of ledger.

[Skip to ReadMe]


Versions0.1, 0.2, 0.3, 0.4, 0.5, 0.5.1, 0.6, 0.6.1, 0.7.0, 0.8, 0.9, 0.10, 0.11, 0.11.1, 0.12, 0.12.1, 0.13, 0.14, 0.15, 0.15.1, 0.15.2, 0.16, 0.16.1, 0.17, 0.18, 0.18.1, 0.18.2, 0.19, 0.19.1, 0.19.2, 0.19.3, 0.20,, 0.21, 0.21.1, 0.21.2, 0.21.3, 0.22, 0.22.1, 0.22.2, 0.23, 0.23.1, 0.23.2, 0.23.3, 0.24, 0.24.1, 0.25, 0.25.1, 0.26, 0.27
Change logNone available
Dependenciesbase, containers, directory, haskell98, HUnit, old-locale, parsec, regex-compat, time [details]
AuthorSimon Michael <>
MaintainerSimon Michael <>
Home page
UploadedSun Nov 23 22:18:28 UTC 2008 by SimonMichael
DistributionsDebian:0.26, Fedora:0.24, LTSHaskell:0.26, NixOS:0.27, Stackage:0.27
Downloads8820 total (269 in last 30 days)
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]




Maintainers' corner

For package maintainers and hackage trustees

Readme for hledger-0.2

hledger - a ledger-compatible text-based accounting tool

Welcome to hledger! 

hledger is a minimal haskell clone of John Wiegley's "ledger" text-based
accounting tool (  hledger
generates ledger-compatible register & balance reports from a plain text
ledger file, and demonstrates a functional implementation of ledger.  For
more information, see the hledger home page:

Copyright (c) 2007-2008 Simon Michael <>
Released under GPL version 3 or later.

In the hledger directory, do::

 cabal install


 runhaskell Setup.hs configure
 runhaskell Setup.hs build
 sudo runhaskell Setup.hs install 

Here are some commands to try::

 hledger --help
 hledger -f sample.ledger balance
 export LEDGER=sample.ledger
 hledger -s balance
 hledger register
 hledger reg cash
 hledger reg -- shop

This version of hledger mimics a subset of ledger 2.6.1:

- regular ledger entries
- multiple commodities
- virtual transactions
- balance, print, register commands
- positive and negative account & description patterns
- LEDGER environment variable
- and::

   Basic options:
   -h, --help             display summarized help text
   -v, --version          show version information
   -f, --file FILE        read ledger data from FILE
   Report filtering:
   -b, --begin DATE       set report begin date
   -e, --end DATE         set report end date
   -C, --cleared          consider only cleared transactions
   -R, --real             consider only real (non-virtual) transactions
   Output customization:
   -s, --subtotal         balance report: show sub-accounts
   -E, --empty            balance report: show accounts with zero balance
   -n, --collapse         balance report: no grand total
   Commodity reporting:
   -B, --basis, --cost    report cost basis of commodities

   balance  [REGEXP]...   show balance totals for matching accounts
   register [REGEXP]...   show register of matching transactions
   print    [REGEXP]...   print all matching entries

hledger-specific features:

   --depth=N              balance report: maximum account depth to show
   --cost                 alias for basis

ledger features not supported:

- !include
- modifier entries
- periodic entries
- commodity pricing
- counting an unfinished timelog session
- parsing gnucash files
- and::

   Basic options:
   -o, --output FILE      write output to FILE
   -i, --init-file FILE   initialize ledger using FILE (default: ~/.ledgerrc)
       --cache FILE       use FILE as a binary cache when --file is not used
       --no-cache         don't use a cache, even if it would be appropriate
   -a, --account NAME     use NAME for the default account (useful with QIF)
   Report filtering:
   -c, --current          show only current and past entries (not future)
   -p, --period STR       report using the given period
       --period-sort EXPR sort each report period's entries by EXPR
   -U, --uncleared        consider only uncleared transactions
   -L, --actual           consider only actual (non-automated) transactions
   -r, --related          calculate report using related transactions
       --budget           generate budget entries based on periodic entries
       --add-budget       show all transactions plus the budget
       --unbudgeted       show only unbudgeted transactions
       --forecast EXPR    generate forecast entries while EXPR is true
   -l, --limit EXPR       calculate only transactions matching EXPR
   -t, --amount EXPR      use EXPR to calculate the displayed amount
   -T, --total EXPR       use EXPR to calculate the displayed total
   Output customization:
   -n, --collapse         register: collapse entries
   -s, --subtotal         other: show subtotals
   -P, --by-payee         show summarized totals by payee
   -x, --comm-as-payee    set commodity name as the payee, for reporting
   -W, --weekly           show weekly sub-totals
   -M, --monthly          show monthly sub-totals
   -Y, --yearly           show yearly sub-totals
       --dow              show a days-of-the-week report
   -S, --sort EXPR        sort report according to the value expression EXPR
   -w, --wide             for the default register report, use 132 columns
       --head COUNT       show only the first COUNT entries (negative inverts)
       --tail COUNT       show only the last COUNT entries (negative inverts)
       --pager PAGER      send all output through the given PAGER program
   -A, --average          report average transaction amount
   -D, --deviation        report deviation from the average
   -%, --percentage       report balance totals as a percentile of the parent
       --totals           in the "xml" report, include running total
   -j, --amount-data      print only raw amount data (useful for scripting)
   -J, --total-data       print only raw total data
   -d, --display EXPR     display only transactions matching EXPR
   -y, --date-format STR  use STR as the date format (default: %Y/%m/%d)
   -F, --format STR       use STR as the format; for each report type, use:
       --balance-format      --register-format       --print-format
       --plot-amount-format  --plot-total-format     --equity-format
       --prices-format       --wide-register-format
   Commodity reporting:
       --price-db FILE    sets the price database to FILE (def: ~/.pricedb)
   -L, --price-exp MINS   download quotes only if newer than MINS (def: 1440)
   -Q, --download         download price information when needed
   -O, --quantity         report commodity totals (this is the default)
   -V, --market           report last known market value
   -g, --performance      report gain/loss for each displayed transaction
   -G, --gain             report net gain/loss
   xml      [REGEXP]...   print matching entries in XML format
   equity   [REGEXP]...   output equity entries for matching accounts
   prices   [REGEXP]...   display price history for matching commodities
   entry DATE PAYEE AMT   output a derived entry, based on the arguments

Some other differences:

- hledger talks about the entry and transaction "description", which ledger calls "note"
- hledger always shows timelog balances in hours
- hledger doesn't require a space after flags like -f
- hledger keeps differently-priced amounts of the same commodity separate, at the moment