Companies of all shapes and sizes have been built using bank transaction data, including Mint, Wisely, LevelMoney. I recently researched a number of Bank Data APIs, which allow thirdparty services to request bank transaction data from their users. The services I looked into were Yodlee, Intuit and Plaid, each utilizing some combination of direct bank access and bank website scraping to gather transaction data. While not a comprehensive report, here’s an overview of what I found.

The Data

At its core, the data provided by each API is very similar, although some go the extra mile to categorize transactions and in Plaid’s case confirm the exact location of a transaction (coupled with a nice feature of providing the Factual id of the merchant). The most important data fields you’ll certainly receive are:

  • Date
    • The posted date of the transaction, unfortunately this means it may be the day after, or in some cases several days after when the transaction actually occured. Note, you won’t receive the “time of day”.
  • Amount
  • Descriptor
    • String of text, usually set by merchant that identifies the transaction. one such descriptor I received for a local business was ARTESANO SAN FRANCISCO, CA #000

The Connection

Prior to accessing bank transaction data, some form of the following connection dance will be required between end-user, thirdparty service and bank data API.

*MFA = Multi-Factor Authentication, some banks will require a user to provide more than just their username and password (e.g. answer to a secret question).

Yodlee

Established in 1999, Yodlee is the longest running Bank Data API that I found and offers support for the largest number of financial institutions (“99% of banks in the US”). Many banks actually use Yodlee to power financial management products, providing Yodlee with direct access to data, versus having to scrap the data from banking websites.

Yodlee provides two types of APIs, Aggregation API for accessing bank data and Instant Account Verification API for quickly verifying that a user is in fact the owner of a bank account they specified, thus speeding up a companies ability to send a user money.

  • Development Access
    • Free for 30 days after signing up here. A key limitation is that on the development account is that you can’t add additional “members” (Yodlee lingo), meaning you have to connect banks to one of the 5 test users/members they configure for you. In practice this means you can only tracks transactions for five different people and are unable to call the “add member” endpoint.
  • Documentation
    • Poor. Prepare to be frustrated since the naming and terminology used is confusing (e.g. “site” and “container” are two key ambiguous terms). The “Test Drive” feature can get you out of trouble if you dig into the request and response data and looking at source of sample apps is key.
  • Bank (Financial Institution) Coverage
    • Excellent. It’s actually almost too good, duplication can be a problem (several departments of “well fargo” listed separately for example). Non US banks supported, although I didn’t evaluate that coverage in depth.
  • Pricing
    • Expensive (prepare to negotiate). Contracts are made up of three parts, initiation fee (list of ~$5k), usage ($0.70 per connected account per month, comes down with volume) and monthly minimums. Shortest term to hope for is 1 year.
  • Production Access
    • Involved. Definitely going to require a number of phone calls.

Intuit

Needs no introduction, well known for it’s Quicken services and acquired Mint years ago. The API most relevant to this article is the Customer Account Data API. Didn’t spend as much time evaluating Intuit APIs due to testing challenges, which may be indicative of integration challenges.

  • Development Access
    • Open registration although more involved than Yodlee.
  • Documentation
    • Poor. They provide an API Explorer but it failed to work when I was testing, Intuit were aware of the problem but no movement on a fix.
  • Bank (Financial Institution) Coverage
    • Excellent, appears to be very similar to Yodlee but merits more investigation.
  • Pricing
    • $1000 monthly minimum appears to be standard, pricing based on usage (number of connected accounts) and additional categorization can be requested. This categorization allegedly makes it easier to understand user spending. Pricing summary here.
  • Production Access
    • Allude to a thorough audit of implementation being required. No information on how involved this really is.

Plaid

The newest player in the space and as of this writing still in private beta. One could think of Plaid as the Stripe of Bank Data APIs, as in they are trying to drastically improve the state of APIs in the space. Plaid staff were very friendly and helpful and their site is a joy to reference compared to Yodlee and Intuit. Plaid’s newness can be seen in their financial institution coverage numbers but hopefully they can continue to improve on that front.

  • Development Access
    • Private beta so email requesting access required (at time of writing)
  • Documentation
    • Excellent. Breath of fresh air compared to Yodlee and Intuit.
  • Bank (Financial Institution) Coverage
    • As of writing 7 banks supported, although they are larger US banks. Full list can be retrieved here (call working as of writing).
  • Pricing
    • Still in private beta but by all accounts it should be very competitive. I suspect it’ll be completely volume based without the annoying contract terms or minimums.
  • Production Access
    • Still in private beta but imagine it’ll be more straight forward than existing players.

Parting Thoughts

It’s encouraging to see innovation happening when it comes to accessing bank data but magical customer experiences remain difficult. The connection dance can be complicated for an end user and if bank credentials change, the end user will have to reconnect their financial institutions (perhaps good for security) to your service.

It appears that direct access to Visa, Mastercard and American Express is possible for more established players and that may be the correct path forward, I haven’t found specifics on that type of integration but one would hope it would provide more real time data.

I hope this reports proves helpful and please feel free to contact me if you’d like to discuss anything further.