From the web site <http://furius.ca/beancount/>:
Beancount is a double-entry bookkeeping computer language that lets
you define financial transaction records in a text file, read them
in memory, generate a variety of reports from them, and provides a
web interface.