External Contributions to Beancount

Martin Blais - Updated: April 2016

http://furius.ca/beancount/doc/contrib

Links to codes written by other people that build on top of or that are related to Beancount and/or Ledgerhub.

Indexes

This document contains only packages that were discussed or have had an announcement sent to the mailing-list. You will be able to find other packages on public indices:

  • PyPI: You can find a lot of other Beancount-related projects at PyPI.

  • GitHub: A search for "beancount" as of September 2020 brings up 318 projects.

Books and Articles

https://personalfinancespython.com/ "Managing Personal Finances using Python", a 2020 book on plain-text accounting, and Beancount (Siddhant Goel).

Plugins

split_transactions: Johann Klähn wrote a plugin that can split a single transaction into many against a limbo account, as would be done for depreciation.

zerosum: redstreet0 wrote a plugin to match up transactions that when taken together should sum up to zero and move them to a separate account.

effective_dates: redstreet0 wrote a plugin to book different legs of a transaction to different dates

beancount-plugins: Dave Stephens created a repository to share various of his plugins related to depreciation.

beancount-plugins-zack: Stefano Zacchiroli created this repository to share his plugins. Contains sorting of directives and more.

beancount-oneliner: Akuukis created a plugin to write an entry in one line (PyPi).

beancount-interpolate: Akuukis created plugins for Beancount to interpolate transactions (recur, split, depr, spread) (PyPi).

metadata-spray: Add metadata across entries by regex expression rather than having explicit entries (by Vivek Gani).

Akuukis/beancount_share: A beancount plugin to share expenses among multiple partners within one ledger. This plugin is very powerful and most probably can deal with all of your sharing needs.

w1ndy/beancount_balexpr (Di Weng): A plugin that provides "balance expressions" to be run against the Beancount entries, as a Custom directive. See this thread.

autobean.narration (Archimedes Smith): Allows to annotate each posting in a concise way by populating per-posting narration metadata from inline comments.

autobean.sorted: Checks that transactions are in non-descending order in each file. Helps identifying misplaced or misdated directives, by warning on those directives not following a non-descending order by date in the file.

hoostus/beancount-asset-transfer-plugin: A plugin to automatically generate in-kind transfers between two beancount accounts, while preserving the cost basis and acquisition date.

Tools

alfred-beancount (Yue Wu): An add-on to the “Alfred” macOS tool to quickly enter transactions in one’s Beancount file. Supports full account names and payees match.

bean-add (Simon Volpert): A Beancount transaction entry assistant.

hoostus/fincen_114 (Justus Pendleton): An FBAR / FinCEN 114 report generator.

ghislainbourgeois/beancount_portfolio_allocation (Ghislain Bourgeois): A quick way to figure out the asset allocations in different portfolios.

hoostus/portfolio-returns (Justus Pendleton): portfolio returns calculator

