+

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.

+ +

Overview buffer

+ +

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.

+ +

Report

+ +

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.

+ +

Budget report

+ +

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.

+ +
+
    +
  1. +

    As of today, the package is not yet in MELPA, but a pull +request is in review to add it to +the repository. 

    +
  2. +
+
+ +