Topic: Whats the Process Behind an OFX Interaction

I'm a hobby level programmer and I want to build an app that will do programmatic intrabank transfers for me. Things like filling an account to a certain value on a certain schedule - e.g. filling a given bank account from whatever value it currently is up to $20 everyday that isnt a weekend.

From looking at the OFX features it looks like this can be done so long as I have a bank that allows two-way OFX communication. Basically query the value of the account, apply whatever math/logic is needed for the amount, and then have the bank run the transfer. Buuuut thats about as far as I've gotten. There isnt much out there on how to actually go about setting up this kind of interaction.

So here I have two questions. Are there any beginner guides / resources for familiarizing myself with the ins and outs of OFX. What are the sequence of events that go with an OFX based interaction (I've provided an example below that should help clarify what I mean..).

1. OFX contacts the relevant banks server
2. OFX provides some kind of authentication proving that its allowed to interact with the server
3. OFX provides the user's account and login information to the bank
4. Bank processes the request

Obviously this is very basic and I'm here to flesh it out. I'm especially interested in the second step - I've read about people using Quicken's appID to make successful OFX requests BUT I'm not sure if this is legal or even necessary. It seems like there are a lot of OFX based services out there that can make these kinds of requests and I have a hard time believing that organizations as traditionally technology ambivalent as banks have hand vetted each of these services. It seems more likely that theres something else going on behind the scenes but this appID business has me uncertain.

I feel like this is the most intuitive place in the forum for this kind of question, but if you think I can get more traction in another sub-forum let me know and I'll repost or contact and admin to have it moved.