Personal Finance plugin: A obsidian implementation of beancount

Hello people,

I have been working on a personal finance plugin. It uses the beancount as backend.

Currently figuring out the automatic price fetching mechanisms. But so far I have implemented most of the basic functionality. Here are some screenshots.

  • Balance sheet
  • Transactions journal
  • Financial Overview
  • Quick Snapshot of your net worth, assets and liabilities
  • Adding accounts, commodities and transactions

For the folks aware of beancount, so far I have implemented all fava features. Currently working on implementing bean-price.

:hammer_and_wrench: Requirements:
You’ll need Python, Beancount, and Flask installed for the plugin to function properly.





Wow, the images look very interesting. What does the data look like in markdown that it’s based on? Does it gather data from multiple notes, or just one note?

We can easily make obsidian open/edit the source files.

But the source file must respect the certain grammer of the double-entry accounting.

It is based on the plain-text accounting principles of ledger and beancount. It uses a set of text directives to keep track of transactions and complete portfolio.

It’s usually a single source file, but we can “import” other files into it for better organization.

This is the head of my ledger.beancount file

option "operating_currency" "INR"
2024-05-28 custom "fava-option" "auto-reload" "true"


include "dependencies/accounts.beancount"
include "dependencies/pads.beancount"
include "dependencies/balances.beancount"
include "dependencies/commodities.beancount"
include "dependencies/prices.beancount"
include "dependencies/budget.beancount"
include "dependencies/events.beancount"


2024-09-26 * "Opening Balance"
  Assets:Wallets:Zomato                             1000.00 INR
  Liabilities:CreditCard:Kotak

2024-09-26 * "Airbnb Payments India PVT" "Goa Trip" #GoaTrip
  id: "20240926_092828"
  Liabilities:CreditCard:Kotak                    -11317.80 INR
  Expenses:Travel:Accomodation

OK, it doesn’t work with markdown files, it expands Obsidian so it can read beancount files? Just trying to understand what the workflow is in Obsidian. Are you modifying a beancount file from within Obsidian, and then are able to use different visualizations within Obsidian of the beancount file?

Right, it doesn’t store data in markdown.
The plugin actually reads and writes to your .beancount file directly.
You can open your ledger inside Obsidian, view dashboards, or add transactions all synced back to your Beancount file on disk.

You can think of it as interacting with your ledger which is stored on the disc.

Normal workflow will be:
Any financial transaction you do: you add it to the ledger via “Add transaction command of the plugin”. This opens up a modal to fill in the transaction details. There are multiple directives apart from transactions that beancount and hence plugin supports:

  • Adding accounts for Income, expenses, equities, assets, liabilities
  • Adding commodities, financial notes, assert balance statements

After successful addition to ledger, the dashboards and other views update.

I have also added support for the beancount syntax language in the obsidian.

With this user can query ledger to extract any info one wants from their ledger. Some examples



You can also copy the tables, download them in csv too.