beancount: Double-Entry Accounting from Text Input



A double-entry bookkeeping computer language, that lets you define financial transaction records in a text file, read them into memory, and generate a variety of output reports from a web interface. This project

Project Status

Beancount v2 is now the only beancount as of summer 2013. It's a full rewrite, stable and I'm using only this version now, it is maintained, and I have 7-8 years worth of my personal data relying on it and use it every week or two. It works.


For users:

For developers:


Development Installation

If you just want to try it out without installing, build the extension in-place like this:

python3 build_ext -i

Then add the clone's path to the PYTHONPATH variable:

export PYTHONPATH=..../beancount/src/python

You should be able to run the executables under ..../beancount/bin

Setup Installation

If you want to install this in your Python installation, try this:

sudo python3 install

Or, equivalently:

sudo pip3 install

These commands should build the extension module and install Beancount in your Python library path.


You can obtain the source code from a Mercurial repository, found at:

Download it like this:

hg clone --insecure

(Use the --insecure flag because I sometimes have a self-signed SSL certificate on my server.)

This is the authoritative location for the latest version. I don't use github--I roll my own Mercurial server. github clones are probably out of date, clone from the URL above.

Click here for download instructions.


I have yet to write full documentation, but basically, there are two main programs that you should care about:

bean-check: Checks for errors in a Beancount input file. bean-web: Starts a local web server so you can browse a Beancount ledger.

All the other are toy tools.

Check out the examples for now in order to get a sense of how this works. There is also a cheatsheet under doc/


Martin Blais <>