Introducing Elbank
Elbank is a new Emacs package I’ve been working on lately. It’s a personal finances and budgeting package for Emacs that uses Weboob for scraping data from bank websites.
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
application named boobank
to scrap data.
The list of currently supported bank websites is available on this page.
Fortunately, installing Weboob should be a breeze as there are packages for most GNU/Linux distros, and an homebrew formula for Mac users.
Once Weboob is installed, run boobank
in a console to setup your accounts.
Installing Elbank
You can now install elbank from MELPA1 by
running M-x package-install RET elbank RET
, and voila!
Using Elbank
The overview buffer
Run M-x elbank-overview
to get started. The overview buffer lists all
accounts as custom reports and budgets.
Press 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.
Categorizing transactions
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
variable elbank-categories
.
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.
Reports
Evaluate 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 categoryf a
: Only show transactions in a specified accountf p
: Select the period of the reportG
: Group transactions by some propertyS
: Sort transactionss
: Reverse the sort orderM-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-monthly-reports
and
elbank-saved-yearly-reports
to conveniently get a quick list of commonly used
reports from the overview buffer.
Budgeting
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
"Food"
or "Rent"
.
(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.
Press 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-p
and M-n
the same way as in report buffers.
Conclusion
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.
-
As of today, the package is not yet in MELPA, but a pull request is in review to add it to the repository. ↩