Beanbook:Plugins

Extra behaviour, written by other people.

A plugin is a small Python program you install yourself. Beancount plugins check or transform your ledger as it loads; Fava extensions add pages to the reports; importers turn a bank's CSV into entries. None of them are bundled, and none of them are ours.

Naming a plugin in a ledgermain.beancount
plugin "beancount.plugins.auto_accounts"plugin "beancount.plugins.check_commodity"plugin "beancount.plugins.implicit_prices"

Before you install one

A plugin is a program you are trusting.

It runs with the app's permissions: it can read and change your whole ledger, and use the network. Install plugins only from a source you trust. Safe mode holds all of them back without deleting anything.

Not every plugin works on a phone.

The projects below are listed because people use them with Beancount, not because this app vouches for them. Some need libraries that have no Android build, and some assume a desktop computer. The list inside the app marks the ones known not to work here.

Already included

Beancount's own plugins come with the app. Nothing to install: name one in your ledger and it runs.

  • auto_accounts

    Opens accounts as it meets them, so a ledger does not need an open directive for everything before it will load.

  • check_commodity

    Complains about a currency you never declared, which is usually a typo in a currency code.

  • implicit_prices

    Records a price from each transaction that names one, so holdings can be valued without a separate price list.

  • nounused and leafonly

    Housekeeping: accounts you opened and never used, and postings to an account that has children.

Plugins people use

Independent projects, each with its own authors and licence. The links go to their own pages.

beangrow

Investment returns done properly, money-weighted and time-weighted, over groups of accounts you define. Needs several large libraries, which the Expert edition can fetch on demand.

beangrow on GitHub

fava-investor

Fava pages for investing: asset allocation, tax-lot selection, and cash drag. Adds screens to the Reports tab rather than changing your ledger.

fava-investor on GitHub

fava-dashboards

Charts and tables you describe in a configuration file, shown as a dashboard page in Fava.

fava-dashboards on GitHub

smart_importer

Guesses the account for an imported transaction from what you have categorised before, so a bank export needs less editing.

smart_importer on GitHub

Your bank's importer

Most importers are a short beangulp script written for one bank's export. Yours can live with your ledger and be run from the app like any other script.

What to expect on a phone

A plugin written for a desktop can fail here for ordinary reasons: it needs a library with no Android build, it expects a home directory, it wants to run another program, or it takes long enough that Android stops it.

The app says which of those happened. A failing plugin does not take your ledger with it: it is held back, and the ledger loads without it.

The Play edition adds one limit that is a store rule rather than protection: plugins there are plain Python, added from a file, and it never downloads code.

Plugins are optional.

Everything the app does with a ledger (entering, editing, balances, reports, documents) works with no plugins at all.