hledger

easy plain text accounting

hledger is cross-platform accounting software with an unusual combination of strengths:

  1. It is a high quality implementation of Plain Text Accounting. This means:

    • It is a simple yet powerful double-entry accounting system that can track money, time, investments, cryptocurrencies, inventory and more.

    • It runs on your local computer, keeping your financial data private and under your control. (You can also share/collaborate online if you wish.)

    • Your data is stored as future-proof, human-readable plain text. There is no data lock-in; you can migrate to/from other plain text accounting apps, spreadsheets etc.

    • You can add data with your favourite text editor, or a UI, or download it from banks or any CSV file.

    • You can start with very basic journal entries and reports, and get more sophisticated when you’re ready.

    • You can optionally use a version control system, such as Git, to safeguard your data; track changes; manage alternate what-if scenarios; and collaborate with others.

    • The plain text format and fast command-line interface (plus a reusable library for building your own commands) facilitate scripting and customisation.

  2. It is modelled after the pioneering Ledger, and will read many Ledger files without change. Ledger users will find the data formats and commands familiar.

  3. It comes with supported, zero-setup command line, terminal, and web user interfaces, and aims to serve both power users and folks new to accounting or computers.

  4. It is easy to install on many platforms, with official mac, windows & linux builds.

  5. It prioritises robustness, usability, and thorough documentation.

  6. It is quite fast, parsing and analysing ~2000 txns/s on a 2013 macbook. Typically, reports take a fraction of a second and hledger-ui updates instantly as you edit.

  7. It is actively maintained, with regular releases, a large chat room and other support resources.

  8. It is free, with no purchase price or monthly fees. And it is licensed under GNU GPLv3, providing the strongest guarantee that you will always have the right to run, inspect, modify, or share it.

And here are some current limitations:

  • The “GUIs” are minimalist; there is no rich polished GUI at the level of Quicken/Quickbooks.

  • In the beginning it might feel like there’s too much freedom and not enough guidance. Some common needs are not yet satisfactorily documented. (Tip: a request in chat often produces a quick doc!)

  • Importing bank CSV files requires a little bit of configuration, and direct download from banks requires a bit more.

  • hledger doesn’t yet calculate capital gains automatically, you must do that semi-manually. (Ledger and Beancount have partial support for this.)

  • hledger is not yet as fast as Ledger, which can be ~10x faster (with some sacrifices, like non-date-aware balance assertions).

Quick Start

You can start with hledger very simply, and get more sophisticated as you learn more about double-entry accounting and hledger best practices. Here are some common ways of using it:

Web or terminal UI: Use hledger-web or use hledger-ui to enter transactions and see reports.

Command line: Use hledger add’s interactive prompts to enter transactions, run hledger commands to see reports.

Text editor:

Record transactions in a plain text file, perhaps assisted by an editor mode:

; $HOME/.hledger.journal (or $LEDGER_FILE)

2020-01-01 opening balances
    assets:checking         $1234
    equity

2020-03-15 client payment
    assets:checking         $2000
    income:consulting

2020-03-20 Sprouts
    expenses:food:groceries  $100
    assets:cash               $40
    assets:checking

Run hledger commands to report balances, income and expenses, and more:

$ hledger bs
Balance Sheet 2020-03-20

             || 2020-03-20 
=============++============
 Assets      ||            
-------------++------------
 assets      ||      $3134 
   cash      ||        $40 
   checking  ||      $3094 
-------------++------------
             ||      $3134 
=============++============
 Liabilities ||            
-------------++------------
-------------++------------
             ||            
=============++============
 Net:        ||      $3134 

$ hledger is -M
Income Statement 2020-01-01-2020-03-20

                         || Jan  Feb    Mar 
=========================++=================
 Revenues                ||                 
-------------------------++-----------------
 income:consulting       ||   0    0  $2000 
-------------------------++-----------------
                         ||   0    0  $2000 
=========================++=================
 Expenses                ||                 
-------------------------++-----------------
 expenses:food:groceries ||   0    0   $100 
-------------------------++-----------------
                         ||   0    0   $100 
=========================++=================
 Net:                    ||   0    0  $1900 

Automated import: Download CSV files from financial institutions, perhaps using an API like Plaid or Tiller, use hledger’s import command to convert and import the new transactions, and use any UI to see reports.


Next, you could:

More…

hledger is brought to you by Simon Michael and 120+ contributors. I’ve been building and relying on it continuously since 2007; I hope you too will find it helpful in mastering your time and money! When your wealth allows, perhaps you’ll feel inspired to become a sponsor and help us do more.

hledger is a Haskell rewrite/reboot of the pioneering Ledger. (Why?) Ledger users will find it very familiar, and you can keep your data compatible with both tools if you wish. Read more about the differences.

hledger strives to be usable, practical and to provide real-world value. Intuitive features, dependable bug-free operation and complete, accurate documentation are top goals.

hledger is first a command-line tool. Your data lives in a plain text journal file which you can edit any way you wish; hledger reads that file and produces reports of various kinds, without changing your data. (It can help you add new transactions, but does not change existing ones.)

hledger also provides a terminal interface that lets you review account balances and transactions quickly and without fuss. (screencast)

And, a zero-setup web app for a more point-and-click experience (demo). Run it on your local machine, or on a server, or set it up with a few clicks on Sandstorm.

hledger is written in Haskell, a modern, highly-regarded programming language which contributes to hledger’s robustness, performance and long-term maintainability. Most functionality is exposed as Haskell libraries, making it easy to write your own hledger-compatible scripts, addons and applications.    hledger CI on hackage https://repology.org/badge/version-for-repo/stackage_nighly/hledger.svg

Sponsorship

paypal
github
liberapay
Open Collective:
open collective backers open collective sponsors

Building and supporting good software and documentation requires a lot of time and life energy. Maybe these thousands of person-hours have helped you ? You can give back at any level and be one of the generous Sponsors helping to sustain and accelerate the hledger project, and helping more people to achieve financial freedom.