2847 lines
		
	
	
		
			120 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			2847 lines
		
	
	
		
			120 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
 | |
| hledger(1)                   hledger User Manuals                   hledger(1)
 | |
| 
 | |
| 
 | |
| 
 | |
| NAME
 | |
|        hledger - a command-line accounting tool
 | |
| 
 | |
| SYNOPSIS
 | |
|        hledger [-f FILE] COMMAND [OPTIONS] [ARGS]
 | |
|        hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]
 | |
|        hledger
 | |
| 
 | |
| DESCRIPTION
 | |
|        hledger  is  a  reliable,  cross-platform  set of programs for tracking
 | |
|        money, time, or any other commodity, using double-entry accounting  and
 | |
|        a  simple,  editable  file  format.  hledger is inspired by and largely
 | |
|        compatible with ledger(1).
 | |
| 
 | |
|        This is hledger's command-line interface (there are also  terminal  and
 | |
|        web  interfaces).   Its basic function is to read a plain text file de-
 | |
|        scribing financial transactions (in accounting terms, a  general  jour-
 | |
|        nal)  and  print  useful  reports on standard output, or export them as
 | |
|        CSV.  hledger can also read some other file formats such as CSV  files,
 | |
|        translating  them to journal format.  Additionally, hledger lists other
 | |
|        hledger-* executables found in the user's $PATH and can invoke them  as
 | |
|        subcommands.
 | |
| 
 | |
|        hledger  reads  data  from  one or more files in hledger journal, time-
 | |
|        clock, timedot, or CSV format specified with -f,  or  $LEDGER_FILE,  or
 | |
|        $HOME/.hledger.journal           (on          windows,          perhaps
 | |
|        C:/Users/USER/.hledger.journal).  If using $LEDGER_FILE, note this must
 | |
|        be  a real environment variable, not a shell variable.  You can specify
 | |
|        standard input with -f-.
 | |
| 
 | |
|        Transactions are dated movements of money between two (or  more)  named
 | |
|        accounts, and are recorded with journal entries like this:
 | |
| 
 | |
|               2015/10/16 bought food
 | |
|                expenses:food          $10
 | |
|                assets:cash
 | |
| 
 | |
|        For more about this format, see hledger_journal(5).
 | |
| 
 | |
|        Most  users use a text editor to edit the journal, usually with an edi-
 | |
|        tor mode such as ledger-mode for added convenience.  hledger's interac-
 | |
|        tive  add  command  is another way to record new transactions.  hledger
 | |
|        never changes existing transactions.
 | |
| 
 | |
|        To get started, you can either save some  entries  like  the  above  in
 | |
|        ~/.hledger.journal,  or  run  hledger add and follow the prompts.  Then
 | |
|        try some commands like hledger print or hledger balance.   Run  hledger
 | |
|        with no arguments for a list of commands.
 | |
| 
 | |
| EXAMPLES
 | |
|        Two simple transactions in hledger journal format:
 | |
| 
 | |
|               2015/9/30 gift received
 | |
|                 assets:cash   $20
 | |
|                 income:gifts
 | |
| 
 | |
|               2015/10/16 farmers market
 | |
|                 expenses:food    $10
 | |
|                 assets:cash
 | |
| 
 | |
|        Some basic reports:
 | |
| 
 | |
|               $ hledger print
 | |
|               2015-09-30 gift received
 | |
|                   assets:cash            $20
 | |
|                   income:gifts          $-20
 | |
| 
 | |
|               2015-10-16 farmers market
 | |
|                   expenses:food           $10
 | |
|                   assets:cash            $-10
 | |
| 
 | |
|               $ hledger accounts --tree
 | |
|               assets
 | |
|                 cash
 | |
|               expenses
 | |
|                 food
 | |
|               income
 | |
|                 gifts
 | |
| 
 | |
|               $ hledger balance
 | |
|                                $10  assets:cash
 | |
|                                $10  expenses:food
 | |
|                               $-20  income:gifts
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|               $ hledger register cash
 | |
|               2015-09-30 gift received   assets:cash               $20           $20
 | |
|               2015-10-16 farmers market  assets:cash              $-10           $10
 | |
| 
 | |
|        More commands:
 | |
| 
 | |
|               $ hledger                                 # show available commands
 | |
|               $ hledger add                             # add more transactions to the journal file
 | |
|               $ hledger balance                         # all accounts with aggregated balances
 | |
|               $ hledger balance --help                  # show detailed help for balance command
 | |
|               $ hledger balance --depth 1               # only top-level accounts
 | |
|               $ hledger register                        # show account postings, with running total
 | |
|               $ hledger reg income                      # show postings to/from income accounts
 | |
|               $ hledger reg 'assets:some bank:checking' # show postings to/from this checking account
 | |
|               $ hledger print desc:shop                 # show transactions with shop in the description
 | |
|               $ hledger activity -W                     # show transaction counts per week as a bar chart
 | |
| 
 | |
| OPTIONS
 | |
|    General options
 | |
|        To  see  general  usage  help, including general options which are sup-
 | |
|        ported by most hledger commands, run hledger -h.
 | |
| 
 | |
|        General help options:
 | |
| 
 | |
|        -h --help
 | |
|               show general usage (or after COMMAND, command usage)
 | |
| 
 | |
|        --version
 | |
|               show version
 | |
| 
 | |
|        --debug[=N]
 | |
|               show debug output (levels 1-9, default: 1)
 | |
| 
 | |
|        General input options:
 | |
| 
 | |
|        -f FILE --file=FILE
 | |
|               use  a  different  input  file.   For  stdin,  use  -  (default:
 | |
|               $LEDGER_FILE or $HOME/.hledger.journal)
 | |
| 
 | |
|        --rules-file=RULESFILE
 | |
|               Conversion   rules  file  to  use  when  reading  CSV  (default:
 | |
|               FILE.rules)
 | |
| 
 | |
|        --separator=CHAR
 | |
|               Field separator to expect when reading CSV (default: ',')
 | |
| 
 | |
|        --alias=OLD=NEW
 | |
|               rename accounts named OLD to NEW
 | |
| 
 | |
|        --anon anonymize accounts and payees
 | |
| 
 | |
|        --pivot FIELDNAME
 | |
|               use some other field or tag for the account name
 | |
| 
 | |
|        -I --ignore-assertions
 | |
|               disable balance assertion checks (note: does not disable balance
 | |
|               assignments)
 | |
| 
 | |
|        General reporting options:
 | |
| 
 | |
|        -b --begin=DATE
 | |
|               include postings/txns on or after this date
 | |
| 
 | |
|        -e --end=DATE
 | |
|               include postings/txns before this date
 | |
| 
 | |
|        -D --daily
 | |
|               multiperiod/multicolumn report by day
 | |
| 
 | |
|        -W --weekly
 | |
|               multiperiod/multicolumn report by week
 | |
| 
 | |
|        -M --monthly
 | |
|               multiperiod/multicolumn report by month
 | |
| 
 | |
|        -Q --quarterly
 | |
|               multiperiod/multicolumn report by quarter
 | |
| 
 | |
|        -Y --yearly
 | |
|               multiperiod/multicolumn report by year
 | |
| 
 | |
|        -p --period=PERIODEXP
 | |
|               set  start date, end date, and/or reporting interval all at once
 | |
|               using period expressions syntax
 | |
| 
 | |
|        --date2
 | |
|               match the secondary date instead (see command help for other ef-
 | |
|               fects)
 | |
| 
 | |
|        -U --unmarked
 | |
|               include only unmarked postings/txns (can combine with -P or -C)
 | |
| 
 | |
|        -P --pending
 | |
|               include only pending postings/txns
 | |
| 
 | |
|        -C --cleared
 | |
|               include only cleared postings/txns
 | |
| 
 | |
|        -R --real
 | |
|               include only non-virtual postings
 | |
| 
 | |
|        -NUM --depth=NUM
 | |
|               hide/aggregate accounts or postings more than NUM levels deep
 | |
| 
 | |
|        -E --empty
 | |
|               show  items with zero amount, normally hidden (and vice-versa in
 | |
|               hledger-ui/hledger-web)
 | |
| 
 | |
|        -B --cost
 | |
|               convert amounts to their cost at  transaction  time  (using  the
 | |
|               transaction price, if any)
 | |
| 
 | |
|        -V --value
 | |
|               convert  amounts  to  their  market value on the report end date
 | |
|               (using the most recent applicable market price, if any)
 | |
| 
 | |
|        --auto apply automated posting rules to modify transactions.
 | |
| 
 | |
|        --forecast
 | |
|               apply periodic transaction rules  to  generate  future  transac-
 | |
|               tions, to 6 months from now or report end date.
 | |
| 
 | |
|        When a reporting option appears more than once in the command line, the
 | |
|        last one takes precedence.
 | |
| 
 | |
|        Some reporting options can also be written as query arguments.
 | |
| 
 | |
|    Command options
 | |
|        To see options for a particular command, including command-specific op-
 | |
|        tions, run: hledger COMMAND -h.
 | |
| 
 | |
|        Command-specific  options  must  be written after the command name, eg:
 | |
|        hledger print -x.
 | |
| 
 | |
|        Additionally, if the command is an addon, you may need to put  its  op-
 | |
|        tions  after  a  double-hyphen, eg: hledger ui -- --watch.  Or, you can
 | |
|        run the addon executable directly: hledger-ui --watch.
 | |
| 
 | |
|    Command arguments
 | |
|        Most hledger commands accept arguments after the  command  name,  which
 | |
|        are often a query, filtering the data in some way.
 | |
| 
 | |
|    Argument files
 | |
|        You  can  save  a  set of command line options/arguments in a file, and
 | |
|        then reuse them by writing @FILENAME as a command line  argument.   Eg:
 | |
|        hledger  bal  @foo.args.   (To prevent this, eg if you have an argument
 | |
|        that begins with a literal @, precede it with --, eg:  hledger  bal  --
 | |
|        @ARG).
 | |
| 
 | |
|        Inside  the  argument file, each line should contain just one option or
 | |
|        argument.  Avoid the use of spaces, except inside quotes (or you'll see
 | |
|        a  confusing  error).  Between a flag and its argument, use = (or noth-
 | |
|        ing).  Bad:
 | |
| 
 | |
|               assets depth:2
 | |
|               -X USD
 | |
| 
 | |
|        Good:
 | |
| 
 | |
|               assets
 | |
|               depth:2
 | |
|               -X=USD
 | |
| 
 | |
|        For special characters (see below), use one less level of quoting  than
 | |
|        you would at the command prompt.  Bad:
 | |
| 
 | |
|               -X"$"
 | |
| 
 | |
|        Good:
 | |
| 
 | |
|               -X$
 | |
| 
 | |
|        See also: Save frequently used options.
 | |
| 
 | |
|    Special characters in arguments and queries
 | |
|        In shell command lines, option and argument values which contain "prob-
 | |
|        lematic" characters, ie spaces, and also characters significant to your
 | |
|        shell  such as <, >, (, ), | and $, should be escaped by enclosing them
 | |
|        in quotes or by writing backslashes before the characters.  Eg:
 | |
| 
 | |
|        hledger  register  -p  'last  year'   "accounts   receivable   (receiv-
 | |
|        able|payable)" amt:\>100.
 | |
| 
 | |
|    More escaping
 | |
|        Characters significant both to the shell and in regular expressions may
 | |
|        need one extra level of escaping.  These include parentheses, the  pipe
 | |
|        symbol and the dollar sign.  Eg, to match the dollar symbol, bash users
 | |
|        should do:
 | |
| 
 | |
|        hledger balance cur:'\$'
 | |
| 
 | |
|        or:
 | |
| 
 | |
|        hledger balance cur:\\$
 | |
| 
 | |
|    Even more escaping
 | |
|        When hledger runs an addon executable (eg you type hledger ui,  hledger
 | |
|        runs  hledger-ui),  it  de-escapes  command-line  options and arguments
 | |
|        once, so you might need to triple-escape.  Eg in bash, running  the  ui
 | |
|        command and matching the dollar sign, it's:
 | |
| 
 | |
|        hledger ui cur:'\\$'
 | |
| 
 | |
|        or:
 | |
| 
 | |
|        hledger ui cur:\\\\$
 | |
| 
 | |
|        If you asked why four slashes above, this may help:
 | |
| 
 | |
|        unescaped:        $
 | |
|        escaped:          \$
 | |
|        double-escaped:   \\$
 | |
|        triple-escaped:   \\\\$
 | |
| 
 | |
|        (The number of backslashes in fish shell is left as an exercise for the
 | |
|        reader.)
 | |
| 
 | |
|        You can always avoid the extra escaping for addons by running the addon
 | |
|        directly:
 | |
| 
 | |
|        hledger-ui cur:\\$
 | |
| 
 | |
|    Less escaping
 | |
|        Inside  an  argument  file,  or  in  the  search field of hledger-ui or
 | |
|        hledger-web, or at a GHCI prompt, you need one less level  of  escaping
 | |
|        than at the command line.  And backslashes may work better than quotes.
 | |
|        Eg:
 | |
| 
 | |
|        ghci> :main balance cur:\$
 | |
| 
 | |
|    Command line tips
 | |
|        If in doubt, keep things simple:
 | |
| 
 | |
|        o write options after the command (hledger CMD -OPTIONS ARGS)
 | |
| 
 | |
|        o run add-on executables directly (hledger-ui -OPTIONS ARGS)
 | |
| 
 | |
|        o enclose problematic args in single quotes
 | |
| 
 | |
|        o if needed, also add a backslash to escape regexp metacharacters
 | |
| 
 | |
|        To find out exactly how a command line is being parsed,  add  --debug=2
 | |
|        to troubleshoot.
 | |
| 
 | |
|    Unicode characters
 | |
|        hledger is expected to handle non-ascii characters correctly:
 | |
| 
 | |
|        o they  should  be  parsed  correctly in input files and on the command
 | |
|          line, by all hledger tools (add, iadd, hledger-web's  search/add/edit
 | |
|          forms, etc.)
 | |
| 
 | |
|        o they  should  be  displayed  correctly  by all hledger tools, and on-
 | |
|          screen alignment should be preserved.
 | |
| 
 | |
|        This requires a well-configured environment.  Here are some tips:
 | |
| 
 | |
|        o A system locale must be configured, and it must be one that  can  de-
 | |
|          code  the  characters being used.  In bash, you can set a locale like
 | |
|          this: export LANG=en_US.UTF-8.  There are some more details in  Trou-
 | |
|          bleshooting.   This step is essential - without it, hledger will quit
 | |
|          on encountering a non-ascii character (as with all GHC-compiled  pro-
 | |
|          grams).
 | |
| 
 | |
|        o your  terminal  software  (eg  Terminal.app, iTerm, CMD.exe, xterm..)
 | |
|          must support unicode
 | |
| 
 | |
|        o the terminal must be using a font which includes the required unicode
 | |
|          glyphs
 | |
| 
 | |
|        o the  terminal should be configured to display wide characters as dou-
 | |
|          ble width (for report alignment)
 | |
| 
 | |
|        o on Windows, for best results you should run hledger in the same  kind
 | |
|          of  environment in which it was built.  Eg hledger built in the stan-
 | |
|          dard CMD.EXE environment (like the binaries  on  our  download  page)
 | |
|          might  show  display  problems when run in a cygwin or msys terminal,
 | |
