180

I'm using CHASE bank. (Also Bank of America) and I want to get my bank transactions and my balance if I can. Is there an API for that? in PHP or JAVA? If so, please let me know how to get them.

Asclepius
  • 57,944
  • 17
  • 167
  • 143
Expert wanna be
  • 10,218
  • 26
  • 105
  • 158
  • I doubt your bank exposes an API to their financial data, but if you want to be sure, ask them. – pritaeas Sep 01 '11 at 11:33
  • 2
    It's actually quite common. Most companies get their financial statements electronically, not on paper. – MSalters Sep 01 '11 at 11:36
  • 1
    Getting data electronically does not automatically mean there is an API. Also read [this thread](http://stackoverflow.com/questions/4711554/integrating-bank-accounts) – pritaeas Sep 01 '11 at 12:24
  • 1
    Point taken, should have added unlikely to be open to individuals. – pritaeas Sep 01 '11 at 13:22
  • 1
    https://plaid.com/docs/#long-tail-institutions – Dave Jan 12 '16 at 04:46
  • old question, that I think hasn't been answered properly yet. I stumbled upon teller.io that might provide a solution, unclear about their cost yet. – Lockszmith May 13 '22 at 05:19

3 Answers3

127

Just a helpful hint, there is a company called Yodlee.com who provides this data. They do charge for the API. Companies like Mint.com use this API to gather bank and financial account data.

Also, checkout https://plaid.com/, they are a similar company Yodlee.com and provide both authentication API for several banks and REST-based transaction fetching endpoints.

Asclepius
  • 57,944
  • 17
  • 167
  • 143
Robert Kehoe
  • 1,294
  • 1
  • 9
  • 3
  • 5
    Thanks, i was interested in how apps like mint and pageonce do it. Anyone know if there is anything free to chase. I want to create an open source app. So paying for an api would not be an option – Darren Cato Jan 24 '12 at 16:54
  • 3
    You could tell the users that the project requires that *they* pay for their own API license. That's completely understandable. – RyanScottLewis Jun 13 '12 at 22:57
  • 1
    It's better if you can do it for free and keep the service free as well if you're wanting to go the open source route. Mint provides free service by using your financial data to allow banks to target you with ads. I think the answer left by user1319829, below, is the best approach. Did you end up finding a working solution for yourself (OP) and if so, what'd you do? – Danny Bullis Dec 18 '12 at 01:56
  • 67
    I spoke with yodlee over the phone. Alot of their "APIs" are just worker processes they run in the background that screen scrapes your bank data. This is why some accounts on Mint are unreliable. The rep also mentioned that Mint no longer uses Yodlee and they switched to a proprietary software that intuit developed. Also, the startup cost for yodlee is $10,000 dollars a year. Not very afforable if you are trying to build an application for yourself. I suggest writing your own screen scaper and making an API out of that data collected, or use the CSV export the bank provides. – glenbot Jun 27 '13 at 19:41
  • 2
    You can get access to their API as an indy dev. http://solutions.yodlee.com/APIDeveloperInquiryForm.html – JT Turner Nov 24 '15 at 22:59
  • Synapse seems to be offering this as well: https://synapsepay.com/product – philgo20 Aug 31 '16 at 20:44
  • 40
    I'm really not down with passing off my banking credentials to a third-party service provider. Banks need to get with the program and offer read-only API keys for specific accounts. – connorbode Mar 29 '17 at 13:42
  • @glebot, wow you get them to share that, cool. – RollRoll Dec 04 '17 at 14:55
  • By screen scraper, you mean an app that goes to the webpage, logs in, and gets the data, then shows it to you in your app? – marshal craft Mar 04 '19 at 01:44
  • Any best replacement for PLAID? Pls suggest.... – Aravindh Sivalingam Oct 14 '21 at 03:13
  • 1
    teller.io is also an alternate product which in many ways is better than Plaid. – Nitin Jain Jan 03 '22 at 03:43
  • is mint.com plaid.com supports indian banks? – Tanuj Sharma Nov 24 '22 at 09:48
107

I use GNU Cash and it uses Open Financial Exchange (ofx) http://www.ofx.net/ to download complete transactions and balances from each account of each bank.

Let me emphasize that again, you get a huge list of transactions with OFX into the GNU Cash. Depending on the account type these transactions can be very detailed description of your transactions (purchases+paycheques), investments, interests, etc.

In my case, even though I have Chase debit card I had to choose Chase Credit to make it work. But Chase wants you to enable this OFX feature by logging into your online banking and enable Quicken/MS Money/etc. somewhere in your profile or preferences. Don't call Chase customer support because they know nothing about it.

This service for OFX and GNU Cash is free. I have heard that they charge $10 a month for other platforms.

OFX can download transactions from 348 banks so far. http://www.ofxhome.com/index.php/home/directory

Actualy, OFX also supports making bill payments, stop a check, intrabank and interbank transfers etc. It is quite extensive. See it here: http://ofx.net/AboutOFX/ServicesSupported.aspx

Konstantin Spirin
  • 20,609
  • 15
  • 72
  • 90
user1319829
  • 1,170
  • 1
  • 7
  • 4
  • 1
    I have code that used to work with Chase, but I just pulled it out of mothballs yesterday and while it works will all my other financial institutions it no longer works with Chase for some odd reason (just returns an unspecified error, doesn't even get OFX XML back...) – Michael Jul 12 '16 at 22:59
  • 6
    For future visitors trying to connect with GnuCash, I found [some answers](http://www.ofxhome.com/ofxforum/viewtopic.php?id=47456) to new issues. **1.** You have to edit the 'header version' from 102 to 103. **2.** It is probably necessary to enter a Client UID along with your username. This can be a [GUID](https://guidgenerator.com/online-guid-generator.aspx) without the dashes. **3.** GnuCash does not provide you the error message that goes along with the error code 200 for signon (followed by 15500 'not signed in'). It says you need to check Chase's Secure Message Center to confirm the app. – 700 Software Jul 20 '16 at 16:40
  • 6
    George Baily's answer proved to be the most helpful. Basically, certain banks (Chase included) provide an endpoint that you can use to download your banking information using a simple XML-like protocol called OFX. There are a few python etc libraries that wrap this communication for you. The one that ended up working for me was 'ofx-ba-tfb.py' (just google for it) after I added CLIENTUID to the sign-on section, changed protocol from 102 to 103, and authorized my client in 'Secure Messages' after the first run of the script, but I'm sure there are more libs like ofxclient etc. – Maksym Dec 26 '16 at 15:02
  • @Maksym Any chance you can share the Chase code that works for you in a gist or something? I am confused about where to add the CLIENTUID in `ofx-ba-tfb.py` – timbram Jun 25 '17 at 16:32
  • 1
    @Maksym nevermind. I figured it out. Ultimately though I started using [ofxclient](https://github.com/captin411/ofxclient) and was successfully able to pull my Chase cc data. This thread helped a lot in making the chase CLIENTUID process work with ofxclient: https://github.com/captin411/ofxclient/issues/19 – timbram Jun 25 '17 at 17:32
  • 2
    @timbram Glad it worked for you. For other who might be reading this thread - ofx-ba-tfb comes with a file called client.py. That file had a bunch of sections that generate headers for the communication.CLIENTUID needs to be added to the headers in the function called '_signOn'. 102 should be changed to 103 in the function called '_header'. – Maksym Jun 25 '17 at 22:37
14

Also check out the open financial exchange (ofx) http://www.ofx.net/

This is what apps like quicken, ms money etc use.

Darren Cato
  • 1,382
  • 16
  • 22
  • 10
    That is not an API to retrieve bank transactions and balances. It's a format that one can use for banking transaction (presentation layer) but not for pulling banking transactions. – Buhake Sindi Apr 19 '12 at 16:50
  • 2
    Im not saying its an api, but i researched the topic before, and there were very few viable options. my research led me to ofx.net as a possible solution to my problem, as expanded on by user1319829 – Darren Cato Mar 14 '13 at 16:09
  • 3
    This is an old answer, but just to clarify, the OFX Specification documents the file format (as Buhake says) but also a network protocol for clients to interact with an OFX server. OFX4J is a free implementation of both, for instance. – Robert Fleming Jun 13 '19 at 21:50