Simple Bank is shutting down and their apps will stop working on May 8, 2021. Follow me over the next 40 days to see if I can build something to replace Simple's budgeting tools before they disappear. Join to get posts delivered to your inbox or follow me on social media.
We are trying to create a budgeting tool based on the envelope system. We need access to your bank transactions in order to associate them to an envelope. There's no straight-foward way to get access directly to your bank transactions. You have a few options.
Manually downloading transactions requires too much work.
OFX is not well documented and can change to stop supporting a particular product like old versions of MS Money.
Plaid is the modern that modern applications seem to be connecting to a user's bank accounts. Plaid costs a few dollars per user per month which seems affordable for a small number of users but means you have to charge more than a few dollars per month per user if you want to break even. It's likely that you've seen or used Plaid.
Teller.io is another service which is newer and provides similar features. Teller is free but supports fewer banks and I wasn't sure of it's longevity so I'll focus on Plaid in this post.
I was looking to go with one of these options until I stumbled upon a 4th option I'd never thought of. A Google Sheets add-on. If there was a Google Sheets Plugin that could download transactions then I could use the Sheets API to fetch them. I've been using Google Sheets as a sort of database more and more recently so I'm quite familiar with it. It has built on per-cell versioning and web and mobile UIs if I ever wanted to look at the data in spreadsheet format.
There are several add-ons but I found that BudgetSheet worked for my needs. It uses Plaid to connect to a bank and downloads the transactions, including merchant category, to a tab in a Google Sheet. It's all I need.
BudgetSheet is free for 45 days and then costs $7/month. It's not cheap but I think it will save me 8-16 hours to integrate with Plaid. It also handles downloading transactions daily. I can always integrate directly with Plaid instead of using Google Sheets at any point if I decide to (i.e. enough people are interested in using this budgeting tool).
I gave Viewer access on my Google Sheet to a service account. This will let me fetch transactions programmatically. I'm not going to go into the details of using the Google Sheets API in this post. Feel free to reach out if you have questions :).
One of the big questions I did not have an answer to was how to get access to bank transactions. But there seem to be several ways to do it and I'll probably start with the Google Sheets option because it will be quick to implement and I can always swap it out with calling Plaid directly in the future.
Next I will work on defining what are called models to represent how to store and work with data and actions that we will need to take on them. Think of these as programming equivalents of transactions, envelopes, funding schedules, etc.
Stay tuned for more!