|          and vice versa.  (See eg #961).
 | |
| 
 | |
|    Input files
 | |
|        hledger reads transactions from a data file (and the add command writes
 | |
|        to it).  By default this file is $HOME/.hledger.journal (or on Windows,
 | |
|        something like C:/Users/USER/.hledger.journal).  You can override  this
 | |
|        with the $LEDGER_FILE environment variable:
 | |
| 
 | |
|               $ setenv LEDGER_FILE ~/finance/2016.journal
 | |
|               $ hledger stats
 | |
| 
 | |
|        or with the -f/--file option:
 | |
| 
 | |
|               $ hledger -f /some/file stats
 | |
| 
 | |
|        The file name - (hyphen) means standard input:
 | |
| 
 | |
|               $ cat some.journal | hledger -f-
 | |
| 
 | |
|        Usually  the  data file is in hledger's journal format, but it can also
 | |
|        be one of several other formats, listed  below.   hledger  detects  the
 | |
|        format  automatically  based  on  the file extension, or if that is not
 | |
|        recognised, by trying each built-in "reader" in turn:
 | |
| 
 | |
|        Reader:    Reads:                            Used for file extensions:
 | |
|        -----------------------------------------------------------------------------
 | |
|        journal    hledger's journal format,  also   .journal .j .hledger .ledger
 | |
|                   some Ledger journals
 | |
|        time-      timeclock files  (precise  time   .timeclock
 | |
|        clock      logging)
 | |
|        timedot    timedot files (approximate time   .timedot
 | |
|                   logging)
 | |
|        csv        comma-separated  values   (data   .csv
 | |
|                   interchange)
 | |
| 
 | |
|        If  needed  (eg  to  ensure  correct error messages when a file has the
 | |
|        "wrong" extension), you can force a specific reader/format by  prepend-
 | |
|        ing it to the file path with a colon.  Examples:
 | |
| 
 | |
|               $ hledger -f csv:/some/csv-file.dat stats
 | |
|               $ echo 'i 2009/13/1 08:00:00' | hledger print -ftimeclock:-
 | |
| 
 | |
|        You can also specify multiple -f options, to read multiple files as one
 | |
|        big journal.  There are some limitations with this:
 | |
| 
 | |
|        o directives in one file will not affect the other files
 | |
| 
 | |
|        o balance assertions will not see any account  balances  from  previous
 | |
|          files
 | |
| 
 | |
|        If you need those, either use the include directive, or concatenate the
 | |
|        files, eg: cat a.journal b.journal | hledger -f- CMD.
 | |
| 
 | |
|    Smart dates
 | |
|        hledger's user interfaces accept a flexible "smart date" syntax (unlike
 | |
|        dates  in the journal file).  Smart dates allow some english words, can
 | |
|        be relative to today's date, and can have less-significant  date  parts
 | |
|        omitted (defaulting to 1).
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|        2004/10/1,     2004-01-01,   exact date, several  sepa-
 | |
|        2004.9.1                     rators  allowed.   Year is
 | |
|                                     4+ digits, month is  1-12,
 | |
|                                     day is 1-31
 | |
|        2004                         start of year
 | |
|        2004/10                      start of month
 | |
|        10/1                         month  and  day in current
 | |
|                                     year
 | |
|        21                           day in current month
 | |
|        october, oct                 start of month in  current
 | |
|                                     year
 | |
|        yesterday, today, tomorrow   -1, 0, 1 days from today
 | |
|        last/this/next               -1,  0, 1 periods from the
 | |
|        day/week/month/quar-         current period
 | |
|        ter/year
 | |
|        20181201                     8  digit   YYYYMMDD   with
 | |
|                                     valid year month and day
 | |
|        201812                       6  digit YYYYMM with valid
 | |
|                                     year and month
 | |
| 
 | |
|        Counterexamples - malformed digit sequences might give  surprising  re-
 | |
|        sults:
 | |
| 
 | |
|        201813      6  digits  with an invalid
 | |
|                    month is parsed  as  start
 | |
|                    of 6-digit year
 | |
|        20181301    8  digits  with an invalid
 | |
|                    month is parsed  as  start
 | |
|                    of 8-digit year
 | |
|        20181232    8  digits  with an invalid
 | |
|                    day gives an error
 | |
|        201801012   9+ digits beginning with a
 | |
|                    valid  YYYYMMDD  gives  an
 | |
|                    error
 | |
| 
 | |
|    Report start & end date
 | |
|        Most hledger reports show the full span  of  time  represented  by  the
 | |
|        journal data, by default.  So, the effective report start and end dates
 | |
|        will be the earliest and latest transaction or posting dates  found  in
 | |
|        the journal.
 | |
| 
 | |
|        Often  you  will  want  to see a shorter time span, such as the current
 | |
|        month.  You can specify a  start  and/or  end  date  using  -b/--begin,
 | |
|        -e/--end, -p/--period or a date: query (described below).  All of these
 | |
|        accept the smart date syntax.
 | |
| 
 | |
|        Some notes:
 | |
| 
 | |
|        o As in Ledger, end dates are exclusive, so you need to write the  date
 | |
|          after the last day you want to include.
 | |
| 
 | |
|        o As  noted  in reporting options: among start/end dates specified with
 | |
|          options, the last (i.e.  right-most) option takes precedence.
 | |
| 
 | |
|        o The effective report start and end dates are the intersection of  the
 | |
|          start/end  dates  from options and that from date: queries.  That is,
 | |
|          date:2019-01 date:2019 -p'2000 to  2030'  yields  January  2019,  the
 | |
|          smallest common time span.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|        -b 2016/3/17      begin  on  St.   Patrick's
 | |
|                          day 2016
 | |
|        -e 12/1           end at the start of decem-
 | |
|                          ber  1st  of  the  current
 | |
|                          year (11/30  will  be  the
 | |
|                          last date included)
 | |
|        -b thismonth      all transactions on or af-
 | |
|                          ter the 1st of the current
 | |
|                          month
 | |
|        -p thismonth      all  transactions  in  the
 | |
|                          current month
 | |
|        date:2016/3/17-   the   above   written   as
 | |
|                          queries instead
 | |
|        date:-12/1
 | |
|        date:thismonth-
 | |
|        date:thismonth
 | |
| 
 | |
|    Report intervals
 | |
|        A report interval can be specified so that commands like register, bal-
 | |
|        ance and activity will divide their reports into  multiple  subperiods.
 | |
|        The   basic   intervals   can  be  selected  with  one  of  -D/--daily,
 | |
|        -W/--weekly, -M/--monthly, -Q/--quarterly, or -Y/--yearly.   More  com-
 | |
|        plex  intervals  may be specified with a period expression.  Report in-
 | |
|        tervals can not be specified with a query.
 | |
| 
 | |
|    Period expressions
 | |
|        The -p/--period option accepts period expressions, a shorthand  way  of
 | |
|        expressing a start date, end date, and/or report interval all at once.
 | |
| 
 | |
|        Here's  a basic period expression specifying the first quarter of 2009.
 | |
|        Note, hledger always treats start dates as inclusive and end  dates  as
 | |
|        exclusive:
 | |
| 
 | |
|        -p "from 2009/1/1 to 2009/4/1"
 | |
| 
 | |
|        Keywords  like  "from" and "to" are optional, and so are the spaces, as
 | |
|        long as you don't run two dates together.  "to" can also be written  as
 | |
|        "-".  These are equivalent to the above:
 | |
| 
 | |
|        -p "2009/1/1 2009/4/1"
 | |
|        -p2009/1/1to2009/4/1
 | |
|        -p2009/1/1-2009/4/1
 | |
| 
 | |
|        Dates  are  smart  dates, so if the current year is 2009, the above can
 | |
|        also be written as:
 | |
| 
 | |
|        -p "1/1 4/1"
 | |
|        -p "january-apr"
 | |
|        -p "this year to 4/1"
 | |
| 
 | |
|        If you specify only one date, the missing start or end date will be the
 | |
|        earliest or latest transaction in your journal:
 | |
| 
 | |
|        -p "from 2009/1/1"   everything  after  january
 | |
|                             1, 2009
 | |
|        -p "from 2009/1"     the same
 | |
|        -p "from 2009"       the same
 | |
| 
 | |
|        -p "to 2009"         everything before  january
 | |
|                             1, 2009
 | |
| 
 | |
|        A  single  date  with  no "from" or "to" defines both the start and end
 | |
|        date like so:
 | |
| 
 | |
|        -p "2009"       the year 2009;  equivalent
 | |
|                        to "2009/1/1 to 2010/1/1"
 | |
|        -p "2009/1"     the  month of jan; equiva-
 | |
|                        lent   to   "2009/1/1   to
 | |
|                        2009/2/1"
 | |
|        -p "2009/1/1"   just  that day; equivalent
 | |
|                        to "2009/1/1 to 2009/1/2"
 | |
| 
 | |
|        The argument of -p can also begin with, or be, a  report  interval  ex-
 | |
|        pression.  The basic report intervals are daily, weekly, monthly, quar-
 | |
|        terly, or yearly, which have the same effect as the -D,-W,-M,-Q, or  -Y
 | |
|        flags.   Between report interval and start/end dates (if any), the word
 | |
|        in is optional.  Examples:
 | |
| 
 | |
|        -p "weekly from 2009/1/1 to 2009/4/1"
 | |
|        -p "monthly in 2008"
 | |
|        -p "quarterly"
 | |
| 
 | |
|        Note that weekly, monthly, quarterly and yearly intervals  will  always
 | |
|        start on the first day on week, month, quarter or year accordingly, and
 | |
|        will end on the last day of same period, even if associated period  ex-
 | |
|        pression specifies different explicit start and end date.
 | |
| 
 | |
|        For example:
 | |
| 
 | |
|        -p  "weekly  from 2009/1/1 to 2009/4/1"
 | |
|        -- starts on 2008/12/29,  closest  pre-
 | |
|        ceding Monday
 | |
|        -p "monthly in 2008/11/25" -- starts on
 | |
|        2018/11/01
 | |
|        -p  "quarterly   from   2009-05-05   to
 | |
|        2009-06-01"  -  starts  on  2009/04/01,
 | |
|        ends on 2009/06/30, which are first and
 | |
|        last days of Q2 2009
 | |
|        -p "yearly from 2009-12-29" - starts on
 | |
|        2009/01/01, first day of 2009
 | |
| 
 | |
|        The following more complex report intervals  are  also  supported:  bi-
 | |
|        weekly,   bimonthly,   every   day|week|month|quarter|year,   every   N
 | |
|        days|weeks|months|quarters|years.
 | |
| 
 | |
|        All of these will start on the first day of the  requested  period  and
 | |
|        end on the last one, as described above.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|        -p  "bimonthly  from  2008"  -- periods
 | |
|        will  have  boundaries  on  2008/01/01,
 | |
|        2008/03/01, ...
 | |
|        -p "every 2 weeks" -- starts on closest
 | |
|        preceding Monday
 | |
|        -p "every 5 month from 2009/03" --  pe-
 | |
|        riods    will    have   boundaries   on
 | |
|        2009/03/01, 2009/08/01, ...
 | |
| 
 | |
|        If you want intervals that start on arbitrary day of your choosing  and
 | |
|        span a week, month or year, you need to use any of the following:
 | |
| 
 | |
|        every Nth day of week, every <weekday>, every Nth day [of month], every
 | |
|        Nth weekday [of month], every MM/DD [of year], every Nth MMM [of year],
 | |
|        every MMM Nth [of year].
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|        -p  "every  2nd day of week" -- periods
 | |
|        will go from Tue to Tue
 | |
|        -p "every Tue" -- same
 | |
|        -p "every 15th day"  --  period  bound-
 | |
|        aries will be on 15th of each month
 | |
|        -p  "every 2nd Monday" -- period bound-
 | |
|        aries will be on second Monday of  each
 | |
|        month
 | |
|        -p "every 11/05" -- yearly periods with
 | |
|        boundaries on 5th of Nov
 | |
|        -p "every 5th Nov" -- same
 | |
|        -p "every Nov 5th" -- same
 | |
| 
 | |
|        Show historical balances at end of 15th each month (N is exclusive  end
 | |
|        date):
 | |
| 
 | |
|        hledger balance -H -p "every 16th day"
 | |
| 
 | |
|        Group  postings  from  start  of wednesday to end of next tuesday (N is
 | |
|        start date and exclusive end date):
 | |
| 
 | |
|        hledger register checking -p "every 3rd day of week"
 | |
| 
 | |
|    Depth limiting
 | |
|        With the --depth N option (short form: -N), commands like account, bal-
 | |
|        ance  and register will show only the uppermost accounts in the account
 | |
|        tree, down to level N.  Use this when you want a summary with less  de-
 | |
|        tail.  This flag has the same effect as a depth: query argument (so -2,
 | |
|        --depth=2 or depth:2 are basically equivalent).
 | |
| 
 | |
|    Pivoting
 | |
|        Normally hledger sums amounts, and organizes them in a hierarchy, based
 | |
|        on  account  name.  The --pivot FIELD option causes it to sum and orga-
 | |
|        nize hierarchy based on the value of some other field  instead.   FIELD
 | |
|        can be: code, description, payee, note, or the full name (case insensi-
 | |
|        tive) of any tag.  As with account names, values containing colon:sepa-
 | |
|        rated:parts will be displayed hierarchically in reports.
 | |
| 
 | |
|        --pivot  is  a  general  option affecting all reports; you can think of
 | |
|        hledger transforming the journal before any other processing, replacing
 | |
|        every  posting's  account name with the value of the specified field on
 | |
|        that posting, inheriting it from the transaction or using a blank value
 | |
|        if it's not present.
 | |
| 
 | |
|        An example:
 | |
| 
 | |
|               2016/02/16 Member Fee Payment
 | |
|                   assets:bank account                    2 EUR
 | |
|                   income:member fees                    -2 EUR  ; member: John Doe
 | |
| 
 | |
|        Normal balance report showing account names:
 | |
| 
 | |
|               $ hledger balance
 | |
|                              2 EUR  assets:bank account
 | |
|                             -2 EUR  income:member fees
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|        Pivoted balance report, using member: tag values instead:
 | |
| 
 | |
|               $ hledger balance --pivot member
 | |
|                              2 EUR
 | |
|                             -2 EUR  John Doe
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|        One  way  to show only amounts with a member: value (using a query, de-
 | |
|        scribed below):
 | |
| 
 | |
|               $ hledger balance --pivot member tag:member=.
 | |
|                             -2 EUR  John Doe
 | |
|               --------------------
 | |
|                             -2 EUR
 | |
| 
 | |
