Jan 2 2008

Online Banking APIs

I’ve been researching ways to consolidate bank account information into a single, automatically updating view. There are a couple of new web-based options – most notably Wesabe and Mint – but those have a consumer focus. I’m more interested in viewing trends in our business – a real-time financial dashboard.

Open Financial Exchange (OFX) Standard

In January of 2007, the Open Financial Exchange standard was announced by Microsoft and Intuit. Many financial institutions provide support for a portion of the standard, namely the portion used by Quicken.

The best list of OFX connection settings is here. A bank information generator is also available that retrieves connection data from the Microsoft Money website.

Retrieving OFX data

Once you obtain the OFX connection details for a financial institution, you can then connect to it to retrieve financial transactions. Getting to this point often isn’t straight forward. For many banks, the online login information isn’t the same as the data needed for the OFX connection. Some banks, like Wells Fargo, charge a monthly fee for OFX access. Finally, chances are your bank’s customer support line won’t know anything about OFX. Your best bet is to ask how to enable Quicken access (which uses the same OFX standard).

There are a couple of libraries available for retrieving OFX data:

  • LibOfx is the library used by GnuCash to connect with banks online. Full documentation is available, but I didn’t find any tutorials for getting started.
  • OFX for Ruby is similar to LibOfx, but obviously in Ruby. There are a couple of examples included in the library download.

In general, retrieving this data isn’t a straight forward process. OFX connection details are scattered, some banks haven’t made it easy to enable OFX, and there isn’t much information available on building an OFX client. It’s definitely primitive.

Additionally, OFX transactions can be cryptic – a large part of Wesabe’s value is in its ability to provide better transaction formatting.

How are others doing it?

Wesabe and Mint are 2 fairly new web startups that automate the process of collecting account transactions. How they collect the data is very different.

With Wesabe, you record a Firefox browser session, walking through the download process. You can then re-run the session and Wesabe then updates your account data using the script.

Mint provides the most seamless experience. You simply provide your bank details (even PayPal works) and it grabs your transactions. Mint uses “Yodlee” to actually connect with financial institutions. Yodlee has been doing this for a while – they have a service called MoneyCenter that is remarkably similar to Mint – it actually has more features but lacks Mint’s visual appeal. My guess is Yodlee charges a pretty hefty licensing fee.

The Future

I wouldn’t bet on banks making it any easier to automate data retrieval. Erick Schonfeld of Techcrunch recently wrote a post that covered the API landscape very well – which types of companies are most likely to offer APIs and why companies that push APIs are very careful with what they are actually opening up. Opening up a core component of your business can spur some pretty dramatic changes – it will take a younger, upstart bank to spur progress.

While it’s not here yet, I’d pay for a service that:

  • Made connecting to financial institutions as easy as Mint (just a user name and password – no OFX connection details needed)
  • Scrubbed transactions like Wesabe
  • Published an API for retrieving this data that didn’t require a customer account (in other words, the ability to query for bank account transactions from an account not directly setup through the provider)

4 Comments

  1. Jubz

    I have a small home-made financial app that I’d like to begin getting bank transactions and the like. What library did you end up going with (or what have you tried that works)?

  2. Yogesh Gandhi

    That’s interesting to learn.

    I would like to know, how actually the API works? I am very new to programming and I can think of two ways
    1) Bank expsoses a web service which these sites can invoke and get the data
    2) These people make a request to a page with username/password and get back an HTML page and then parse that HTML page to fetch out the transaction data.

    Second option doesn’t looks good to me…

    Third option i got to know is the API, that you guys are talking about…I am more interested in knowing how the API works inside..??

    • Patrick Van Stee

      Hi Yogesh!

      Most of these OFX services are actually hosted by financial institutions. So, it’s essentially the first option you mentioned, a web service hosted by a bank where you can retrieve user data with their account credentials as SGML or (hopefully) XML.

      Although, there are also a few third party services that give you a more unified API (and provide data via screen scraping when an OFX server isn’t available). Check out Yodlee, Intuit OFX, or (when they launch) Plaid if that’s what you’re looking for.

      Hope that helps.

Leave a Comment

Join the discussion. Do not worry, your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>