costflow/syntax (Leplay Li): A product that allows users to keep plain text accounting from their favorite messaging apps. A syntax for converting one-line message to beancount/*ledger format.

process control chart (Justus Pendleton): Spending relative to portfolio size. Thread.

Pinto (Sean Leavey): Supercharged command line interface for Beancount. Supports automatic insertions of transactions in ledger file.

Importers

reds importers: Simple importers and tools, mostly ofx based and built on top of `ofxparse`. Using ofx (over csv) minimizes data and coding errors, eliminates format breaking changes in csv, allows for automatic imports of balances to generate balance assertions, and imports prices. The goal is to factor out importer code into well maintained common libraries for banks, credit cards, and investment houses, to minimize institution specific code and make writing new importers easy. Look inside the importers/ directory to see a list of institutions supported. More investment, credit card, and banking institutions will be added in the future. Contributions welcome. See this thread for information about a Yodlee importer.

plaid2text: An importer from Plaid which stores the transactions to a Mongo DB and is able to render it to Beancount syntax. By Micah Duke.

jbms/beancount-import: A tool for semi-automatically importing transactions from external data sources, with support for merging and reconciling imported transactions with each other and with existing transactions in the beancount journal. The UI is web based. (Announcement, link to previous version). By Jeremy Maitin-Shepard.

awesome-beancount: A collection of importers for Chinese banks + tips and tricks. By Zhuoyun Wei.

beansoup: Filippo Tampieri is sharing some of his Beancount importers and auto-completer in this project.

montaropdf/beancount-importers: An importer to extract overtime and vacation from a timesheet format for invoicing customers.

siddhantgoel/beancount-dkb (Siddhant Goel): importer for DKB CSV files.

prabusw/beancount-importer-zerodha: Importer for the Indian broker Zerodha.

swapi/beancount-utils : Another importer for Zerodha.

Dr-Nuke/drnuke-bean (Dr Nuke): An importer for IBKR, based on the flex query (API-like) and one for Swiss PostFinance.

Beanborg (Luciano Fiandesio): Beanborg automatically imports financial transactions from external CSV files into the Beancount bookkeeping system.

szabootibor/beancount-degiro (PyPI): Importer for the trading accounts of the Dutch broker Degiro.

https://github.com/siddhantgoel/beancount-ing-diba (PyPI): ING account importer (NL).

Converters

plaid2text: Python Scripts to export Plaid transactions and transform them into Ledger or Beancount syntax formatted files.

gnucash-to-beancount: A script from Henrique Bastos to convert a GNUcash SQLite database into an equivalent Beancount input file.

debanjum/gnucash-to-beancount: A fork of the above.

andrewStein/gnucash-to-beancount : A further fork from the above two, which fixes a lot of issues (see this thread).

hoostus/beancount-ynab : A converter from YNAB to Beancount.

hoostus/beancount-ynab5 : Same convert for YNAB from the same author, but for the more recent version 5.

ledger2beancount: A script to convert ledger files to beancount. It was developed by Stefano Zacchiroli and Martin Michlmayr.

smart_importer: A smart importer for beancount and fava, with intelligent suggestions for account names. By Johannes Harms.

beancount-export-patreon.js: JavaScript that will export your Patreon transactions so you can see details of exactly who you've been giving money to. By kanepyork@gmail.

alensiljak/pta-converters (Alen Šiljak): GnuCash -> Beancount converter (2019).

grostim/Beancount-myTools (Timothee Gros): Personal importer tools of the author for French banks.

Price Sources

hoostus/beancount-price-sources : A Morningstar price fetcher which aggregates multiple exchanges, including non-US ones.

andyjscott/beancount-financequote : Finance::Quote support for bean-price.

aamerabbas/beancount-coinmarketcap: Price fetcher for coinmarketcap (see post).

grostim/Beancount-myTools/.../iexcloud.py : Price fetcher for iexcloud by Timothee Gros.

xuhcc/beancount-cryptoassets (Kirill Goncharov): Price sources for cryptocurrencies.

xuhcc/beancount-ethereum-importer (Kirill Goncharov): Ethereum transaction importer for Beancount. Includes a script that downloads transactions from Etherscan and an importer for downloaded transactions.

xuhcc/beancount-exchangerates (Kirill Goncharov): Price source for http://exchangeratesapi.io.

tarioch/beancounttools (Patrick Ruckstuhl): Price sources and importers.

https://gitlab.com/chrisberkhout/pricehist (Chris Berkhout): A command-line tool that can fetch daily historical prices from multiple sources and output them in several formats. Supports some sources for CoinDesk, European Central Bank, Alpha Vantage, CoinMarketCap. The user can request a specific price type such as high, low, open, close or adjusted close. It can also be used through bean-price.

Development

Py3k type annotations: Yuchen Ying is implementing python3 type annotations for Beancount.

bryall/tree-sitter-beancount (Bryan Ryall): A tree-sitter parser for the beancount syntax.

Documentation

Beancount Documentation (Kirill Goncharov): Official conversion of the Beancount documentation from Google Docs source to Markdown and HTML. This includes most of the Google Docs documents and is maintained in a Beancount org repo here by Kirill Goncharov.

Beancount Source Code Documentation (Dominik Aumayr): A Sphinx-generated source code documentation of the Beancount codebase. The code to produce this is located here.

SQL queries for Beancount (Dominik Aumayr): Example SQL queries.

Beancount —— 命令行复式簿记 (Zhuoyun Wei): A tutorial (blog post) in Chinese on how to use Beancount.

Managing my personal finances with Beancount (Alex Johnstone)

Counting beans—and more—with Beancount (LWN)

Interfaces / Web

fava: A web interface for Beancount (Dominik Aumayr, Jakob Schnitzer): Beancount comes with its own simple web front-end (“bean-web”) intended merely as a thin shell to invoke and display HTML versions of its reports. “Fava” is an alternative web application front-end with more & different features, intended initially as a playground and proof-of-concept to explore a newer, better design for presenting the contents of a Beancount file.

Fava Classy Portfolio (Vivek Gani): Classy Portfolio is an Extension for Fava, a web interface for the Beancount plaintext accounting software. The extension displays a list of different portfolios (e.g. 'taxable' vs. 'retirement'), with breakdowns using 'asset-class' and 'asset-subclass' metadata labels on commodities.

Fava Investor project: Fava_investor aims to be a comprehensive set of reports, analyses, and tools for investments, for Beancount and Fava. It is a collection of modules, with each module offering a Fava plugin, a Beancount library, and a Beancount based CLI (command line interface). Current modules include: Visual, tree structured asset allocation by class, asset allocation by account, tax loss harvester, cash drag analysis.

Fava Miler (RedStreet): Airline miles and rewards points: expiration and value reporting.

Fava Envelope (Brian Ryall): A beancount fava extension to add an envelope budgeting capability to fava and beancount. It is developed as a Fava plugin and CLI.

scauligi/refried (Sunjay Cauligi): An envelope budgeting plugin for Fava, inspired by YNAB: all expense accounts become individual budgeting categories, budgeting is carried out using transactions to these accounts, and the plugin automaticallyapplies a tag to all rebudget transactions so they can easily be filtered out. Provides budget and account views like YNAB.

Mobile/Phone Data Entry

Beancount Mobile App (Kirill Goncharov): A mobile data entry app for Beancount. (Currently only Android is supported.) Repo: https://github.com/xuhcc/beancount-mobile (Announcement).

http://costflow.io: Plain Text Accounting in WeChat. "Send a message to our bot in Telegram, Facebook Messenger, Whatsapp, LINE, WeChat, etc. Costflow will transform your message into Beancount / Ledger / hledger format transaction magically. Append the transaction to the file in your Dropbox / Google Drive. With the help of their apps, the file will be synced to your computer."