|        Another way (the acct:  query  matches  against  the  pivoted  "account
 | |
|        name"):
 | |
| 
 | |
|               $ hledger balance --pivot member acct:.
 | |
|                             -2 EUR  John Doe
 | |
|               --------------------
 | |
|                             -2 EUR
 | |
| 
 | |
|    Valuation
 | |
|    -B: Cost
 | |
|        The -B/--cost flag converts amounts to their cost (or selling price) at
 | |
|        transaction time, if they have a  transaction  price  specified.   This
 | |
|        flag is equivalent to --value=cost, described below.
 | |
| 
 | |
|    -V: Market value
 | |
|        The -V/--market flag converts reported amounts to their market value in
 | |
|        a default valuation commodity, using the market prices in effect  on  a
 | |
|        default  valuation date.  For single period reports, the valuation date
 | |
|        is today (equivalent to --value=now); for multiperiod  reports,  it  is
 | |
|        the last day of each subperiod (equivalent to --value=end).
 | |
| 
 | |
|        The default valuation commodity is the one referenced in the latest ap-
 | |
|        plicable market price dated on or before the valuation date.   If  most
 | |
|        of  your  P declarations lead to a single home currency, this will usu-
 | |
|        ally be what you want.  (To specify the commodity, see -X below.)
 | |
| 
 | |
|        Note that in hledger, market prices are always declared explicitly with
 | |
|        P  directives;  we  do not infer them from transaction prices as Ledger
 | |
|        does.
 | |
| 
 | |
|        Here's a quick example of -V:
 | |
| 
 | |
|               ; one euro is worth this many dollars from nov 1
 | |
|               P 2016/11/01 EUR $1.10
 | |
| 
 | |
|               ; purchase some euros on nov 3
 | |
|               2016/11/3
 | |
|                   assets:euros        EUR100
 | |
|                   assets:checking
 | |
| 
 | |
|               ; the euro is worth fewer dollars by dec 21
 | |
|               P 2016/12/21 EUR $1.03
 | |
| 
 | |
|        How many euros do I have ?
 | |
| 
 | |
|               $ hledger -f t.j bal -N euros
 | |
|                               EUR100  assets:euros
 | |
| 
 | |
|        What are they worth at end of nov 3 ?
 | |
| 
 | |
|               $ hledger -f t.j bal -N euros -V -e 2016/11/4
 | |
|                            $110.00  assets:euros
 | |
| 
 | |
|        What are they worth after 2016/12/21 ?  (no report end date  specified,
 | |
|        defaults to today)
 | |
| 
 | |
|               $ hledger -f t.j bal -N euros -V
 | |
|                            $103.00  assets:euros
 | |
| 
 | |
|    -X: Market value in specified commodity
 | |
|        The  -X/--exchange  option  is  like -V, except it specifies the target
 | |
|        commodity  you  would  like  to  convert  to.   It  is  equivalent   to
 | |
|        --value=now,COMM or --value=end,COMM.
 | |
| 
 | |
|    --value: Flexible valuation
 | |
|        (experimental, added 201905)
 | |
| 
 | |
|        -B, -V and -X are special cases of the more general --value option:
 | |
| 
 | |
|                --value=TYPE[,COMM]  TYPE is cost, end, now or YYYY-MM-DD.
 | |
|                                     COMM is an optional commodity symbol.
 | |
|                                     Shows amounts converted to:
 | |
|                                     - cost commodity using transaction prices (then optionally to COMM using market prices at period end(s))
 | |
|                                     - default valuation commodity (or COMM) using market prices at period end(s)
 | |
|                                     - default valuation commodity (or COMM) using current market prices
 | |
|                                     - default valuation commodity (or COMM) using market prices at some date
 | |
| 
 | |
|        The TYPE part basically selects either "cost", or "market value" plus a
 | |
|        valuation date:
 | |
| 
 | |
|        --value=cost
 | |
|               Convert amounts to cost, using the prices recorded  in  transac-
 | |
|               tions.
 | |
| 
 | |
|        --value=end
 | |
|               Convert amounts to their value in a default valuation commodity,
 | |
|               using market prices on the last day of the report period (or  if
 | |
|               unspecified, the journal's end date); or in multiperiod reports,
 | |
|               market prices on the last day of each subperiod.
 | |
| 
 | |
|        --value=now
 | |
|               Convert amounts to their value in  default  valuation  commodity
 | |
|               using current market prices (as of when report is generated).
 | |
| 
 | |
|        --value=YYYY-MM-DD
 | |
|               Convert  amounts  to  their value in default valuation commodity
 | |
|               using market prices on this date.
 | |
| 
 | |
|        The default valuation commodity is the commodity mentioned in the  most
 | |
|        recent applicable market price declaration.  When all your price decla-
 | |
|        rations lead to a single home currency, this will usually do  what  you
 | |
|        want.
 | |
| 
 | |
|        To select a different valuation commodity, add the optional ,COMM part:
 | |
|        a comma, then the  target  commodity's  symbol.   Eg:  --value=now,EUR.
 | |
|        hledger will do its best to convert amounts to this commodity, using:
 | |
| 
 | |
|        o declared prices (from source commodity to valuation commodity)
 | |
| 
 | |
|        o reverse  prices  (declared prices from valuation to source commodity,
 | |
|          inverted)
 | |
| 
 | |
|        o indirect prices (prices calculated from the  shortest  chain  of  de-
 | |
|          clared or reverse prices from source to valuation commodity)
 | |
| 
 | |
|        in that order.
 | |
| 
 | |
|        Here  are  some  examples  showing  the  effect of --value as seen with
 | |
|        print:
 | |
| 
 | |
|               P 2000-01-01 A  1 B
 | |
|               P 2000-02-01 A  2 B
 | |
|               P 2000-03-01 A  3 B
 | |
|               P 2000-04-01 A  4 B
 | |
| 
 | |
|               2000-01-01
 | |
|                 (a)      1 A @ 5 B
 | |
| 
 | |
|               2000-02-01
 | |
|                 (a)      1 A @ 6 B
 | |
| 
 | |
|               2000-03-01
 | |
|                 (a)      1 A @ 7 B
 | |
| 
 | |
|        Show the cost of each posting:
 | |
| 
 | |
|               $ hledger -f- print --value=cost
 | |
|               2000-01-01
 | |
|                   (a)             5 B
 | |
| 
 | |
|               2000-02-01
 | |
|                   (a)             6 B
 | |
| 
 | |
|               2000-03-01
 | |
|                   (a)             7 B
 | |
| 
 | |
|        Show the value as of the last day of the report period (2000-02-29):
 | |
| 
 | |
|               $ hledger -f- print --value=end date:2000/01-2000/03
 | |
|               2000-01-01
 | |
|                   (a)             2 B
 | |
| 
 | |
|               2000-02-01
 | |
|                   (a)             2 B
 | |
| 
 | |
|        With no report period specified, that shows the value as  of  the  last
 | |
|        day of the journal (2000-03-01):
 | |
| 
 | |
|               $ hledger -f- print --value=end
 | |
|               2000-01-01
 | |
|                   (a)             3 B
 | |
| 
 | |
|               2000-02-01
 | |
|                   (a)             3 B
 | |
| 
 | |
|               2000-03-01
 | |
|                   (a)             3 B
 | |
| 
 | |
|        Show the current value (the 2000-04-01 price is still in effect today):
 | |
| 
 | |
|               $ hledger -f- print --value=now
 | |
|               2000-01-01
 | |
|                   (a)             4 B
 | |
| 
 | |
|               2000-02-01
 | |
|                   (a)             4 B
 | |
| 
 | |
|               2000-03-01
 | |
|                   (a)             4 B
 | |
| 
 | |
|        Show the value on 2000/01/15:
 | |
| 
 | |
|               $ hledger -f- print --value=2000-01-15
 | |
|               2000-01-01
 | |
|                   (a)             1 B
 | |
| 
 | |
|               2000-02-01
 | |
|                   (a)             1 B
 | |
| 
 | |
|               2000-03-01
 | |
|                   (a)             1 B
 | |
| 
 | |
|        You  may  need  to explicitly set a commodity's display style, when re-
 | |
|        verse prices are used.  Eg this output might be surprising:
 | |
| 
 | |
|               P 2000-01-01 A 2B
 | |
| 
 | |
|               2000-01-01
 | |
|                 a  1B
 | |
|                 b
 | |
| 
 | |
|               $ hledger print -x -X A
 | |
|               2000-01-01
 | |
|                   a               0
 | |
|                   b               0
 | |
| 
 | |
|        Explanation: because there's no amount or commodity directive  specify-
 | |
|        ing  a display style for A, 0.5A gets the default style, which shows no
 | |
|        decimal digits.  Because the displayed amount looks like zero, the com-
 | |
|        modity  symbol  and minus sign are not displayed either.  Adding a com-
 | |
|        modity directive sets a more useful display style for A:
 | |
| 
 | |
|               P 2000-01-01 A 2B
 | |
|               commodity 0.00A
 | |
| 
 | |
|               2000-01-01
 | |
|                 a  1B
 | |
|                 b
 | |
| 
 | |
|               $ hledger print -X A
 | |
|               2000-01-01
 | |
|                   a           0.50A
 | |
|                   b          -0.50A
 | |
| 
 | |
|    Effect of --value on reports
 | |
|        Here is a reference for how --value  currently  affects  each  part  of
 | |
|        hledger's  reports.  It's work in progress, but may be useful for trou-
 | |
|        bleshooting or reporting bugs.  See also the definitions and notes  be-
 | |
|        low.   If  you find problems, please report them, ideally with a repro-
 | |
|        ducible example.  Related: #329, #1083.
 | |
| 
 | |
|        Report type      -B,              -V, -X            --value=end        --value=DATE,
 | |
|                         --value=cost                                          --value=now
 | |
|        -------------------------------------------------------------------------------------
 | |
|        print
 | |
|        posting          cost             value at report   value at report    value      at
 | |
|        amounts                           end or today      or journal end     DATE/today
 | |
|        balance asser-   unchanged        unchanged         unchanged          unchanged
 | |
|        tions   /  as-
 | |
|        signments
 | |
| 
 | |
|        register
 | |
|        starting  bal-   cost             value   at  day   value  at   day    value      at
 | |
|        ance (with -H)                    before   report   before   report    DATE/today
 | |
|                                          or      journal   or      journal
 | |
|                                          start             start
 | |
|        posting          cost             value at report   value at report    value      at
 | |
|        amounts    (no                    end or today      or journal end     DATE/today
 | |
|        report  inter-
 | |
|        val)
 | |
|        summary  post-   summarised       value at period   value at period    value      at
 | |
|        ing    amounts   cost             ends              ends               DATE/today
 | |
|        (with   report
 | |
|        interval)
 | |
|        running    to-   sum/average of   sum/average  of   sum/average  of    sum/average
 | |
|        tal/average      displayed val-   displayed  val-   displayed  val-    of  displayed
 | |
|                         ues              ues               ues                values
 | |
| 
 | |
|        balance   (bs,
 | |
|        bse, cf, is..)
 | |
|        balances   (no   sums of costs    value at report   value at report    value      at
 | |
|        report  inter-                    end or today of   or  journal end    DATE/today of
 | |
|        val)                              sums  of  post-   of   sums    of    sums of post-
 | |
|                                          ings              postings           ings
 | |
|        balances (with   sums of costs    value at period   value at period    value      at
 | |
|        report  inter-                    ends of sums of   ends of sums of    DATE/today of
 | |
|        val)                              postings          postings           sums of post-
 | |
|                                                                               ings
 | |
| 
 | |
| 
 | |
|        starting  bal-   sums of  costs   sums  of  post-   sums  of  post-    sums of post-
 | |
|        ances    (with   of    postings   ings before re-   ings before re-    ings   before
 | |
|        report  inter-   before  report   port start        port start         report start
 | |
|        val and -H)      start
 | |
|        budget amounts   like balances    like balances     like balances      like balances
 | |
|        with --budget
 | |
|        grand    total   sum  of   dis-   sum   of   dis-   sum   of   dis-    sum  of  dis-
 | |
|        (no report in-   played values    played values     played values      played values
 | |
|        terval)
 | |
|        row totals/av-   sums/averages    sums/averages     sums/averages      sums/averages
 | |
|        erages   (with   of   displayed   of    displayed   of    displayed    of  displayed
 | |
|        report  inter-   values           values            values             values
 | |
|        val)
 | |
|        column totals    sums  of  dis-   sums  of   dis-   sums   of  dis-    sums of  dis-
 | |
|                         played values    played values     played values      played values
 | |
|        grand      to-   sum/average of   sum/average  of   sum/average  of    sum/average
 | |
|        tal/average      column totals    column totals     column totals      of column to-
 | |
|                                                                               tals
 | |
| 
 | |
| 
 | |
|        Additional notes
 | |
| 
 | |
|        cost   calculated using price(s) recorded in the transaction(s).
 | |
| 
 | |
|        value  market  value  using available market price declarations, or the
 | |
|               unchanged amount if no conversion rate can be found.
 | |
| 
 | |
|        report start
 | |
|               the first day of the report period specified with -b  or  -p  or
 | |
|               date:, otherwise today.
 | |
| 
 | |
|        report or journal start
 | |
|               the  first  day  of the report period specified with -b or -p or
 | |
|               date:, otherwise the earliest transaction date in  the  journal,
 | |
|               otherwise today.
 | |
| 
 | |
|        report end
 | |
|               the  last  day  of  the report period specified with -e or -p or
 | |
|               date:, otherwise today.
 | |
| 
 | |
|        report or journal end
 | |
|               the last day of the report period specified with  -e  or  -p  or
 | |
|               date:,  otherwise  the  latest  transaction date in the journal,
 | |
|               otherwise today.
 | |
| 
 | |
|        report interval
 | |
|               a flag (-D/-W/-M/-Q/-Y) or period expression that activates  the
 | |
|               report's multi-period mode (whether showing one or many subperi-
 | |
|               ods).
 | |
| 
 | |
|    Combining -B, -V, -X, --value
 | |
|        The rightmost of these flags wins.
 | |
| 
 | |
|    Output destination
 | |
|        Some commands (print, register, stats, the balance commands) can  write
 | |
|        their  output  to  a  destination other than the console.  This is con-
 | |
|        trolled by the -o/--output-file option.
 | |
| 
 | |
|               $ hledger balance -o -     # write to stdout (the default)
 | |
|               $ hledger balance -o FILE  # write to FILE
 | |
| 
 | |
|    Output format
 | |
|        Some commands can write their output in other formats.   Eg  print  and
 | |
|        register  can  output  CSV,  and the balance commands can output CSV or
 | |
|        HTML.  This is controlled by the -O/--output-format option, or by spec-
 | |
|        ifying a .csv or .html file extension with -o/--output-file.
 | |
| 
 | |
|               $ hledger balance -O csv       # write CSV to stdout
 | |
|               $ hledger balance -o FILE.csv  # write CSV to FILE.csv
 | |
| 
 | |
|    Regular expressions
 | |
|        hledger uses regular expressions in a number of places:
 | |
| 
 | |
|        o query  terms, on the command line and in the hledger-web search form:
 | |
|          REGEX, desc:REGEX, cur:REGEX, tag:...=REGEX
 | |
| 
 | |
|        o CSV rules conditional blocks: if REGEX ...
 | |
| 
 | |
|        o account alias directives and options: alias  /REGEX/  =  REPLACEMENT,
 | |
|          --alias /REGEX/=REPLACEMENT
 | |
| 
 | |
|        hledger's  regular  expressions  come  from the regex-tdfa library.  In
 | |
|        general they:
 | |
| 
 | |
|        o are case insensitive
 | |
| 
 | |
|        o are infix matching (do not need  to  match  the  entire  thing  being
 | |
|          matched)
 | |
| 
 | |
|        o are POSIX extended regular expressions
 | |
| 
 | |
|        o also support GNU word boundaries (\<, \>, \b, \B)
 | |
| 
 | |
|        o and  parenthesised capturing groups and numeric backreferences in re-
 | |
|          placement strings
 | |
| 
 | |
|        o do not support mode modifiers like (?s)
 | |
| 
 | |
|        Some things to note:
 | |
| 
 | |
|        o In the alias directive and --alias option, regular  expressions  must
 | |
|          be  enclosed  in  forward  slashes  (/REGEX/).  Elsewhere in hledger,
 | |
|          these are not required.
 | |
| 
 | |
|        o In queries, to match a regular expression metacharacter like $  as  a
 | |
|          literal  character,  prepend  a  backslash.  Eg to search for amounts
 | |
|          with the dollar sign in hledger-web, write cur:\$.
 | |
| 
 | |
|        o On the command line, some metacharacters like $ have a special  mean-
 | |
|          ing to the shell and so must be escaped at least once more.  See Spe-
 | |
|          cial characters.
 | |
| 
 | |
| QUERIES
 | |
|        One of hledger's strengths is being able to quickly report  on  precise
 | |
|        subsets  of  your data.  Most commands accept an optional query expres-
 | |
|        sion, written as arguments after the command name, to filter  the  data
 | |
|        by  date,  account  name or other criteria.  The syntax is similar to a
 | |
|        web search: one or more space-separated search terms, quotes to enclose
 | |
|        whitespace,  prefixes to match specific fields, a not: prefix to negate
 | |
|        the match.
 | |
| 
 | |
|        We do not yet support arbitrary boolean combinations of  search  terms;
 | |
|        instead  most  commands show transactions/postings/accounts which match
 | |
|        (or negatively match):
 | |
| 
 | |
|        o any of the description terms AND
 | |
| 
 | |
|        o any of the account terms AND
 | |
| 
 | |
|        o any of the status terms AND
 | |
| 
 | |
|        o all the other terms.
 | |
| 
 | |
|        The print command instead shows transactions which:
 | |
| 
 | |
|        o match any of the description terms AND
 | |
| 
 | |
|        o have any postings matching any of the positive account terms AND
 | |
| 
 | |
|        o have no postings matching any of the negative account terms AND
 | |
| 
 | |
|        o match all the other terms.
 | |
| 
 | |
|        The following kinds of search terms can be used.   Remember  these  can
 | |
|        also be prefixed with not:, eg to exclude a particular subaccount.
 | |
| 
 | |
|        REGEX, acct:REGEX
 | |
|               match  account  names by this regular expression.  (With no pre-
 | |
|               fix, acct: is assumed.)  same as above
 | |
| 
 | |
|        amt:N, amt:<N, amt:<=N, amt:>N, amt:>=N
 | |
|               match postings with a single-commodity amount that is equal  to,
 | |
|               less  than, or greater than N.  (Multi-commodity amounts are not
 | |
|               tested, and will always match.) The comparison has two modes: if
 | |
|               N is preceded by a + or - sign (or is 0), the two signed numbers
 | |
|               are compared.  Otherwise, the absolute magnitudes are  compared,
 | |
|               ignoring sign.
 | |
| 
 | |
|        code:REGEX
 | |
|               match by transaction code (eg check number)
 | |
| 
 | |
|        cur:REGEX
 | |
|               match  postings or transactions including any amounts whose cur-
 | |
|               rency/commodity symbol is fully matched by REGEX.  (For  a  par-
 | |
|               tial match, use .*REGEX.*).  Note, to match characters which are
 | |
|               regex-significant, like the dollar sign ($), you need to prepend
 | |
|               \.   And  when  using  the command line you need to add one more
 | |
|               level of quoting to hide it from the shell, so  eg  do:  hledger
 | |
|               print cur:'\$' or hledger print cur:\\$.
 | |
| 
 | |
|        desc:REGEX
 | |
|               match transaction descriptions.
 | |
| 
 | |
|        date:PERIODEXPR
 | |
|               match dates within the specified period.  PERIODEXPR is a period
 | |
|               expression (with  no  report  interval).   Examples:  date:2016,
 | |
|               date:thismonth,   date:2000/2/1-2/15,  date:lastweek-.   If  the
 | |
|               --date2 command line flag is  present,  this  matches  secondary
 | |
|               dates instead.
 | |
| 
 | |
|        date2:PERIODEXPR
 | |
|               match secondary dates within the specified period.
 | |
| 
 | |
|        depth:N
 | |
|               match  (or  display,  depending on command) accounts at or above
 | |
|               this depth
 | |
| 
 | |
|        note:REGEX
 | |
|               match transaction notes (part of  description  right  of  |,  or
 | |
|               whole description when there's no |)
 | |
| 
 | |
|        payee:REGEX
 | |
|               match transaction payee/payer names (part of description left of
 | |
|               |, or whole description when there's no |)
 | |
| 
 | |
|        real:, real:0
 | |
|               match real or virtual postings respectively
 | |
| 
 | |
|        status:, status:!, status:*
 | |
|               match unmarked, pending, or cleared transactions respectively
 | |
| 
 | |
|        tag:REGEX[=REGEX]
 | |
|               match by tag name, and optionally also by  tag  value.   Note  a
 | |
|               tag:  query  is  considered to match a transaction if it matches
 | |
|               any of the postings.  Also remember that  postings  inherit  the
 | |
|               tags of their parent transaction.
 | |
| 
 | |
|        The following special search term is used automatically in hledger-web,
 | |
|        only:
 | |
| 
 | |
|        inacct:ACCTNAME
 | |
|               tells hledger-web to show the transaction register for this  ac-
 | |
|               count.  Can be filtered further with acct etc.
 | |
| 
 | |
|        Some of these can also be expressed as command-line options (eg depth:2
 | |
|        is equivalent to --depth 2).  Generally you can mix options  and  query
 | |
|        arguments,  and the resulting query will be their intersection (perhaps
 | |
|        excluding the -p/--period option).
 | |
| 
 | |
| COMMANDS
 | |
|        hledger provides a number of subcommands;  hledger  with  no  arguments
 | |
|        shows a list.
 | |
| 
 | |
|        If you install additional hledger-* packages, or if you put programs or
 | |
|        scripts named hledger-NAME in your PATH, these will also be  listed  as
 | |
|        subcommands.
 | |
| 
 | |
|        Run  a subcommand by writing its name as first argument (eg hledger in-
 | |
|        comestatement).  You can also write one of the standard  short  aliases
 | |
|        displayed  in  parentheses  in the command list (hledger b), or any any
 | |
|        unambiguous prefix of a command name (hledger inc).
 | |
| 
 | |
|        Here are all the builtin commands  in  alphabetical  order.   See  also
 | |
|        hledger  for  a more organised command list, and hledger CMD -h for de-
 | |
|        tailed command help.
 | |
| 
 | |
|    accounts
 | |
|        accounts, a
 | |
|        Show account names.
 | |
| 
 | |
|        This command lists account names, either declared with  account  direc-
 | |
|        tives  (--declared),  posted  to (--used), or both (the default).  With
 | |
|        query arguments, only matched account names and  account  names  refer-
 | |
|        enced  by matched postings are shown.  It shows a flat list by default.
 | |
|        With --tree, it uses indentation to show  the  account  hierarchy.   In
 | |
|        flat  mode you can add --drop N to omit the first few account name com-
 | |
|        ponents.  Account names can be depth-clipped with depth:N or --depth  N
 | |
|        or -N.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger accounts
 | |
|               assets:bank:checking
 | |
|               assets:bank:saving
 | |
|               assets:cash
 | |
|               expenses:food
 | |
|               expenses:supplies
 | |
|               income:gifts
 | |
|               income:salary
 | |
|               liabilities:debts
 | |
| 
 | |
|    activity
 | |
|        activity
 | |
|        Show an ascii barchart of posting counts per interval.
 | |
| 
 | |
|        The  activity  command  displays an ascii histogram showing transaction
 | |
|        counts by day, week, month or other reporting interval (by day  is  the
 | |
|        default).  With query arguments, it counts only matched transactions.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger activity --quarterly
 | |
|               2008-01-01 **
 | |
|               2008-04-01 *******
 | |
|               2008-07-01
 | |
|               2008-10-01 **
 | |
| 
 | |
|    add
 | |
|        add
 | |
|        Prompt for transactions and add them to the journal.
 | |
| 
 | |
|        Many  hledger users edit their journals directly with a text editor, or
 | |
|        generate them from CSV.  For more interactive data entry, there is  the
 | |
|        add  command, which prompts interactively on the console for new trans-
 | |
|        actions, and appends them to the journal file (if there are multiple -f
 | |
|        FILE  options,  the  first file is used.) Existing transactions are not
 | |
|        changed.  This is the only hledger command that writes to  the  journal
 | |
|        file.
 | |
| 
 | |
|        To use it, just run hledger add and follow the prompts.  You can add as
 | |
|        many transactions as you like; when you are finished, enter . or  press
 | |
|        control-d or control-c to exit.
 | |
| 
 | |
|        Features:
 | |
| 
 | |
|        o add  tries to provide useful defaults, using the most similar (by de-
 | |
|          scription) recent transaction (filtered by the query, if  any)  as  a
 | |
|          template.
 | |
| 
 | |
|        o You can also set the initial defaults with command line arguments.
 | |
| 
 | |
|        o Readline-style edit keys can be used during data entry.
 | |
| 
 | |
|        o The tab key will auto-complete whenever possible - accounts, descrip-
 | |
|          tions, dates (yesterday, today, tomorrow).   If  the  input  area  is
 | |
|          empty, it will insert the default value.
 | |
| 
 | |
|        o If  the  journal defines a default commodity, it will be added to any
 | |
|          bare numbers entered.
 | |
| 
 | |
|        o A parenthesised transaction code may be entered following a date.
 | |
| 
 | |
|        o Comments and tags may be entered following a description or amount.
 | |
| 
 | |
|        o If you make a mistake, enter < at any prompt to go one step backward.
 | |
| 
 | |
|        o Input prompts are displayed in a different colour when  the  terminal
 | |
|          supports it.
 | |
| 
 | |
|        Example (see the tutorial for a detailed explanation):
 | |
| 
 | |
|               $ hledger add
 | |
|               Adding transactions to journal file /src/hledger/examples/sample.journal
 | |
|               Any command line arguments will be used as defaults.
 | |
|               Use tab key to complete, readline keys to edit, enter to accept defaults.
 | |
|               An optional (CODE) may follow transaction dates.
 | |
|               An optional ; COMMENT may follow descriptions or amounts.
 | |
|               If you make a mistake, enter < at any prompt to go one step backward.
 | |
|               To end a transaction, enter . when prompted.
 | |
|               To quit, enter . at a date prompt or press control-d or control-c.
 | |
|               Date [2015/05/22]:
 | |
|               Description: supermarket
 | |
|               Account 1: expenses:food
 | |
|               Amount  1: $10
 | |
|               Account 2: assets:checking
 | |
|               Amount  2 [$-10.0]:
 | |
|               Account 3 (or . or enter to finish this transaction): .
 | |
|               2015/05/22 supermarket
 | |
|                   expenses:food             $10
 | |
|                   assets:checking        $-10.0
 | |
| 
 | |
|               Save this transaction to the journal ? [y]:
 | |
|               Saved.
 | |
|               Starting the next transaction (. or ctrl-D/ctrl-C to quit)
 | |
|               Date [2015/05/22]: <CTRL-D> $
 | |
| 
 | |
|        On  Microsoft  Windows,  the add command makes sure that no part of the
 | |
|        file path ends with a period, as it can cause data loss on  that  plat-
 | |
|        form (cf #1056).
 | |
| 
 | |
|    balance
 | |
|        balance, bal, b
 | |
|        Show accounts and their balances.
 | |
| 
 | |
|        The balance command is hledger's most versatile command.  Note, despite
 | |
|        the name, it is not always used for  showing  real-world  account  bal-
 | |
|        ances;  the  more accounting-aware balancesheet and incomestatement may
 | |
|        be more convenient for that.
 | |
| 
 | |
|        By default, it displays all accounts, and each account's change in bal-
 | |
|        ance during the entire period of the journal.  Balance changes are cal-
 | |
|        culated by adding up the postings in each account.  You can  limit  the
 | |
|        postings  matched,  by  a  query, to see fewer accounts, changes over a
 | |
|        different time period, changes from only cleared transactions, etc.
 | |
| 
 | |
|        If you include an account's complete history of postings in the report,
 | |
|        the  balance  change is equivalent to the account's current ending bal-
 | |
|        ance.  For a real-world account, typically you won't have all  transac-
 | |
|        tions in the journal; instead you'll have all transactions after a cer-
 | |
|        tain date, and an "opening balances" transaction  setting  the  correct
 | |
|        starting  balance  on  that  date.   Then the balance command will show
 | |
|        real-world account balances.  In some cases the -H/--historical flag is
 | |
|        used to ensure this (more below).
 | |
| 
 | |
|        The balance command can produce several styles of report:
 | |
| 
 | |
|    Classic balance report
 | |
|        This  is  the  original balance report, as found in Ledger.  It usually
 | |
|        looks like this:
 | |
| 
 | |
|               $ hledger balance
 | |
|                                $-1  assets
 | |
|                                 $1    bank:saving
 | |
|                                $-2    cash
 | |
|                                 $2  expenses
 | |
|                                 $1    food
 | |
|                                 $1    supplies
 | |
|                                $-2  income
 | |
|                                $-1    gifts
 | |
|                                $-1    salary
 | |
|                                 $1  liabilities:debts
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|        By default, accounts are displayed hierarchically, with subaccounts in-
 | |
|        dented  below  their  parent.   At each level of the tree, accounts are
 | |
|        sorted by  account  code  if  any,  then  by  account  name.   Or  with
 | |
|        -S/--sort-amount, by their balance amount.
 | |
| 
 | |
|        "Boring" accounts, which contain a single interesting subaccount and no
 | |
|        balance of their own, are elided into the following line for more  com-
 | |
|        pact  output.  (Eg above, the "liabilities" account.) Use --no-elide to
 | |
|        prevent this.
 | |
| 
 | |
|        Account balances are "inclusive" - they include  the  balances  of  any
 | |
|        subaccounts.
 | |
| 
 | |
|        Accounts  which  have  zero  balance  (and no non-zero subaccounts) are
 | |
|        omitted.  Use -E/--empty to show them.
 | |
| 
 | |
|        A final total is displayed by default; use  -N/--no-total  to  suppress
 | |
|        it, eg:
 | |
| 
 | |
|               $ hledger balance -p 2008/6 expenses --no-total
 | |
|                                 $2  expenses
 | |
|                                 $1    food
 | |
|                                 $1    supplies
 | |
| 
 | |
|    Customising the classic balance report
 | |
|        You  can  customise the layout of classic balance reports with --format
 | |
|        FMT:
 | |
| 
 | |
|               $ hledger balance --format "%20(account) %12(total)"
 | |
|                             assets          $-1
 | |
|                        bank:saving           $1
 | |
|                               cash          $-2
 | |
|                           expenses           $2
 | |
|                               food           $1
 | |
|                           supplies           $1
 | |
|                             income          $-2
 | |
|                              gifts          $-1
 | |
|                             salary          $-1
 | |
|                  liabilities:debts           $1
 | |
|               ---------------------------------
 | |
|                                               0
 | |
| 
 | |
|        The FMT format string (plus a newline) specifies the formatting applied
 | |
|        to  each  account/balance pair.  It may contain any suitable text, with
 | |
|        data fields interpolated like so:
 | |
| 
 | |
|        %[MIN][.MAX](FIELDNAME)
 | |
| 
 | |
|        o MIN pads with spaces to at least this width (optional)
 | |
| 
 | |
|        o MAX truncates at this width (optional)
 | |
| 
 | |
|        o FIELDNAME must be enclosed in parentheses, and can be one of:
 | |
| 
 | |
|          o depth_spacer - a number of spaces equal to the account's depth,  or
 | |
|            if MIN is specified, MIN * depth spaces.
 | |
| 
 | |
|          o account - the account's name
 | |
| 
 | |
|          o total - the account's balance/posted total, right justified
 | |
| 
 | |
|        Also,  FMT  can begin with an optional prefix to control how multi-com-
 | |
|        modity amounts are rendered:
 | |
| 
 | |
|        o %_ - render on multiple lines, bottom-aligned (the default)
 | |
| 
 | |
|        o %^ - render on multiple lines, top-aligned
 | |
| 
 | |
|        o %, - render on one line, comma-separated
 | |
| 
 | |
|        There are some quirks.  Eg in one-line mode, %(depth_spacer) has no ef-
 | |
|        fect, instead %(account) has indentation built in.  Experimentation may
 | |
|        be needed to get pleasing results.
 | |
| 
 | |
|        Some example formats:
 | |
| 
 | |
|        o %(total) - the account's total
 | |
| 
 | |
|        o %-20.20(account) - the account's name, left justified, padded  to  20
 | |
|          characters and clipped at 20 characters
 | |
| 
 | |
|        o %,%-50(account)   %25(total)  - account name padded to 50 characters,
 | |
|          total padded to 20 characters, with multiple commodities rendered  on
 | |
|          one line
 | |
| 
 | |
|        o %20(total)   %2(depth_spacer)%-(account) - the default format for the
 | |
|          single-column balance report
 | |
| 
 | |
|    Colour support
 | |
|        The balance command shows negative amounts in red, if:
 | |
| 
 | |
|        o the TERM environment variable is not set to dumb
 | |
| 
 | |
|        o the output is not being redirected or piped anywhere
 | |
| 
 | |
|    Flat mode
 | |
|        To see a flat list instead of the  default  hierarchical  display,  use
 | |
|        --flat.   In this mode, accounts (unless depth-clipped) show their full
 | |
|        names and "exclusive" balance, excluding any subaccount  balances.   In
 | |
|        this mode, you can also use --drop N to omit the first few account name
 | |
|        components.
 | |
| 
 | |
|               $ hledger balance -p 2008/6 expenses -N --flat --drop 1
 | |
|                                 $1  food
 | |
|                                 $1  supplies
 | |
| 
 | |
|    Depth limited balance reports
 | |
|        With --depth N or depth:N or just -N,  balance  reports  show  accounts
 | |
|        only  to the specified numeric depth.  This is very useful to summarise
 | |
|        a complex set of accounts and get an overview.
 | |
| 
 | |
|               $ hledger balance -N -1
 | |
|                                $-1  assets
 | |
|                                 $2  expenses
 | |
|                                $-2  income
 | |
|                                 $1  liabilities
 | |
| 
 | |
|        Flat-mode balance reports, which normally show exclusive balances, show
 | |
|        inclusive balances at the depth limit.
 | |
| 
 | |
|    Percentages
 | |
|        With  -%  or  --percent,  balance reports show each account's value ex-
 | |
|        pressed as a percentage of the column's total.  This is useful  to  get
 | |
|        an  overview of the relative sizes of account balances.  For example to
 | |
|        obtain an overview of expenses:
 | |
| 
 | |
|               $ hledger balance expenses -%
 | |
|                            100.0 %  expenses
 | |
|                             50.0 %    food
 | |
|                             50.0 %    supplies
 | |
|               --------------------
 | |
|                            100.0 %
 | |
| 
 | |
|        Note that --tree does not have an effect on -%.   The  percentages  are
 | |
|        always  relative  to the total sum of each column, they are never rela-
 | |
|        tive to the parent account.
 | |
| 
 | |
|        Since the percentages are relative to the columns sum,  it  is  usually
 | |
|        not  useful  to  calculate  percentages if the signs of the amounts are
 | |
|        mixed.  Although the results are technically  correct,  they  are  most
 | |
|        likely  useless.   Especially  in a balance report that sums up to zero
 | |
|        (eg hledger balance -B) all percentage values will be zero.
 | |
| 
 | |
|        This flag does not work if the report contains any mixed commodity  ac-
 | |
|        counts.  If there are mixed commodity accounts in the report be sure to
 | |
|        use -V or -B to coerce the report into using a single commodity.
 | |
| 
 | |
|    Multicolumn balance report
 | |
|        Multicolumn or tabular balance reports are a very useful  hledger  fea-
 | |
|        ture,  and  usually  the preferred style.  They share many of the above
 | |
|        features, but they show the report as a table, with columns  represent-
 | |
|        ing  time periods.  This mode is activated by providing a reporting in-
 | |
|        terval.
 | |
| 
 | |
|        There are three types of multicolumn balance report, showing  different
 | |
|        information:
 | |
| 
 | |
|        1. By default: each column shows the sum of postings in that period, ie
 | |
|           the account's change of balance in that period.  This is  useful  eg
 | |
|           for a monthly income statement:
 | |
| 
 | |
|                   $ hledger balance --quarterly income expenses -E
 | |
|                   Balance changes in 2008:
 | |
| 
 | |
|                                      ||  2008q1  2008q2  2008q3  2008q4
 | |
|                   ===================++=================================
 | |
|                    expenses:food     ||       0      $1       0       0
 | |
|                    expenses:supplies ||       0      $1       0       0
 | |
|                    income:gifts      ||       0     $-1       0       0
 | |
|                    income:salary     ||     $-1       0       0       0
 | |
|                   -------------------++---------------------------------
 | |
|                                      ||     $-1      $1       0       0
 | |
| 
 | |
|        2. With --cumulative: each column shows the ending balance for that pe-
 | |
|           riod, accumulating the changes across periods, starting  from  0  at
 | |
|           the report start date:
 | |
| 
 | |
|                   $ hledger balance --quarterly income expenses -E --cumulative
 | |
|                   Ending balances (cumulative) in 2008:
 | |
| 
 | |
|                                      ||  2008/03/31  2008/06/30  2008/09/30  2008/12/31
 | |
|                   ===================++=================================================
 | |
|                    expenses:food     ||           0          $1          $1          $1
 | |
|                    expenses:supplies ||           0          $1          $1          $1
 | |
|                    income:gifts      ||           0         $-1         $-1         $-1
 | |
|                    income:salary     ||         $-1         $-1         $-1         $-1
 | |
|                   -------------------++-------------------------------------------------
 | |
|                                      ||         $-1           0           0           0
 | |
| 
 | |
|        3. With --historical/-H: each column shows the actual historical ending
 | |
|           balance for that period, accumulating the  changes  across  periods,
 | |
|           starting  from the actual balance at the report start date.  This is
 | |
|           useful eg for a multi-period balance sheet, and when you are showing
 | |
|           only the data after a certain start date:
 | |
| 
 | |
|                   $ hledger balance ^assets ^liabilities --quarterly --historical --begin 2008/4/1
 | |
|                   Ending balances (historical) in 2008/04/01-2008/12/31:
 | |
| 
 | |
|                                         ||  2008/06/30  2008/09/30  2008/12/31
 | |
|                   ======================++=====================================
 | |
|                    assets:bank:checking ||          $1          $1           0
 | |
|                    assets:bank:saving   ||          $1          $1          $1
 | |
|                    assets:cash          ||         $-2         $-2         $-2
 | |
|                    liabilities:debts    ||           0           0          $1
 | |
|                   ----------------------++-------------------------------------
 | |
|                                         ||           0           0           0
 | |
| 
 | |
|        Note that --cumulative or --historical/-H disable --row-total/-T, since
 | |
|        summing end balances generally does not make sense.
 | |
| 
 | |
|        Multicolumn balance reports display accounts in flat mode  by  default;
 | |
|        to see the hierarchy, use --tree.
 | |
| 
 | |
|        With   a  reporting  interval  (like  --quarterly  above),  the  report
 | |
|        start/end dates will be adjusted if necessary so  that  they  encompass
 | |
|        the displayed report periods.  This is so that the first and last peri-
 | |
|        ods will be "full" and comparable to the others.
 | |
| 
 | |
|        The -E/--empty flag does two things  in  multicolumn  balance  reports:
 | |
|        first, the report will show all columns within the specified report pe-
 | |
|        riod (without -E, leading and trailing columns with all zeroes are  not
 | |
|        shown).   Second,  all  accounts which existed at the report start date
 | |
|        will be considered, not just the ones with activity during  the  report
 | |
|        period  (use  -E to include low-activity accounts which would otherwise
 | |
|        would be omitted).
 | |
| 
 | |
|        The -T/--row-total flag adds an additional column showing the total for
 | |
|        each row.
 | |
| 
 | |
|        The  -A/--average  flag adds a column showing the average value in each
 | |
|        row.
 | |
| 
 | |
|        Here's an example of all three:
 | |
| 
 | |
|               $ hledger balance -Q income expenses --tree -ETA
 | |
|               Balance changes in 2008:
 | |
| 
 | |
|                           ||  2008q1  2008q2  2008q3  2008q4    Total  Average
 | |
|               ============++===================================================
 | |
|                expenses   ||       0      $2       0       0       $2       $1
 | |
|                  food     ||       0      $1       0       0       $1        0
 | |
|                  supplies ||       0      $1       0       0       $1        0
 | |
|                income     ||     $-1     $-1       0       0      $-2      $-1
 | |
|                  gifts    ||       0     $-1       0       0      $-1        0
 | |
|                  salary   ||     $-1       0       0       0      $-1        0
 | |
|               ------------++---------------------------------------------------
 | |
|                           ||     $-1      $1       0       0        0        0
 | |
| 
 | |
|               # Average is rounded to the dollar here since all journal amounts are
 | |
| 
 | |
|        Limitations:
 | |
| 
 | |
|        In multicolumn reports the -V/--value flag uses the market price on the
 | |
|        report  end  date,  for all columns (not the price on each column's end
 | |
|        date).
 | |
| 
 | |
|        Eliding of boring parent accounts in tree mode, as in the classic  bal-
 | |
|        ance report, is not yet supported in multicolumn reports.
 | |
| 
 | |
|    Budget report
 | |
|        With  --budget,  extra  columns  are displayed showing budget goals for
 | |
|        each account and period, if any.  Budget goals are defined by  periodic
 | |
|        transactions.  This is very useful for comparing planned and actual in-
 | |
|        come, expenses, time usage, etc.  --budget is most often combined  with
 | |
|        a report interval.
 | |
| 
 | |
|        For  example,  you  can take average monthly expenses in the common ex-
 | |
|        pense categories to construct a minimal monthly budget:
 | |
| 
 | |
|               ;; Budget
 | |
|               ~ monthly
 | |
|                 income  $2000
 | |
|                 expenses:food    $400
 | |
|                 expenses:bus     $50
 | |
|                 expenses:movies  $30
 | |
|                 assets:bank:checking
 | |
| 
 | |
|               ;; Two months worth of expenses
 | |
|               2017-11-01
 | |
|                 income  $1950
 | |
|                 expenses:food    $396
 | |
|                 expenses:bus     $49
 | |
|                 expenses:movies  $30
 | |
|                 expenses:supplies  $20
 | |
|                 assets:bank:checking
 | |
| 
 | |
|               2017-12-01
 | |
|                 income  $2100
 | |
|                 expenses:food    $412
 | |
|                 expenses:bus     $53
 | |
|                 expenses:gifts   $100
 | |
|                 assets:bank:checking
 | |
| 
 | |
|        You can now see a monthly budget report:
 | |
| 
 | |
|               $ hledger balance -M --budget
 | |
|               Budget performance in 2017/11/01-2017/12/31:
 | |
| 
 | |
|                                     ||                      Nov                       Dec
 | |
|               ======================++====================================================
 | |
|                assets               || $-2445 [  99% of $-2480]  $-2665 [ 107% of $-2480]
 | |
|                assets:bank          || $-2445 [  99% of $-2480]  $-2665 [ 107% of $-2480]
 | |
|                assets:bank:checking || $-2445 [  99% of $-2480]  $-2665 [ 107% of $-2480]
 | |
|                expenses             ||   $495 [ 103% of   $480]    $565 [ 118% of   $480]
 | |
|                expenses:bus         ||    $49 [  98% of    $50]     $53 [ 106% of    $50]
 | |
|                expenses:food        ||   $396 [  99% of   $400]    $412 [ 103% of   $400]
 | |
|                expenses:movies      ||    $30 [ 100% of    $30]       0 [   0% of    $30]
 | |
|                income               ||  $1950 [  98% of  $2000]   $2100 [ 105% of  $2000]
 | |
|               ----------------------++----------------------------------------------------
 | |
|                                     ||      0 [              0]       0 [              0]
 | |
| 
 | |
|        Note this is different from a normal balance report in several ways:
 | |
| 
 | |
|        o Only accounts with budget goals during the report period  are  shown,
 | |
|          by default.
 | |
| 
 | |
|        o In  each column, in square brackets after the actual amount, budgeted
 | |
|          amounts are shown, along with the percentage of budget used.
 | |
| 
 | |
|        o All parent accounts are always shown, even in flat mode.  Eg  assets,
 | |
|          assets:bank, and expenses above.
 | |
| 
 | |
|        o Amounts  always include all subaccounts, budgeted or unbudgeted, even
 | |
|          in flat mode.
 | |
| 
 | |
|        This means that the numbers displayed will not always add up! Eg above,
 | |
|        the  expenses  actual  amount  includes the gifts and supplies transac-
 | |
|        tions, but the expenses:gifts and expenses:supplies  accounts  are  not
 | |
|        shown, as they have no budget amounts declared.
 | |
| 
 | |
|        This  can  be confusing.  When you need to make things clearer, use the
 | |
|        -E/--empty flag, which will reveal all  accounts  including  unbudgeted
 | |
|        ones, giving the full picture.  Eg:
 | |
| 
 | |
|               $ hledger balance -M --budget --empty
 | |
|               Budget performance in 2017/11/01-2017/12/31:
 | |
| 
 | |
|                                     ||                      Nov                       Dec
 | |
|               ======================++====================================================
 | |
|                assets               || $-2445 [  99% of $-2480]  $-2665 [ 107% of $-2480]
 | |
|                assets:bank          || $-2445 [  99% of $-2480]  $-2665 [ 107% of $-2480]
 | |
|                assets:bank:checking || $-2445 [  99% of $-2480]  $-2665 [ 107% of $-2480]
 | |
|                expenses             ||   $495 [ 103% of   $480]    $565 [ 118% of   $480]
 | |
|                expenses:bus         ||    $49 [  98% of    $50]     $53 [ 106% of    $50]
 | |
|                expenses:food        ||   $396 [  99% of   $400]    $412 [ 103% of   $400]
 | |
|                expenses:gifts       ||      0                      $100
 | |
|                expenses:movies      ||    $30 [ 100% of    $30]       0 [   0% of    $30]
 | |
|                expenses:supplies    ||    $20                         0
 | |
|                income               ||  $1950 [  98% of  $2000]   $2100 [ 105% of  $2000]
 | |
|               ----------------------++----------------------------------------------------
 | |
|                                     ||      0 [              0]       0 [              0]
 | |
| 
 | |
|        You can roll over unspent budgets to next period with --cumulative:
 | |
| 
 | |
|               $ hledger balance -M --budget --cumulative
 | |
|               Budget performance in 2017/11/01-2017/12/31:
 | |
| 
 | |
|                                     ||                      Nov                       Dec
 | |
|               ======================++====================================================
 | |
|                assets               || $-2445 [  99% of $-2480]  $-5110 [ 103% of $-4960]
 | |
|                assets:bank          || $-2445 [  99% of $-2480]  $-5110 [ 103% of $-4960]
 | |
|                assets:bank:checking || $-2445 [  99% of $-2480]  $-5110 [ 103% of $-4960]
 | |
|                expenses             ||   $495 [ 103% of   $480]   $1060 [ 110% of   $960]
 | |
|                expenses:bus         ||    $49 [  98% of    $50]    $102 [ 102% of   $100]
 | |
|                expenses:food        ||   $396 [  99% of   $400]    $808 [ 101% of   $800]
 | |
|                expenses:movies      ||    $30 [ 100% of    $30]     $30 [  50% of    $60]
 | |
|                income               ||  $1950 [  98% of  $2000]   $4050 [ 101% of  $4000]
 | |
|               ----------------------++----------------------------------------------------
 | |
|                                     ||      0 [              0]       0 [              0]
 | |
| 
 | |
|        For more examples, see Budgeting and Forecasting.
 | |
| 
 | |
|    Nested budgets
 | |
|        You  can  add budgets to any account in your account hierarchy.  If you
 | |
|        have budgets on both parent account and some of its children, then bud-
 | |
|        get(s)  of  the  child account(s) would be added to the budget of their
 | |
|        parent, much like account balances behave.
 | |
| 
 | |
|        In the most simple case this means that once you add a  budget  to  any
 | |
|        account, all its parents would have budget as well.
 | |
| 
 | |
|        To illustrate this, consider the following budget:
 | |
| 
 | |
|               ~ monthly from 2019/01
 | |
|                   expenses:personal             $1,000.00
 | |
|                   expenses:personal:electronics    $100.00
 | |
|                   liabilities
 | |
| 
 | |
|        With  this,  monthly  budget  for electronics is defined to be $100 and
 | |
|        budget for personal expenses is an additional $1000,  which  implicitly
 | |
|        means that budget for both expenses:personal and expenses is $1100.
 | |
| 
 | |
|        Transactions  in expenses:personal:electronics will be counted both to-
 | |
|        wards its $100 budget and $1100 of expenses:personal , and transactions
 | |
|        in  any  other subaccount of expenses:personal would be counted towards
 | |
|        only towards the budget of expenses:personal.
 | |
| 
 | |
|        For example, let's consider these transactions:
 | |
| 
 | |
|               ~ monthly from 2019/01
 | |
|                   expenses:personal             $1,000.00
 | |
|                   expenses:personal:electronics    $100.00
 | |
|                   liabilities
 | |
| 
 | |
|               2019/01/01 Google home hub
 | |
|                   expenses:personal:electronics          $90.00
 | |
|                   liabilities                           $-90.00
 | |
| 
 | |
|               2019/01/02 Phone screen protector
 | |
|                   expenses:personal:electronics:upgrades          $10.00
 | |
|                   liabilities
 | |
| 
 | |
|               2019/01/02 Weekly train ticket
 | |
|                   expenses:personal:train tickets       $153.00
 | |
|                   liabilities
 | |
| 
 | |
|               2019/01/03 Flowers
 | |
|                   expenses:personal          $30.00
 | |
|                   liabilities
 | |
| 
 | |
|        As you can see, we  have  transactions  in  expenses:personal:electron-
 | |
|        ics:upgrades  and  expenses:personal:train  tickets,  and since both of
 | |
|        these accounts are without explicitly defined  budget,  these  transac-
 | |
|        tions would be counted towards budgets of expenses:personal:electronics
 | |
|        and expenses:personal accordingly:
 | |
| 
 | |
|               $ hledger balance --budget -M
 | |
|               Budget performance in 2019/01:
 | |
| 
 | |
|                                              ||                           Jan
 | |
|               ===============================++===============================
 | |
|                expenses                      ||  $283.00 [  26% of  $1100.00]
 | |
|                expenses:personal             ||  $283.00 [  26% of  $1100.00]
 | |
|                expenses:personal:electronics ||  $100.00 [ 100% of   $100.00]
 | |
|                liabilities                   || $-283.00 [  26% of $-1100.00]
 | |
|               -------------------------------++-------------------------------
 | |
|                                              ||        0 [                 0]
 | |
| 
 | |
|        And with --empty, we can get a better picture of budget allocation  and
 | |
|        consumption:
 | |
| 
 | |
|               $ hledger balance --budget -M --empty
 | |
|               Budget performance in 2019/01:
 | |
| 
 | |
|                                                       ||                           Jan
 | |
|               ========================================++===============================
 | |
|                expenses                               ||  $283.00 [  26% of  $1100.00]
 | |
|                expenses:personal                      ||  $283.00 [  26% of  $1100.00]
 | |
|                expenses:personal:electronics          ||  $100.00 [ 100% of   $100.00]
 | |
|                expenses:personal:electronics:upgrades ||   $10.00
 | |
|                expenses:personal:train tickets        ||  $153.00
 | |
|                liabilities                            || $-283.00 [  26% of $-1100.00]
 | |
|               ----------------------------------------++-------------------------------
 | |
|                                                       ||        0 [                 0]
 | |
| 
 | |
|    Output format
 | |
|        The  balance  command supports output destination and output format se-
 | |
|        lection.
 | |
| 
 | |
|    balancesheet
 | |
|        balancesheet, bs
 | |
|        This command displays a simple balance sheet, showing historical ending
 | |
|        balances  of  asset  and  liability accounts (ignoring any report begin
 | |
|        date).  It assumes that these accounts are under a top-level  asset  or
 | |
|        liability account (case insensitive, plural forms also allowed).
 | |
| 
 | |
|        Note  this  report shows all account balances with normal positive sign
 | |
|        (like conventional financial statements, unlike balance/print/register)
 | |
|        (experimental).
 | |
| 
 | |
|        Example:
 | |
| 
 | |
|               $ hledger balancesheet
 | |
|               Balance Sheet
 | |
| 
 | |
|               Assets:
 | |
|                                $-1  assets
 | |
|                                 $1    bank:saving
 | |
|                                $-2    cash
 | |
|               --------------------
 | |
|                                $-1
 | |
| 
 | |
|               Liabilities:
 | |
|                                 $1  liabilities:debts
 | |
|               --------------------
 | |
|                                 $1
 | |
| 
 | |
|               Total:
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|        With a reporting interval, multiple columns will be shown, one for each
 | |
|        report period.  As with multicolumn balance reports, you can alter  the
 | |
|        report  mode  with  --change/--cumulative/--historical.   Normally bal-
 | |
|        ancesheet shows historical ending balances, which is what you need  for
 | |
|        a  balance  sheet;  note  this means it ignores report begin dates (and
 | |
|        -T/--row-total, since summing end  balances  generally  does  not  make
 | |
|        sense).   Instead  of absolute values percentages can be displayed with
 | |
|        -%.
 | |
| 
 | |
|        This command also supports output destination and output format  selec-
 | |
|        tion.
 | |
| 
 | |
|    balancesheetequity
 | |
|        balancesheetequity, bse
 | |
|        Just  like  balancesheet,  but also reports Equity (which it assumes is
 | |
|        under a top-level equity account).
 | |
| 
 | |
|        Example:
 | |
| 
 | |
|               $ hledger balancesheetequity
 | |
|               Balance Sheet With Equity
 | |
| 
 | |
|               Assets:
 | |
|                                $-2  assets
 | |
|                                 $1    bank:saving
 | |
|                                $-3    cash
 | |
|               --------------------
 | |
|                                $-2
 | |
| 
 | |
|               Liabilities:
 | |
|                                 $1  liabilities:debts
 | |
|               --------------------
 | |
|                                 $1
 | |
| 
 | |
|               Equity:
 | |
|                         $1  equity:owner
 | |
|               --------------------
 | |
|                         $1
 | |
| 
 | |
|               Total:
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|    cashflow
 | |
|        cashflow, cf
 | |
|        This command displays a simple cashflow statement, showing  changes  in
 | |
|        "cash"  accounts.  It assumes that these accounts are under a top-level
 | |
|        asset account (case insensitive, plural forms also allowed) and do  not
 | |
|        contain  receivable  or  A/R in their name.  Note this report shows all
 | |
|        account balances with normal positive sign (like conventional financial
 | |
|        statements, unlike balance/print/register) (experimental).
 | |
| 
 | |
|        Example:
 | |
| 
 | |
|               $ hledger cashflow
 | |
|               Cashflow Statement
 | |
| 
 | |
|               Cash flows:
 | |
|                                $-1  assets
 | |
|                                 $1    bank:saving
 | |
|                                $-2    cash
 | |
|               --------------------
 | |
|                                $-1
 | |
| 
 | |
|               Total:
 | |
|               --------------------
 | |
|                                $-1
 | |
| 
 | |
|        With a reporting interval, multiple columns will be shown, one for each
 | |
|        report period.  Normally cashflow shows changes in assets  per  period,
 | |
|        though  as  with  multicolumn  balance reports you can alter the report
 | |
|        mode with --change/--cumulative/--historical.  Instead of absolute val-
 | |
|        ues percentages can be displayed with -%.
 | |
| 
 | |
|        This  command also supports output destination and output format selec-
 | |
|        tion.
 | |
| 
 | |
|    check-dates
 | |
|        check-dates
 | |
|        Check that transactions are sorted by increasing date.   With  --date2,
 | |
|        checks  secondary  dates  instead.   With  --strict, dates must also be
 | |
|        unique.  With a query, only matched transactions'  dates  are  checked.
 | |
|        Reads the default journal file, or another specified with -f.
 | |
| 
 | |
|    check-dupes
 | |
|        check-dupes
 | |
|        Reports  account names having the same leaf but different prefixes.  In
 | |
|        other words, two or  more  leaves  that  are  categorized  differently.
 | |
|        Reads the default journal file, or another specified as an argument.
 | |
| 
 | |
|        An example: http://stefanorodighiero.net/software/hledger-dupes.html
 | |
| 
 | |
|    close
 | |
|        close, equity
 | |
|        Prints  a  "closing  balances"  transaction  and  an "opening balances"
 | |
|        transaction that bring account balances to and from zero, respectively.
 | |
|        These can be added to your journal file(s), eg to bring asset/liability
 | |
|        balances forward into a new journal file, or to close out  revenues/ex-
 | |
|        penses to retained earnings at the end of a period.
 | |
| 
 | |
|        You  can  print  just one of these transactions by using the --close or
 | |
|        --open flag.  You can customise their descriptions  with  the  --close-
 | |
|        desc and --open-desc options.
 | |
| 
 | |
|        One amountless posting to "equity:opening/closing balances" is added to
 | |
|        balance the transactions, by default.  You can customise  this  account
 | |
|        name  with  --close-acct  and  --open-acct;  if you specify only one of
 | |
|        these, it will be used for both.
 | |
| 
 | |
|        With --x/--explicit, the equity posting's amount will be shown.  And if
 | |
|        it  involves multiple commodities, a posting for each commodity will be
 | |
|        shown, as with the print command.
 | |
| 
 | |
|        With --interleaved, the equity postings are shown next to the  postings
 | |
|        they balance, which makes troubleshooting easier.
 | |
| 
 | |
|        By default, transaction prices in the journal are ignored when generat-
 | |
|        ing the closing/opening transactions.  With --show-costs, this cost in-
 | |
|        formation  is preserved (balance -B reports will be unchanged after the
 | |
|        transition).  Separate postings are generated for  each  cost  in  each
 | |
|        commodity.   Note  this can generate very large journal entries, if you
 | |
|        have many foreign currency or investment transactions.
 | |
| 
 | |
|    close usage
 | |
|        If you split your journal files by time (eg yearly), you will typically
 | |
|        run  this command at the end of the year, and save the closing transac-
 | |
|        tion as last entry of the old file, and the opening transaction as  the
 | |
|        first  entry  of the new file.  This makes the files self contained, so
 | |
|        that correct balances are reported no matter which of them are  loaded.
 | |
|        Ie,  if you load just one file, the balances are initialised correctly;
 | |
|        or if you load several files, the  redundant  closing/opening  transac-
 | |
|        tions  cancel  each other out.  (They will show up in print or register
 | |
|        reports; you can  exclude  them  with  a  query  like  not:desc:'(open-
 | |
|        ing|closing) balances'.)
 | |
| 
 | |
|        If you're running a business, you might also use this command to "close
 | |
|        the books" at the end of  an  accounting  period,  transferring  income
 | |
|        statement  account  balances  to  retained  earnings.  (You may want to
 | |
|        change the equity account name to something like "equity:retained earn-
 | |
|        ings".)
 | |
| 
 | |
|        By  default,  the  closing transaction is dated yesterday, the balances
 | |
|        are calculated as of end of yesterday, and the opening  transaction  is
 | |
|        dated  today.  To close on some other date, use: hledger close -e OPEN-
 | |
|        INGDATE.  Eg, to close/open on the 2018/2019  boundary,  use  -e  2019.
 | |
|        You can also use -p or date:PERIOD (any starting date is ignored).
 | |
| 
 | |
|        Both  transactions  will  include balance assertions for the closed/re-
 | |
|        opened accounts.  You probably shouldn't use status or realness filters
 | |
|        (like  -C or -R or status:) with this command, or the generated balance
 | |
|        assertions will depend on these flags.  Likewise, if you run this  com-
 | |
|        mand  with  --auto, the balance assertions will probably always require
 | |
|        --auto.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|        Carrying asset/liability balances into a new file for 2019:
 | |
| 
 | |
|               $ hledger close -f 2018.journal -e 2019 assets liabilities --open
 | |
|                   # (copy/paste the output to the start of your 2019 journal file)
 | |
|               $ hledger close -f 2018.journal -e 2019 assets liabilities --close
 | |
|                   # (copy/paste the output to the end of your 2018 journal file)
 | |
| 
 | |
|        Now:
 | |
| 
 | |
|               $ hledger bs -f 2019.journal                   # one file - balances are correct
 | |
|               $ hledger bs -f 2018.journal -f 2019.journal   # two files - balances still correct
 | |
|               $ hledger bs -f 2018.journal not:desc:closing  # to see year-end balances, must exclude closing txn
 | |
| 
 | |
|        Transactions spanning the closing date can complicate matters, breaking
 | |
|        balance assertions:
 | |
| 
 | |
|               2018/12/30 a purchase made in 2018, clearing the following year
 | |
|                   expenses:food          5
 | |
|                   assets:bank:checking  -5  ; [2019/1/2]
 | |
| 
 | |
|        Here's one way to resolve that:
 | |
| 
 | |
|               ; in 2018.journal:
 | |
|               2018/12/30 a purchase made in 2018, clearing the following year
 | |
|                   expenses:food          5
 | |
|                   liabilities:pending
 | |
| 
 | |
|               ; in 2019.journal:
 | |
|               2019/1/2 clearance of last year's pending transactions
 | |
|                   liabilities:pending    5 = 0
 | |
|                   assets:checking
 | |
| 
 | |
|    commodities
 | |
|        commodities
 | |
|        List all commodity/currency symbols used or declared in the journal.
 | |
| 
 | |
|    descriptions
 | |
|        descriptions Show descriptions.
 | |
| 
 | |
|        This command lists all descriptions that appear in transactions.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger descriptions
 | |
|               Store Name
 | |
|               Gas Station | Petrol
 | |
|               Person A
 | |
| 
 | |
|    diff
 | |
|        diff
 | |
|        Compares  a  particular  account's transactions in two input files.  It
 | |
|        shows any transactions to this account which are in one file but not in
 | |
|        the other.
 | |
| 
 | |
|        More precisely, for each posting affecting this account in either file,
 | |
|        it looks for a corresponding posting in the other file which posts  the
 | |
|        same  amount  to  the  same  account (ignoring date, description, etc.)
 | |
|        Since postings not transactions are compared, this also works when mul-
 | |
|        tiple bank transactions have been combined into a single journal entry.
 | |
| 
 | |
|        This is useful eg if you have downloaded an account's transactions from
 | |
|        your bank (eg as CSV data).  When hledger and your bank disagree  about
 | |
|        the account balance, you can compare the bank data with your journal to
 | |
|        find out the cause.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger diff -f $LEDGER_FILE -f bank.csv assets:bank:giro
 | |
|               These transactions are in the first file only:
 | |
| 
 | |
|               2014/01/01 Opening Balances
 | |
|                   assets:bank:giro              EUR ...
 | |
|                   ...
 | |
|                   equity:opening balances       EUR -...
 | |
| 
 | |
|               These transactions are in the second file only:
 | |
| 
 | |
|    files
 | |
|        files
 | |
|        List all files included in the journal.  With a  REGEX  argument,  only
 | |
|        file names matching the regular expression (case sensitive) are shown.
 | |
| 
 | |
|    help
 | |
|        help
 | |
|        Show any of the hledger manuals.
 | |
| 
 | |
|        The  help  command  displays any of the main hledger manuals, in one of
 | |
|        several ways.  Run it with no argument to list the manuals, or  provide
 | |
|        a full or partial manual name to select one.
 | |
| 
 | |
|        hledger  manuals  are  available in several formats.  hledger help will
 | |
|        use the first of these  display  methods  that  it  finds:  info,  man,
 | |
|        $PAGER,  less,  stdout (or when non-interactive, just stdout).  You can
 | |
|        force a particular viewer with the --info, --man, --pager, --cat flags.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger help
 | |
|               Please choose a manual by typing "hledger help MANUAL" (a substring is ok).
 | |
|               Manuals: hledger hledger-ui hledger-web journal csv timeclock timedot
 | |
| 
 | |
|               $ hledger help h --man
 | |
| 
 | |
|               hledger(1)                    hledger User Manuals                    hledger(1)
 | |
| 
 | |
|               NAME
 | |
|                      hledger - a command-line accounting tool
 | |
| 
 | |
|               SYNOPSIS
 | |
|                      hledger [-f FILE] COMMAND [OPTIONS] [ARGS]
 | |
|                      hledger [-f FILE] ADDONCMD -- [OPTIONS] [ARGS]
 | |
|                      hledger
 | |
| 
 | |
|               DESCRIPTION
 | |
|                      hledger  is  a  cross-platform  program  for tracking money, time, or any
 | |
|               ...
 | |
| 
 | |
|    import
 | |
|        import
 | |
|        Read new transactions added to each FILE since last run, and  add  them
 | |
|        to  the  main journal file.  Or with --dry-run, just print the transac-
 | |
|        tions that would be added.  Or with --catchup, just  mark  all  of  the
 | |
|        FILEs' transactions as imported, without actually importing any.
 | |
| 
 | |
|        The input files are specified as arguments - no need to write -f before
 | |
|        each one.  So eg to add new transactions from all CSV files to the main
 | |
|        journal, it's just: hledger import *.csv
 | |
| 
 | |
|        New transactions are detected in the same way as print --new: by assum-
 | |
|        ing transactions are always added to the input files in increasing date
 | |
|        order, and by saving .latest.FILE state files.
 | |
| 
 | |
|        The  --dry-run output is in journal format, so you can filter it, eg to
 | |
|        see only uncategorised transactions:
 | |
| 
 | |
|               $ hledger import --dry ... | hledger -f- print unknown --ignore-assertions
 | |
| 
 | |
|    Importing balance assignments
 | |
|        Entries added by import will have their posting amounts  made  explicit
 | |
|        (like  hledger  print  -x).  This means that any balance assignments in
 | |
|        imported files must be evaluated; but, imported files don't get to  see
 | |
|        the  main file's account balances.  As a result, importing entries with
 | |
|        balance assignments (eg from an institution that provides only balances
 | |
|        and  not  posting  amounts)  will  probably  generate incorrect posting
 | |
|        amounts.  To avoid this problem, use print instead of import:
 | |
| 
 | |
|               $ hledger print IMPORTFILE [--new] >> $LEDGER_FILE
 | |
| 
 | |
|        (If you think import should leave amounts  implicit  like  print  does,
 | |
|        please test it and send a pull request.)
 | |
| 
 | |
|    incomestatement
 | |
|        incomestatement, is
 | |
|        This  command  displays a simple income statement, showing revenues and
 | |
|        expenses during a period.  It assumes that these accounts are  under  a
 | |
|        top-level  revenue or income or expense account (case insensitive, plu-
 | |
|        ral forms also allowed).  Note this report shows all  account  balances
 | |
|        with  normal positive sign (like conventional financial statements, un-
 | |
|        like balance/print/register) (experimental).
 | |
| 
 | |
|        This command displays a simple income statement.  It currently  assumes
 | |
|        that  you have top-level accounts named income (or revenue) and expense
 | |
|        (plural forms also allowed.)
 | |
| 
 | |
|               $ hledger incomestatement
 | |
|               Income Statement
 | |
| 
 | |
|               Revenues:
 | |
|                                $-2  income
 | |
|                                $-1    gifts
 | |
|                                $-1    salary
 | |
|               --------------------
 | |
|                                $-2
 | |
| 
 | |
|               Expenses:
 | |
|                                 $2  expenses
 | |
|                                 $1    food
 | |
|                                 $1    supplies
 | |
|               --------------------
 | |
|                                 $2
 | |
| 
 | |
|               Total:
 | |
|               --------------------
 | |
|                                  0
 | |
| 
 | |
|        With a reporting interval, multiple columns will be shown, one for each
 | |
|        report  period.   Normally  incomestatement shows revenues/expenses per
 | |
|        period, though as with multicolumn balance reports you  can  alter  the
 | |
|        report  mode with --change/--cumulative/--historical.  Instead of abso-
 | |
|        lute values percentages can be displayed with -%.
 | |
| 
 | |
|        This command also supports output destination and output format  selec-
 | |
|        tion.
 | |
| 
 | |
|    notes
 | |
|        notes Show notes.
 | |
| 
 | |
|        This command lists all notes that appear in transactions.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger notes
 | |
|               Petrol
 | |
|               Snacks
 | |
| 
 | |
|    payees
 | |
|        payees Show payee names.
 | |
| 
 | |
|        This command lists all payee names that appear in transactions.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger payees
 | |
|               Store Name
 | |
|               Gas Station
 | |
|               Person A
 | |
| 
 | |
|    prices
 | |
|        prices
 | |
|        Print  market  price  directives  from the journal.  With --costs, also
 | |
|        print synthetic market prices based on transaction prices.  With  --in-
 | |
|        verted-costs,  also  print  inverse prices based on transaction prices.
 | |
|        Prices (and postings providing prices) can  be  filtered  by  a  query.
 | |
|        Price amounts are always displayed with their full precision.
 | |
| 
 | |
|    print
 | |
|        print, txns, p
 | |
|        Show transaction journal entries, sorted by date.
 | |
| 
 | |
|        The print command displays full journal entries (transactions) from the
 | |
|        journal file in date order, tidily formatted.  With  --date2,  transac-
 | |
|        tions are sorted by secondary date instead.
 | |
| 
 | |
|        print's output is always a valid hledger journal.
 | |
|        It  preserves all transaction information, but it does not preserve di-
 | |
|        rectives or inter-transaction comments
 | |
| 
 | |
|               $ hledger print
 | |
|               2008/01/01 income
 | |
|                   assets:bank:checking            $1
 | |
|                   income:salary                  $-1
 | |
| 
 | |
|               2008/06/01 gift
 | |
|                   assets:bank:checking            $1
 | |
|                   income:gifts                   $-1
 | |
| 
 | |
|               2008/06/02 save
 | |
|                   assets:bank:saving              $1
 | |
|                   assets:bank:checking           $-1
 | |
| 
 | |
|               2008/06/03 * eat & shop
 | |
|                   expenses:food                $1
 | |
|                   expenses:supplies            $1
 | |
|                   assets:cash                 $-2
 | |
| 
 | |
|               2008/12/31 * pay off
 | |
|                   liabilities:debts               $1
 | |
|                   assets:bank:checking           $-1
 | |
| 
 | |
|        Normally, the journal entry's explicit or implicit amount style is pre-
 | |
|        served.  For example, when an amount is omitted in the journal, it will
 | |
|        not appear in the output.  Similarly, when a transaction price  is  im-
 | |
|        plied  but  not written, it will not appear in the output.  You can use
 | |
|        the -x/--explicit flag to make all amounts and transaction  prices  ex-
 | |
|        plicit,  which  can  be  useful  for troubleshooting or for making your
 | |
|        journal more readable and robust against data entry errors.
 | |
| 
 | |
|        Note, -x/--explicit will cause postings with a  multi-commodity  amount
 | |
|        (these  can  arise  when  a multi-commodity transaction has an implicit
 | |
|        amount) to be split into multiple  single-commodity  postings,  keeping
 | |
|        the output parseable.
 | |
| 
 | |
|        With  -B/--cost,  amounts with transaction prices are converted to cost
 | |
|        using that price.  This can be used for troubleshooting.
 | |
| 
 | |
|        With -m/--match and a STR argument, print will show at most one  trans-
 | |
|        action:  the  one  one whose description is most similar to STR, and is
 | |
|        most recent.  STR should contain at least two characters.  If there  is
 | |
|        no similar-enough match, no transaction will be shown.
 | |
| 
 | |
|        With --new, for each FILE being read, hledger reads (and writes) a spe-
 | |
|        cial state file (.latest.FILE in the same  directory),  containing  the
 | |
|        latest  transaction  date(s)  that  were  seen last time FILE was read.
 | |
|        When this file is found, only transactions with newer  dates  (and  new
 | |
|        transactions  on  the latest date) are printed.  This is useful for ig-
 | |
|        noring already-seen entries in import  data,  such  as  downloaded  CSV
 | |
|        files.  Eg:
 | |
| 
 | |
|               $ hledger -f bank1.csv print --new
 | |
|               # shows transactions added since last print --new on this file
 | |
| 
 | |
|        This  assumes  that  transactions added to FILE always have same or in-
 | |
|        creasing dates, and that transactions on the same day do  not  get  re-
 | |
|        ordered.  See also the import command.
 | |
| 
 | |
|        This  command also supports output destination and output format selec-
 | |
|        tion.  Here's an example of print's CSV output:
 | |
| 
 | |
|               $ hledger print -Ocsv
 | |
|               "txnidx","date","date2","status","code","description","comment","account","amount","commodity","credit","debit","posting-status","posting-comment"
 | |
|               "1","2008/01/01","","","","income","","assets:bank:checking","1","$","","1","",""
 | |
|               "1","2008/01/01","","","","income","","income:salary","-1","$","1","","",""
 | |
|               "2","2008/06/01","","","","gift","","assets:bank:checking","1","$","","1","",""
 | |
|               "2","2008/06/01","","","","gift","","income:gifts","-1","$","1","","",""
 | |
|               "3","2008/06/02","","","","save","","assets:bank:saving","1","$","","1","",""
 | |
|               "3","2008/06/02","","","","save","","assets:bank:checking","-1","$","1","","",""
 | |
|               "4","2008/06/03","","*","","eat & shop","","expenses:food","1","$","","1","",""
 | |
|               "4","2008/06/03","","*","","eat & shop","","expenses:supplies","1","$","","1","",""
 | |
|               "4","2008/06/03","","*","","eat & shop","","assets:cash","-2","$","2","","",""
 | |
|               "5","2008/12/31","","*","","pay off","","liabilities:debts","1","$","","1","",""
 | |
|               "5","2008/12/31","","*","","pay off","","assets:bank:checking","-1","$","1","","",""
 | |
| 
 | |
|        o There is one CSV record per posting, with  the  parent  transaction's
 | |
|          fields repeated.
 | |
| 
 | |
|        o The "txnidx" (transaction index) field shows which postings belong to
 | |
|          the same transaction.  (This number might change if transactions  are
 | |
|          reordered  within  the file, files are parsed/included in a different
 | |
|          order, etc.)
 | |
| 
 | |
|        o The amount is separated into "commodity" (the  symbol)  and  "amount"
 | |
|          (numeric quantity) fields.
 | |
| 
 | |
|        o The numeric amount is repeated in either the "credit" or "debit" col-
 | |
|          umn, for convenience.  (Those names are not accurate in the  account-
 | |
|          ing  sense;  it  just  puts negative amounts under credit and zero or
 | |
|          greater amounts under debit.)
 | |
| 
 | |
|    print-unique
 | |
|        print-unique
 | |
|        Print transactions which do not reuse an already-seen description.
 | |
| 
 | |
|        Example:
 | |
| 
 | |
|               $ cat unique.journal
 | |
|               1/1 test
 | |
|                (acct:one)  1
 | |
|               2/2 test
 | |
|                (acct:two)  2
 | |
|               $ LEDGER_FILE=unique.journal hledger print-unique
 | |
|               (-f option not supported)
 | |
|               2015/01/01 test
 | |
|                   (acct:one)             1
 | |
| 
 | |
|    register
 | |
|        register, reg, r
 | |
|        Show postings and their running total.
 | |
| 
 | |
|        The register command displays postings in date order, one per line, and
 | |
|        their  running  total.  This is typically used with a query selecting a
 | |
|        particular account, to see that account's activity:
 | |
| 
 | |
|               $ hledger register checking
 | |
|               2008/01/01 income               assets:bank:checking            $1           $1
 | |
|               2008/06/01 gift                 assets:bank:checking            $1           $2
 | |
|               2008/06/02 save                 assets:bank:checking           $-1           $1
 | |
|               2008/12/31 pay off              assets:bank:checking           $-1            0
 | |
| 
 | |
|        With --date2, it shows and sorts by secondary date instead.
 | |
| 
 | |
|        The --historical/-H flag adds the balance from  any  undisplayed  prior
 | |
|        postings  to  the  running  total.  This is useful when you want to see
 | |
|        only recent activity, with a historically accurate running balance:
 | |
| 
 | |
|               $ hledger register checking -b 2008/6 --historical
 | |
|               2008/06/01 gift                 assets:bank:checking            $1           $2
 | |
|               2008/06/02 save                 assets:bank:checking           $-1           $1
 | |
|               2008/12/31 pay off              assets:bank:checking           $-1            0
 | |
| 
 | |
|        The --depth option limits the amount of sub-account detail displayed.
 | |
| 
 | |
|        The --average/-A flag shows the running average posting amount  instead
 | |
|        of the running total (so, the final number displayed is the average for
 | |
|        the whole report period).  This flag implies --empty (see  below).   It
 | |
|        is  affected  by --historical.  It works best when showing just one ac-
 | |
|        count and one commodity.
 | |
| 
 | |
|        The --related/-r flag shows the other postings in the  transactions  of
 | |
|        the postings which would normally be shown.
 | |
| 
 | |
|        The  --invert flag negates all amounts.  For example, it can be used on
 | |
|        an income account where amounts are normally displayed as negative num-
 | |
|        bers.   It's  also  useful to show postings on the checking account to-
 | |
|        gether with the related account:
 | |
| 
 | |
|               $ hledger register --related --invert assets:checking
 | |
| 
 | |
|        With a reporting interval, register shows summary postings, one per in-
 | |
|        terval, aggregating the postings to each account:
 | |
| 
 | |
|               $ hledger register --monthly income
 | |
|               2008/01                 income:salary                          $-1          $-1
 | |
|               2008/06                 income:gifts                           $-1          $-2
 | |
| 
 | |
|        Periods  with no activity, and summary postings with a zero amount, are
 | |
|        not shown by default; use the --empty/-E flag to see them:
 | |
| 
 | |
|               $ hledger register --monthly income -E
 | |
|               2008/01                 income:salary                          $-1          $-1
 | |
|               2008/02                                                          0          $-1
 | |
|               2008/03                                                          0          $-1
 | |
|               2008/04                                                          0          $-1
 | |
|               2008/05                                                          0          $-1
 | |
|               2008/06                 income:gifts                           $-1          $-2
 | |
|               2008/07                                                          0          $-2
 | |
|               2008/08                                                          0          $-2
 | |
|               2008/09                                                          0          $-2
 | |
|               2008/10                                                          0          $-2
 | |
|               2008/11                                                          0          $-2
 | |
|               2008/12                                                          0          $-2
 | |
| 
 | |
|        Often, you'll want to see just one line per interval.  The --depth  op-
 | |
|        tion helps with this, causing subaccounts to be aggregated:
 | |
| 
 | |
|               $ hledger register --monthly assets --depth 1h
 | |
|               2008/01                 assets                                  $1           $1
 | |
|               2008/06                 assets                                 $-1            0
 | |
|               2008/12                 assets                                 $-1          $-1
 | |
| 
 | |
|        Note  when using report intervals, if you specify start/end dates these
 | |
|        will be adjusted outward if necessary to contain a whole number of  in-
 | |
|        tervals.   This  ensures  that  the  first  and last intervals are full
 | |
|        length and comparable to the others in the report.
 | |
| 
 | |
|    Custom register output
 | |
|        register uses the full terminal width by default,  except  on  windows.
 | |
|        You  can override this by setting the COLUMNS environment variable (not
 | |
|        a bash shell variable) or by using the --width/-w option.
 | |
| 
 | |
|        The description and account columns normally share  the  space  equally
 | |
|        (about half of (width - 40) each).  You can adjust this by adding a de-
 | |
|        scription width as part of --width's argument, comma-separated: --width
 | |
|        W,D .  Here's a diagram (won't display correctly in --help):
 | |
| 
 | |
|               <--------------------------------- width (W) ---------------------------------->
 | |
|               date (10)  description (D)       account (W-41-D)     amount (12)   balance (12)
 | |
|               DDDDDDDDDD dddddddddddddddddddd  aaaaaaaaaaaaaaaaaaa  AAAAAAAAAAAA  AAAAAAAAAAAA
 | |
| 
 | |
|        and some examples:
 | |
| 
 | |
|               $ hledger reg                     # use terminal width (or 80 on windows)
 | |
|               $ hledger reg -w 100              # use width 100
 | |
|               $ COLUMNS=100 hledger reg         # set with one-time environment variable
 | |
|               $ export COLUMNS=100; hledger reg # set till session end (or window resize)
 | |
|               $ hledger reg -w 100,40           # set overall width 100, description width 40
 | |
|               $ hledger reg -w $COLUMNS,40      # use terminal width, & description width 40
 | |
| 
 | |
|        This  command also supports output destination and output format selec-
 | |
|        tion.
 | |
| 
 | |
|    register-match
 | |
|        register-match
 | |
|        Print the one posting whose transaction description is closest to DESC,
 | |
|        in  the  style  of the register command.  If there are multiple equally
 | |
|        good matches, it shows the most recent.  Query  options  (options,  not
 | |
|        arguments)  can be used to restrict the search space.  Helps ledger-au-
 | |
|        tosync detect already-seen transactions when importing.
 | |
| 
 | |
|    rewrite
 | |
|        rewrite
 | |
|        Print all transactions, rewriting the postings of matched transactions.
 | |
|        For  now  the only rewrite available is adding new postings, like print
 | |
|        --auto.
 | |
| 
 | |
|        This is a start at a generic rewriter of transaction entries.  It reads
 | |
|        the  default  journal and prints the transactions, like print, but adds
 | |
|        one or more specified postings to any transactions matching QUERY.  The
 | |
|        posting  amounts can be fixed, or a multiplier of the existing transac-
 | |
|        tion's first posting amount.
 | |
| 
 | |
|        Examples:
 | |
| 
 | |
|               $ hledger-rewrite.hs ^income --add-posting '(liabilities:tax)  *.33  ; income tax' --add-posting '(reserve:gifts)  $100'
 | |
|               $ hledger-rewrite.hs expenses:gifts --add-posting '(reserve:gifts)  *-1"'
 | |
|               $ hledger-rewrite.hs -f rewrites.hledger
 | |
| 
 | |
|        rewrites.hledger may consist of entries like:
 | |
| 
 | |
|               = ^income amt:<0 date:2017
 | |
|                 (liabilities:tax)  *0.33  ; tax on income
 | |
|                 (reserve:grocery)  *0.25  ; reserve 25% for grocery
 | |
|                 (reserve:)  *0.25  ; reserve 25% for grocery
 | |
| 
 | |
|        Note the single quotes to protect the dollar sign from  bash,  and  the
 | |
|        two spaces between account and amount.
 | |
| 
 | |
|        More:
 | |
| 
 | |
|               $ hledger rewrite -- [QUERY]        --add-posting "ACCT  AMTEXPR" ...
 | |
|               $ hledger rewrite -- ^income        --add-posting '(liabilities:tax)  *.33'
 | |
|               $ hledger rewrite -- expenses:gifts --add-posting '(budget:gifts)  *-1"'
 | |
|               $ hledger rewrite -- ^income        --add-posting '(budget:foreign currency)  *0.25 JPY; diversify'
 | |
| 
 | |
|        Argument  for  --add-posting  option  is a usual posting of transaction
 | |
|        with an exception for amount specification.  More  precisely,  you  can
 | |
|        use '*' (star symbol) before the amount to indicate that that this is a
 | |
|        factor for an amount of original matched posting.  If  the  amount  in-
 | |
|        cludes a commodity name, the new posting amount will be in the new com-
 | |
|        modity; otherwise, it will be in the matched posting  amount's  commod-
 | |
|        ity.
 | |
| 
 | |
|    Re-write rules in a file
 | |
|        During  the  run  this  tool will execute so called "Automated Transac-
 | |
|        tions" found in any journal it process.  I.e instead of specifying this
 | |
|        operations in command line you can put them in a journal file.
 | |
| 
 | |
|               $ rewrite-rules.journal
 | |
| 
 | |
|        Make contents look like this:
 | |
| 
 | |
|               = ^income
 | |
|                   (liabilities:tax)  *.33
 | |
| 
 | |
|               = expenses:gifts
 | |
|                   budget:gifts  *-1
 | |
|                   assets:budget  *1
 | |
| 
 | |
|        Note  that '=' (equality symbol) that is used instead of date in trans-
 | |
|        actions you usually write.  It indicates the query by which you want to
 | |
|        match the posting to add new ones.
 | |
| 
 | |
|               $ hledger rewrite -- -f input.journal -f rewrite-rules.journal > rewritten-tidy-output.journal
 | |
| 
 | |
|        This is something similar to the commands pipeline:
 | |
| 
 | |
|               $ hledger rewrite -- -f input.journal '^income' --add-posting '(liabilities:tax)  *.33' \
 | |
|                 | hledger rewrite -- -f - expenses:gifts      --add-posting 'budget:gifts  *-1'       \
 | |
|                                                               --add-posting 'assets:budget  *1'       \
 | |
|                 > rewritten-tidy-output.journal
 | |
| 
 | |
|        It  is  important  to understand that relative order of such entries in
 | |
|        journal is important.  You can re-use result of previously added  post-
 | |
|        ings.
 | |
| 
 | |
|    Diff output format
 | |
|        To  use  this tool for batch modification of your journal files you may
 | |
|        find useful output in form of unified diff.
 | |
| 
 | |
|               $ hledger rewrite -- --diff -f examples/sample.journal '^income' --add-posting '(liabilities:tax)  *.33'
 | |
| 
 | |
|        Output might look like:
 | |
| 
 | |
|               --- /tmp/examples/sample.journal
 | |
|               +++ /tmp/examples/sample.journal
 | |
|               @@ -18,3 +18,4 @@
 | |
|                2008/01/01 income
 | |
|               -    assets:bank:checking  $1
 | |
|               +    assets:bank:checking            $1
 | |
|                    income:salary
 | |
|               +    (liabilities:tax)                0
 | |
|               @@ -22,3 +23,4 @@
 | |
|                2008/06/01 gift
 | |
|               -    assets:bank:checking  $1
 | |
|               +    assets:bank:checking            $1
 | |
|                    income:gifts
 | |
|               +    (liabilities:tax)                0
 | |
| 
 | |
|        If you'll pass this through patch tool you'll get transactions contain-
 | |
|        ing the posting that matches your query be updated.  Note that multiple
 | |
|        files might be update according to list of input  files  specified  via
 | |
|        --file options and include directives inside of these files.
 | |
| 
 | |
|        Be  careful.  Whole transaction being re-formatted in a style of output
 | |
|        from hledger print.
 | |
| 
 | |
|        See also:
 | |
| 
 | |
|        https://github.com/simonmichael/hledger/issues/99
 | |
| 
 | |
|    rewrite vs. print --auto
 | |
|        This command predates print --auto, and currently does  much  the  same
 | |
|        thing, but with these differences:
 | |
| 
 | |
|        o with  multiple files, rewrite lets rules in any file affect all other
 | |
|          files.  print --auto uses standard directive  scoping;  rules  affect
 | |
|          only child files.
 | |
| 
 | |
|        o rewrite's  query  limits which transactions can be rewritten; all are
 | |
|          printed.  print --auto's query limits which transactions are printed.
 | |
| 
 | |
|        o rewrite applies rules specified on command line or  in  the  journal.
 | |
|          print --auto applies rules specified in the journal.
 | |
| 
 | |
|    roi
 | |
|        roi
 | |
|        Shows  the  time-weighted (TWR) and money-weighted (IRR) rate of return
 | |
|        on your investments.
 | |
| 
 | |
|        This command assumes that you have account(s)  that  hold  nothing  but
 | |
|        your investments and whenever you record current appraisal/valuation of
 | |
|        these investments you offset unrealized profit and loss into account(s)
 | |
|        that, again, hold nothing but unrealized profit and loss.
 | |
| 
 | |
|        Any  transactions  affecting  balance  of investment account(s) and not
 | |
|        originating from unrealized profit and loss account(s) are  assumed  to
 | |
|        be your investments or withdrawals.
 | |
| 
 | |
|        At  a  minimum,  you need to supply a query (which could be just an ac-
 | |
|        count name) to select your investments with --inv, and another query to
 | |
|        identify your profit and loss transactions with --pnl.
 | |
| 
 | |
|        It  will  compute and display the internalized rate of return (IRR) and
 | |
|        time-weighted rate of return (TWR) for your investments  for  the  time
 | |
|        period  requested.  Both rates of return are annualized before display,
 | |
|        regardless of the length of reporting interval.
 | |
| 
 | |
|    stats
 | |
|        stats
 | |
|        Show some journal statistics.
 | |
| 
 | |
|        The stats command displays summary information for the  whole  journal,
 | |
|        or  a matched part of it.  With a reporting interval, it shows a report
 | |
|        for each report period.
 | |
| 
 | |
|        Example:
 | |
| 
 | |
|               $ hledger stats
 | |
|               Main journal file        : /src/hledger/examples/sample.journal
 | |
|               Included journal files   :
 | |
|               Transactions span        : 2008-01-01 to 2009-01-01 (366 days)
 | |
|               Last transaction         : 2008-12-31 (2333 days ago)
 | |
|               Transactions             : 5 (0.0 per day)
 | |
|               Transactions last 30 days: 0 (0.0 per day)
 | |
|               Transactions last 7 days : 0 (0.0 per day)
 | |
|               Payees/descriptions      : 5
 | |
|               Accounts                 : 8 (depth 3)
 | |
|               Commodities              : 1 ($)
 | |
|               Market prices            : 12 ($)
 | |
| 
 | |
|        This command also supports output destination and output format  selec-
 | |
|        tion.
 | |
| 
 | |
|    tags
 | |
|        tags
 | |
|        List  all the tag names used in the journal.  With a TAGREGEX argument,
 | |
|        only tag names matching the regular expression (case  insensitive)  are
 | |
|        shown.   With QUERY arguments, only transactions matching the query are
 | |
|        considered.  With --values flag, the tags' unique values are listed in-
 | |
|        stead.
 | |
| 
 | |
|    test
 | |
|        test
 | |
|        Run built-in unit tests.
 | |
| 
 | |
|        This  command  runs the unit tests built in to hledger and hledger-lib,
 | |
|        printing the results on stdout.  If any test fails, the exit code  will
 | |
|        be non-zero.
 | |
| 
 | |
|        This  is  mainly used by hledger developers, but you can also use it to
 | |
|        sanity-check the installed hledger executable on  your  platform.   All
 | |
|        tests  are  expected to pass - if you ever see a failure, please report
 | |
|        as a bug!
 | |
| 
 | |
|        This command also accepts tasty test runner options, written after a --
 | |
|        (double hyphen).  Eg to run only the tests in Hledger.Data.Amount, with
 | |
|        ANSI colour codes disabled:
 | |
| 
 | |
|               $ hledger test -- -pData.Amount --color=never
 | |
| 
 | |
|        For help on these, see  https://github.com/feuerbach/tasty#options  (--
 | |
|        --help currently doesn't show them).
 | |
| 
 | |
| ADD-ON COMMANDS
 | |
|        hledger  also  searches  for external add-on commands, and will include
 | |
|        these in the commands list.  These are programs or scripts in your PATH
 | |
|        whose  name starts with hledger- and ends with a recognised file exten-
 | |
|        sion (currently: no extension, bat,com,exe, hs,lhs,pl,py,rb,rkt,sh).
 | |
| 
 | |
|        Add-ons can be invoked like any hledger command, but there  are  a  few
 | |
|        things to be aware of.  Eg if the hledger-web add-on is installed,
 | |
| 
 | |
|        o hledger  -h  web  shows  hledger's  help,  while hledger web -h shows
 | |
|          hledger-web's help.
 | |
| 
 | |
|        o Flags specific to the add-on must have a preceding --  to  hide  them
 | |
|          from  hledger.   So hledger web --serve --port 9000 will be rejected;
 | |
|          you must use hledger web -- --serve --port 9000.
 | |
| 
 | |
|        o You can always run add-ons directly if preferred: hledger-web --serve
 | |
|          --port 9000.
 | |
| 
 | |
|        Add-ons  are  a relatively easy way to add local features or experiment
 | |
|        with new ideas.  They can be  written  in  any  language,  but  haskell
 | |
|        scripts  have  a  big  advantage:  they  can  use the same hledger (and
 | |
|        haskell) library functions that built-in commands do, for  command-line
 | |
|        options, journal parsing, reporting, etc.
 | |
| 
 | |
|        Here are some hledger add-ons available:
 | |
| 
 | |
|    Official add-ons
 | |
|        These are maintained and released along with hledger.
 | |
| 
 | |
|    ui
 | |
|        hledger-ui provides an efficient terminal interface.
 | |
| 
 | |
|    web
 | |
|        hledger-web provides a simple web interface.
 | |
| 
 | |
|    Third party add-ons
 | |
|        These  are  maintained  separately, and usually updated shortly after a
 | |
|        hledger release.
 | |
| 
 | |
|    iadd
 | |
|        hledger-iadd is a more interactive, terminal UI replacement for the add
 | |
|        command.
 | |
| 
 | |
|    interest
 | |
|        hledger-interest generates interest transactions for an account accord-
 | |
|        ing to various schemes.
 | |
| 
 | |
|    Experimental add-ons
 | |
|        These are available in source form in the hledger  repo's  bin/  direc-
 | |
|        tory.   They  may be less mature and documented than built-in commands.
 | |
|        Reading and tweaking these is a good way to start making your own!
 | |
| 
 | |
|    autosync
 | |
|        hledger-autosync is a symbolic link for easily running ledger-autosync,
 | |
|        if  installed.   ledger-autosync  does  deduplicating conversion of OFX
 | |
|        data and some CSV formats, and can also download the data if your  bank
 | |
|        offers OFX Direct Connect.
 | |
| 
 | |
|    chart
 | |
|        hledger-chart.hs is an old very basic pie chart generator.
 | |
| 
 | |
| ENVIRONMENT
 | |
|        COLUMNS  The  screen  width used by the register command.  Default: the
 | |
|        full terminal width.
 | |
| 
 | |
|        LEDGER_FILE The journal file path when not specified with -f.  Default:
 | |
|        ~/.hledger.journal  (on  windows,  perhaps C:/Users/USER/.hledger.jour-
 | |
|        nal).
 | |
| 
 | |
| FILES
 | |
|        Reads data from one or more files in hledger journal, timeclock,  time-
 | |
|        dot,   or   CSV   format   specified   with  -f,  or  $LEDGER_FILE,  or
 | |
|        $HOME/.hledger.journal          (on          windows,           perhaps
 | |
|        C:/Users/USER/.hledger.journal).
 | |
| 
 | |
| LIMITATIONS
 | |
|        The  need  to  precede  addon command options with -- when invoked from
 | |
|        hledger is awkward.
 | |
| 
 | |
|        When input data contains non-ascii characters, a suitable system locale
 | |
|        must be configured (or there will be an unhelpful error).  Eg on POSIX,
 | |
|        set LANG to something other than C.
 | |
| 
 | |
|        In a Microsoft Windows CMD window, non-ascii characters and colours are
 | |
|        not supported.
 | |
| 
 | |
|        On Windows, non-ascii characters may not display correctly when running
 | |
|        a hledger built in CMD in MSYS/CYGWIN, or vice-versa.
 | |
| 
 | |
|        In a Cygwin/MSYS/Mintty window, the tab key is not supported in hledger
 | |
|        add.
 | |
| 
 | |
|        Not  all of Ledger's journal file syntax is supported.  See file format
 | |
|        differences.
 | |
| 
 | |
|        On large data files, hledger  is  slower  and  uses  more  memory  than
 | |
|        Ledger.
 | |
| 
 | |
| TROUBLESHOOTING
 | |
|        Here  are some issues you might encounter when you run hledger (and re-
 | |
|        member you can also seek help from the IRC channel, mail  list  or  bug
 | |
|        tracker):
 | |
| 
 | |
|        Successfully installed, but "No command 'hledger' found"
 | |
|        stack and cabal install binaries into a special directory, which should
 | |
|        be added to your PATH environment variable.  Eg on  unix-like  systems,
 | |
|        that is ~/.local/bin and ~/.cabal/bin respectively.
 | |
| 
 | |
|        I set a custom LEDGER_FILE, but hledger is still using the default file
 | |
|        LEDGER_FILE  should  be  a  real environment variable, not just a shell
 | |
|        variable.  The command env | grep LEDGER_FILE should show it.  You  may
 | |
|        need to use export.  Here's an explanation.
 | |
| 
 | |
|        "Illegal  byte  sequence"  or  "Invalid or incomplete multibyte or wide
 | |
|        character" errors
 | |
|        In order to handle non-ascii letters and symbols (like ), hledger needs
 | |
|        an appropriate locale.  This is usually configured system-wide; you can
 | |
|        also configure it temporarily.  The locale may need to be one that sup-
 | |
|        ports  UTF-8,  if you built hledger with GHC < 7.2 (or possibly always,
 | |
|        I'm not sure yet).
 | |
| 
 | |
|        Here's  an  example  of  setting  the  locale  temporarily,  on  ubuntu
 | |
|        gnu/linux:
 | |
| 
 | |
|               $ file my.journal
 | |
|               my.journal: UTF-8 Unicode text                 # <- the file is UTF8-encoded
 | |
|               $ locale -a
 | |
|               C
 | |
|               en_US.utf8                             # <- a UTF8-aware locale is available
 | |
|               POSIX
 | |
|               $ LANG=en_US.utf8 hledger -f my.journal print   # <- use it for this command
 | |
| 
 | |
|        Here's one way to set it permanently, there are probably better ways:
 | |
| 
 | |
|               $ echo "export LANG=en_US.UTF-8" >>~/.bash_profile
 | |
|               $ bash --login
 | |
| 
 | |
|        If  we  preferred  to  use eg fr_FR.utf8, we might have to install that
 | |
|        first:
 | |
| 
 | |
|               $ apt-get install language-pack-fr
 | |
|               $ locale -a
 | |
|               C
 | |
|               en_US.utf8
 | |
|               fr_BE.utf8
 | |
|               fr_CA.utf8
 | |
|               fr_CH.utf8
 | |
|               fr_FR.utf8
 | |
|               fr_LU.utf8
 | |
|               POSIX
 | |
|               $ LANG=fr_FR.utf8 hledger -f my.journal print
 | |
| 
 | |
|        Note some platforms allow variant locale spellings, but not all (ubuntu
 | |
|        accepts fr_FR.UTF8, mac osx requires exactly fr_FR.UTF-8).
 | |
| 
 | |
| 
 | |
| 
 | |
| REPORTING BUGS
 | |
|        Report  bugs at http://bugs.hledger.org (or on the #hledger IRC channel
 | |
|        or hledger mail list)
 | |
| 
 | |
| 
 | |
| AUTHORS
 | |
|        Simon Michael <simon@joyful.com> and contributors
 | |
| 
 | |
| 
 | |
| COPYRIGHT
 | |
|        Copyright (C) 2007-2019 Simon Michael.
 | |
|        Released under GNU GPL v3 or later.
 | |
| 
 | |
| 
 | |
| SEE ALSO
 | |
|        hledger(1),     hledger-ui(1),     hledger-web(1),      hledger-api(1),
 | |
|        hledger_csv(5), hledger_journal(5), hledger_timeclock(5), hledger_time-
 | |
|        dot(5), ledger(1)
 | |
| 
 | |
|        http://hledger.org
 | |
| 
 | |
| 
 | |
| 
 | |
| hledger 1.16.99                  January 2020                       hledger(1)
 |