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.

Homepage:
https://furius.ca/beancount/
