The Secret API of Banks

Interacting with bank data often requires customers to trust 3rd-party services with their username and password. What if there were a more secure way? A way to explore transactions in real-time without having to trust anyone.

Using personal finance services like Mint and Clarity Money has always made me cringe. In 2009, Mint was acquired by Intuit and, just like that, their users' bank credentials moved from one company to another. While there is nothing fundamentally wrong with it, I prefer not to trust everyone with my bank information.

Recent innovations in the space might incentivize banks to offer APIs with OAuth authentication but, in the meantime, I found a way to retrieve transactions without having to share, or even use, my password: I turned on all my bank alerts, which now generate emails that allow me to extract information about my transactions as they happen.

Here is an example of setting up an alert when a debit card transaction exceeds $0:

The notification email sent by the bank looks like this:

If you can look past the absurd price of a double-shot cortado at Financier, you'll see that no sensitive information is being sent over the wire—I did replace the last 4 digits of my account in the screenshot above because I'm a little paranoid but you shouldn't have to. Then, all I had to do was send those messages to a transactional email service like Postmark and parse them with my own web application.

Finally, I set up a cron job that emails me a custom-made report every morning when I wake up. That mobile-friendly, low-footprint (i.e., charts are text-based, not images), pandas-powered report deserves a post on its own* but, to give you a sense of what it looks like, here is a redacted example confirming that I spend too much money on coffee. ☕

I have been receiving these morning reports for more than 2 months now. It has helped me catch unwanted transactions and get a better feel for my daily, weekly, and monthly expenses.

I am curious to know what systems others are using to stay on top of their finances. Please feel free to email me and let me know.

* EDIT: I released some of the code used to generate the report. It is a text-based, no-dependencies, pip-installable, open-source charting utility in Python called PlainChart.

All emojis designed by OpenMoji – the open-source emoji and icon project. License: CC BY-SA 4.0