hledger

Fast, accurate, robust
plain text accounting.

What is hledger?

hledger is fast, reliable, free, multicurrency double-entry accounting software that runs on unix, mac, windows, and the web. With it you can track money, investments, cryptocurrencies, time, or any other quantifiable commodity; with a future-proof plain text file format, version control for your changes, and without needing any cloud service or vendor.

Developed continuously since 2007, hledger is licensed under GNU GPLv3+, written in Haskell, and thoroughly tested, with $100 bounties for regressions reported.

This page gives a general introduction, before moving on to Installing and Getting started. There is also a FAQ, some videos, various support/discussion fora, and Developer docs.

github

What does it look like?

Currently, three user interfaces are provided out of the box: a powerful command line UI (hledger), a quick terminal UI (hledger-ui), and a simple web UI (hledger-web).

Plain text accounting?

Plain Text Accounting (plaintextaccounting.org) means:

  • Data is stored in plain text files, which can be easily read by humans, tracked with version control software such as Git, and maintained with text processing tools. This facilitates portability, longevity and privacy for your valuable accounting data.

  • The data format is flexible and easy to write or generate, but hledger can check it and prevent many kinds of error. This, plus the auditability provided by version control, provides confidence in your data and reports.

  • There is a fast command-line interface, which makes the tool flexible and easy to integrate into custom workflows.

hledger is a robust, largely compatible reimplementation of the original PTA app, Ledger CLI. See also: hledger and Ledger,

What can you use it for?

Tracking finances

For yourself, your business, or other organisations, track and report on:

  • Assets and liabilities
  • Billables, receivables and payables
  • Revenues and expenses
  • Cashflow
  • Budgets
  • Forecasts
  • Investments
  • Cryptocurrencies or NFTs

Learning accounting

With the readable data format and lightweight software, hledger and PTA users tend to rapidly improve their understanding of double-entry bookkeeping and accounting.

Here's an example of the main journal format. This represents an accounting General Journal. Positive amounts are debits, negatives are credits, but all you need to remember is that each transaction is balanced, summing to zero. (One amount may optionally be omitted to save typing.)

# 2022.journal

2022-01-01 opening balances as of this date
    assets:bank:checking                $1000
    assets:bank:savings                 $2000
    assets:cash                          $100
    liabilities:creditcard               $-50
    equity:opening/closing balances

2022-02-01 GOODWORKS CORP
    assets:bank:checking           $1000
    income:salary                 $-1000

2022-02-15 market
    expenses:food             $50
    assets:cash

Tracking time

Support for two time logging formats is built in: timeclock format, for clockin/clockout time tracking:

# 2009.timeclock

i 2009/03/27 09:00:00 projects:a
o 2009/03/27 17:00:34
i 2009/03/31 22:21:45 personal:reading:online
o 2009/04/01 02:00:34
i 2009/04/02 09:00:00 projects:b
o 2009/04/02 17:00:34

And timedot format, for approximate/retroactive time tracking:

# 2016.timedot

2016/2/1
fos:haskell   ....
biz:research  .
inc:client1   .... .... .... .... .... ....

2016/2/2
biz:research  .... ..
fos:hledger   .... .... ....
fos:ledger    0.25
fos:haskell   .5
inc:client1   2

Why use hledger?

hledger's General FAQ or the plaintextaccounting.org site discuss the benefits of Plain Text Accounting.

Among the PTA apps, hledger has a strong focus on ease of use and practicality for day-to-day accounting. It supports most Ledger and Beancount features but omits some of the more complex ones (value expression language, implicit lot matching). It prioritises "just works", accessible documentation, and is actively maintained, with a lively chat.

Non-programmers will enjoy hledger's built-in financial statements, multi-period reports, choice of user interfaces, easy CSV import system and general robustness.

Programmers may appreciate its speed (25k txn/s on a macbook air m1), accuracy (up to 255 decimal places), reliability (1100+ tests, $100 bounty for regressions), powerful scriptability/embeddability and clean statically-typed Haskell implementation.

And why might you not choose hledger ?

  • If you need a rich GUI above all, you might prefer GnuCash, KMyMoney, or Quickbooks.
  • If you like spreadsheets and don't have a ton of data, you might find those quicker.
  • If you do a lot of advanced trading, or want to hack a lot with Python, also look at Beancount.
  • If you want to mix more code in your financial data, or hack on C++, evaluate Ledger.
  • If you like minimalist unix tools and think all the above are bloat, see pta.
  • If you are mobile-only and don't need version control or flexibility, maybe a phone app will do.
  • If you don't need version control or privacy, but do need friction-free collaboration with financial professionals and institutions, you might prefer a commercial web-based system.

How is the project organised and funded ?

I'm Simon Michael, hledger project founder and PTA fan. Welcome!

I have been building and relying on this project since 2007, together with 140+ contributors.

We hope you too will find hledger/PTA useful in transforming your relationship with money and time. After enjoying some personal or organisational success with it, you might want to become one of the generous sponsors to help sustain this work.

How to get started?

Install, then see Getting Started.

Site tips

The main site contents are listed in the sidebar to your left. If it's not visible, click/tap the horizontal-lines icon at top left, or press the s access key.

You can search this site quickly for any topic by using the magnifying-glass icon at top left, or the / access key.

Other access keys are: t change theme, 1 home page, 2 recent changes, < previous page, > next page.