Access own bank account via self-written application
Asked Answered
R

6

8

I have used MS Money for several years now and due to my "coding interest" it would be great to know where to start learning the basics for programming such an application. Better to say: Its not about how to design and write an application, its about the "bank details". (Just displaying the amount of a certain bank account for the beginning would be a pleasant aim for me.).

I would like to do it in C++ or Java, since I'm used to these languages.

Will it be "too big" for a hobby project? I do not know much about all the security issues, the bank server interfaces/technique, etc.

At the first place after a "no" I need a reliable source for learning.

Respite answered 28/6, 2010 at 20:37 Comment(5)
Probably the biggest issue is getting cooperation from your bank. They may not want you connecting into their system (banks can be very conservative about security), and may view any attempt as an attack. I'd suggest checking what access you'd be permitted to have first.Xena
@David Thornley You can change all the "mays" for "wills" without ANY doubtSpathe
@David Thornley Yeah I thought about that, but since my bank offers a online service I have hope there is a way to get access to it without violating any licene/law.Respite
Agree with @David Thornley here. You're going to face an extremely uphill battle here. I work for a financial institution, and I know we'd never allow this sort of access if you just called us up and asked for it. Unless your bank publishes information in a secure and well documented (maybe standard) format and is willing to grant "public" access to it to an otherwise anonymous app, it's not going to happen.Darladarlan
@Nathan Ernst I will gather information about that, hopefully they care about "small people". ;-)Respite
X
9

Most of the apps I've worked with read in a file exported from the bank's website, which is relatively straight forward.

If that's the road you're looking to go down you'll need to write code to:

  • Login to the bank's website to download the file via HTTPS
  • Either get specs for the file format or reverse engineer it
  • Apply whatever business rules you choose to the resulting data
Xylophagous answered 28/6, 2010 at 20:46 Comment(5)
I thought about parsing files I can export from my banks online account. But I have written to much "parse something" stuff so I skipped that. Despite of that it could be a good start for learning somethin about the bank connection topic.Respite
@insertnickhere I think you're not going to avoid some kind of parsing. Though i'd guess the bank will have at least one format that is XML, like OFX. And i do believe angelo-genovese's solution is the approach some financial applications use in some cases. At least it seems like that's what Quicken is going for a few of my accounts so i'd guess others would too.Mornings
@Mornings Checked this, my bank uses CSV. D'oh. ;-)Respite
@insertnickhere Well that's good news. CSV is some of the easiest text to process. There's even JDBC drivers for it if you feel like going overboard.Mornings
@Mornings Thanks. The drivers I will use. (If I make it to the point where I need them. ;-)Respite
E
2

The first thing to remember when trying to programmatically interact with a banking website without express written permission from the bank will MOST LIKELY be a violation of the website use agreement, and may land you in more trouble than it's worth.

Second, you DON'T want to start 'learning' programming by trying to tackle something that massive and sensitive. Not that there is anything wrong with the eventual goal, but that's a journey of a thousand leagues and you need to take your first step.

I would say start with a simple programming environment, like python, or perl. Reason, you don't have to worry about linking, libraries, code generation etc. Get used to the basics of what you want to achieve functionally, them reimplementing that in C++ or Java would be the next step.

To begin with focus on learning client-server programming.

Write a client, write a server, learn all about sockets, learn all about TCP programming,

then learning about secure socket layers (SSL) and transport layer security (TLS).

Once you've done this, try switching to C++ or Java and see if you can repeat the effect.

There are TONS of tutorials on these topics.

Once you have become used to that, learn what tools and libraries are already available to do most common things. For example libcurl is great for creating common internet application protocol clients (HTTP, HTTPS, FTP and the like).

See if you can create an interactive program that you can "log in to" using your web browser which outputs stuff in XML and formats it using cascading style sheets.

This should lead you into javascript world, where there are powerful tools such as jquery. If you mix and match these correctly, you will find that development can be a LOT of fun and quite rapid.

:-)

Happy journeying.

Escallop answered 29/6, 2010 at 0:45 Comment(1)
Its not about learning how to program. I do this for 10 <ears now, but thanks anyway. :)Respite
R
1

I think its quite a reasonable hobby project; start with a simple ledger and then you can add features.

A few things I would do to begin such a project:

  • Decide on an initial feature set. A good start might be just one of the ledgers/accounts - basically balancing a checkbook. Make this general enough that you can have several.
  • Design a data model. What fields will your ledger have? What restrictions on the values of each?
  • Choose technologies. What language do you want to program in? How will you persist the data? What GUI do you want - a fat client like MS money or a web app?

From there, write up some design notes if warranted and start coding!

Rustle answered 28/6, 2010 at 20:47 Comment(2)
Note: I just noticed the discussion above about connecting to an online bank. I would start with the simple ledger I described before you attempt that. When you're ready, your bank will probably use an exchange/api standard - with luck you can just connect e.g. to a secure web service.Rustle
Harman Yeah this is nothing I want to do in a few weeks. At first I wanted to check out if its possible at all. Thanks for your tips anyway.Respite
A
1

You might look into OFX4J, an implementation of the Open Financial Exchange specification, also discussed here.

Archimedes answered 28/6, 2010 at 23:32 Comment(2)
Thanks, looks quite near to what I need, but at this time I don't know about the details so I have to take a closer look later this day.Respite
Links are dead ...Whack
P
1

Are you looking for something mint.com-ish? From my understanding of their security policy this is how they do it: You give them your online account credentials which they give immediately to the bank and get back a "read-only" account login. They then throw away the credentials you provided and use "read-only" credentials to update your metrics every 24 hours. I don't know how they do this or if they have a special relationship with the banks, but it is possible.

Pleuron answered 28/6, 2010 at 23:52 Comment(1)
It looks quite interesting, I will have a detailed look later on.Respite
G
0

I don't think many (if any) banks provides api's.

Online budget-apps in Sweden seem to rely either on exporting transactions in some excel format, or simply have you "mark all transacations in the banksystem, ctrl-c then ctrl-v in a textbox", which is then parses.

Gerlach answered 28/6, 2010 at 20:56 Comment(1)
mint.com boasts access to all major USA banks. You give them your online account credentials which they give immediately to the bank and get back a "read-only" account login. They then throw away the credentials you provided and use "read-only" credentials to update your metrics every 24 hours.Pleuron

© 2022 - 2024 — McMap. All rights reserved.