Finance and accounting are only two of a great number of fields that are increasingly dependent on the Internet. The idea of using the web to do personal finance emerged a few years back. Tools like Quicken and Mint allow the end-users to simply link their bank accounts and pull transactions from those accounts, which just become data that are used to portray bigger pictures for the users about their finances.
These modern finance apps have financial data providers. Companies like Yodlee, Intuit, Plaid, and Finicity are big names in this API Provider space. I’ve recently had a chance to do full-stack development for a startup that was trying to integrate Finicity’s API. With the project winding down to the maintenance phase, I wanted to share my thoughts on it as someone who had a chance to be a part of that integration from the start.
Finicity API provides the end-users the ability to link their financial institution accounts (whether they’re personal, business, or investment banking, credit cards, or savings) with the apps that are using them. The end-user, of course, rarely ever sees Finicity API directly (or any other API provider for that matter), although he or she may see the message at the bottom of the website, “Powered by [API_Provider]”.
Finicity supports over 12,000 institutions. Among them are big banks like CapitalOne, Chase, and Bank of America to foreign banks like Barclay and Santander to tools like PayPal. My experience with Finicity API is that the RESTful interface is one of the most solid, well-organized systems I have ever interacted with. Their support system is very responsive, but they still have a long way to go when it comes to financial institutions integration.
The access to the API is relatively intuitive and standard. The authentication is based on OAuth with a few metadata keys, a few of which should be kept secret. The structure of the API follows the standard guidelines for using HTTP verbs and learning the API was easy because it was natural. I obviously can’t share the details of their API endpoints for legal reasons, but as long as you follow their guidelines and instructions, you should be able to successfully access their endpoints. And the blogs and the instructions are very friendly and detailed with example requests and responses.
The Finicity API supports over 12,000 institutions and you will be able to find the exact number as one of the first API test calls when you start your development. During our initial deployment, we found that many of our clients had problems connecting their accounts through Finicity. The instructed API workflows were followed, including their specific ways to handle multi-factor authentication (MFA). However, initially the product owner informed us that more than half of his customers weren’t able to add their accounts. And we still have eight known unresolved account activation tickets as of today. For some of them, the support team told us to essentially debug their system using a customer’s account with the institution: Have the customer try to link the institution’s account multiple times, so that they can re-integrate the broken link. I’m not sure if other financial data APIs do this as well, but in my opinion, asking a customer to try to attempt activating his bank account multiple times for the financial data provider seems unacceptable. The data provider should be doing the integration and testing it directly with the institution itself, not the customer of the institution, who’s trying to use the provider’s platform to access the institution. It makes the end-user application look flimsy and broken.
Despite all the connection problems with institutions, I still want to applaud Finicity for their continued timely customer support. On average, we at least hear back from Finicity that they received our support tickets and began working on them in a day or less. The ticket resolution time is a little erratic. Sometimes, it takes a few days to resolve a ticket, and others have been open for over a month without resolution. My guess is that it has to do with the location of the company. Finicity is in Utah, and our client is mainly in the New England area. So my client’s area may not be in Finicity’s focus, which is what’s causing the high account connection failure rate. Regardless, Finicity’s handling of our client’s problems was excellent. Because of the high account activation failure rate that could have jeopardized the project, one of Finicity’s directors was able to get directly involved with us and help us move forward.
Finicity’s system has a lot of value. Their pricing is competitive (especially among startups), and the API is organized and intuitive. Their support team has been amazing with trying to make sure that the institution integrations are up to date and dealing with customers’ connection problems. However, our experience with the institution activation has not been very stable. We’ve had over 20 institutions whose customers could not add their accounts through Finicity. And asking the application’s end-users to help debug for the application’s data provider certainly doesn’t seem intuitive. Ultimately, once Finicity solidifies the integrations with the 12,000 institutions, the platform is going to bring a consistent financial data feed to your application.