views:

268

answers:

2

I have noticed that some applications provide functionality allowing the user to pull down transaction records (usually for credit cards) from an online banking system. Usually specific banks are supported.

What is the general method to achieve this (i.e., using an API, or something else)? I have seen a web app that supports the bank that I want to pull down transaction records from (ANZ), so I know it's achievable - but have not been able to find any references to any kind of online banking API.

I intend to implement a solution in Ruby on Rails, but I imagine the underlying method would hold regardless of the language used.

+1  A: 

Contact the bank in question and ask them for their API - most of the information you want relates to the security/automated logon issues. the actual data is usually just transferred as a CSV file.

I know easier said than done, but be persistent until you actually are talking to someone in the IT area who can answer questions and not just lawyers and front people. It helps to do some of this in person rather than by email or phone - banks are conservative organizations after all (and if your money is in that bank you want them to be).

EDIT: Now when dealing with banks don't be surprised if you run into stuff like this:AMEX Security - what's behind this jaw dropping stupidity? - a legacy mainframe system that only accepts 6-8 character, lowercase, alphanumeric entries with no spaces and no special characters. This is why most banks are reluctant to let people know about any outward facing APIs.

kloucks
+1  A: 

Perhaps the bankjob gem might be useful:

http://bankjob.rubyforge.org/

Mark Connell
Looks like a good product for scraping any 2 step/part (uid, pwd) authentication site - with 3 step/part (captcha, etc) authentication it will have problems
kloucks
Thanks. Basically, what I needed to know about was scraping (Mechanize). I've achieved what I needed by using Mechanize alone; bankjob wasn't as well suited to my purpose.
Sai
Does anyone know of a php solution?
Andres