You can read the original article here: https://fiers.co/article/how-do-apps-connect-to-my-bank-account
This is part of a series I've publishing about building a budgeting app before Simple Bank shuts down on May 8th.
--
Getting Transactions From A Bank Account
We are trying to create a budgeting tool based on the envelope system and 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.
Using Google Sheets To Get Bank Transactions
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 :).
What's Next?
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!
Hey nice article, do you the availability of these services outside the US?
The budgeting tool is not yet available for others but I'm considering it. It will support any banks that the integrator (Plaid or otherwise) supports.
The budgeting tools available on https://fiers.co are available to anyone (including outside of the US).
Yup it's true that Plaid is one of the most common APIs in the US for getting bank transaction data. But it's not the only API out there. Finicity and MX.com are often better for many use-cases, because they support certain banks like Capital One which are not supported by Plaid. I plan to write a detailed write-up comparing the different providers one day, lots to look out for if you are developing in this space (hint: it's not easy).
Thanks for the other pointers. I think MX and Finicity provide more advanced functionality than I'm looking for but I'll definitely take a look and see how well they compare to my specific needs.
I'll also have a look at Fintable - I found a Google Sheets add-on that I was using for the initial prototype. Will see if Fintable is a better fit.
Creator of BudgetSheet ( https://www.budgetsheet.net ) here. Glad you found my add-on useful! Let me know if you have any questions, comments, or feature requests :)