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 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-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. ↩
+
+