I started building Elbank after using Ledger for several years. While Ledger is a real gem, I didn’t want to spend time doing bookkeeping anymore.
Instead, I wanted a simple reporting tool that would automatically scrap data and build reports within Emacs from it.
Setting up Weboob
To use Elbank, you will first have to install
Weboob. Weboob is a collection of applications
used to interact with websites from the command-line. Elbank uses the banking
boobank to scrap data.
The list of currently supported bank websites is available on this page.
Once Weboob is installed, run
boobank in a console to setup your accounts.
The overview buffer
M-x elbank-overview to get started. The overview buffer lists all
accounts as custom reports and budgets.
u to import the bank statements from your bank website.
You can click on each account or report displayed in the buffer to open them.
Transaction categories is an important aspect of Elbank. Categories make it possible to filter and budget.
Transactions are automatically categorized when reporting, using the custom
Here’s an example value for
elbank-categories, you should adjust it based on
your own transactions and categorizing needs.
(setq elbank-categories '(("Expenses:Food" . ("^supermarket" "^restaurant" "Local store XXX" "Bakery XXX")) ("Expenses:Rent" . ("Real Estate Agency XXX")) ("Income:Salary" . ("Bank transfer from Company XXX"))))
Each transaction’s text is matched against the regular expressions of
elbank-categories, the first match defines the category of a transaction.
M-x elbank-report to create a new report. The command will ask you
for an account, period and category, which are all optional.
Here’s the list of keybindings available in a report buffer:
f c: Filter the transactions by category
f a: Only show transactions in a specified account
f p: Select the period of the report
G: Group transactions by some property
S: Sort transactions
s: Reverse the sort order
M-p: Move backward by one period (month or year)
M-n: Move forward by one period (month or year)
You can also customize the variable
elbank-saved-yearly-reports to conveniently get a quick list of commonly used
reports from the overview buffer.
The custom variable
elbank-budget is used to define a monthy budget. It
defines how much money we want to spend by category of transaction, like
(setq elbank-budget '(("Expenses:Food" . 300) ("Expenses:Rent" . 450) ("Expenses:Transport" . 120) ("Expenses:Utilities" . 145)))
Note that budgeted amounts are positive numbers while expenses have negative values.
b from the overview buffer or evaluate
M-x elbank-budget-report to see
your expenses based on your budget.
You can switch periods with
M-n the same way as in report buffers.
That’s all for now!
Elbank is still in its infancy, but I’m already using it daily. If you find any bug or would like to suggest improvements, feel free to open a ticket on the GitHub project.