1

(2 replies, posted in General)

Thanks a lot for the reply Jesse.

2

(3 replies, posted in OFX Spec)

I had the same issue, but when I added <TRNUID>xxx after <PINCHTRNRQ> the request was successful.

Here is what I sent:
<PINCHTRNRQ>
<TRNUID>171
<PINCHRQ>

After studying this more, I'm starting to get the feeling that the only way to submit OFX requests is with HttpWebRequest and HttpWebResponse.  I understand that this automatically uses SSL if the url is https.  However, this doesn't seem to have any certificate authentication functionality, and I'm not sure if any encryption is happening.  It seems that the SSLStream class, which does have certificate authentication, is not used for sending to a url (only to IP addresses or named servers).  Does anybody know if HttpWebRequest with SSL is considered sufficiently secure to send usernames and passwords?

Can anybody provide any pointers on setting up OFX channel level security in a Visual Studio.NET application?  The OFX specs say that clients need to use the appropriate encryption algorithm CipherSuites and share a root certificate with the server.  I'm a little lost with this terminology.  Any tips you can provide would be great.  Thanks.

5

(5 replies, posted in OFX Spec)

I tried to follow stoicflame's code and notes, but I am not having any success getting a Profile response.  I tried several different banks, but I am just getting 500 errors back.  Does anybody have any idea what might be wrong with my code, which is in VB.net?

        Dim OFXurl As String = "https://www.oasis.cfree.com/1401.ofxgp"
        Dim Org As String = "US Bank"
        Dim FID As String = "1401"
        Dim userID As String = "anonymous00000000000000000000000"
        Dim password As String = "anonymous00000000000000000000000"
        Dim DataBuffer As New StringBuilder

        DataBuffer.AppendLine("OFXHEADER:100")
        DataBuffer.AppendLine("DATA:OFXSGML")
        DataBuffer.AppendLine("VERSION:102")
        DataBuffer.AppendLine("SECURITY:NONE")
        DataBuffer.AppendLine("ENCODING:USASCII")
        DataBuffer.AppendLine("CHARSET:1252")
        DataBuffer.AppendLine("COMPRESSION:NONE")
        DataBuffer.AppendLine("OLDFILEUID:NONE")
        DataBuffer.AppendLine("NEWFILEUID:NONE")
        DataBuffer.AppendLine()
        DataBuffer.AppendLine("<OFX>")
        DataBuffer.AppendLine("<SIGNONMSGSRQV1>")
        DataBuffer.AppendLine("<SONRQ>")
        DataBuffer.AppendLine("<DTCLIENT>" & Format(DateTime.Now, "yyyyMMddHHmmss"))
        DataBuffer.AppendLine("<USERID>" & userID)
        DataBuffer.AppendLine("<USERPASS>" & password)
        DataBuffer.AppendLine("<LANGUAGE>ENG")
        DataBuffer.AppendLine("<FI>")
        DataBuffer.AppendLine("<ORG>" & Org)
        DataBuffer.AppendLine("<FID>" & FID)
        DataBuffer.AppendLine("</FI>")
        DataBuffer.AppendLine("<APPID>QWIN")
        DataBuffer.AppendLine("<APPVER>0900")
        DataBuffer.AppendLine("</SONRQ>")
        DataBuffer.AppendLine("</SIGNONMSGSRQV1>")
        DataBuffer.AppendLine("<PROFMSGSRQV1>")
        DataBuffer.AppendLine("<PROFTRNRQ>")
        DataBuffer.AppendLine("<TRNUID>10001")
        DataBuffer.AppendLine("<PROFRQ>")
        DataBuffer.AppendLine("<CLIENTROUTING>NONE")
        DataBuffer.AppendLine("<DTPROFUP>19600101120000")
        DataBuffer.AppendLine("</PROFRQ>")
        DataBuffer.AppendLine("</PROFTRNRQ>")
        DataBuffer.AppendLine("</PROFMSGSRQV1>")
        DataBuffer.AppendLine("</OFX>")

        Dim byteBuffer() As Byte = Encoding.ASCII.GetBytes(DataBuffer.ToString)

        Dim objReq As HttpWebRequest = WebRequest.Create(OFXurl)
        objReq.Method = "POST"
        objReq.ContentType = "application/x-ofx"
        objReq.Accept = "*/*, application/x-ofx"
        objReq.ContentLength = byteBuffer.Length
        System.Net.ServicePointManager.Expect100Continue = False
        Dim ReqStream As Stream = objReq.GetRequestStream
        ReqStream.Write(byteBuffer, 0, byteBuffer.Length)
        ReqStream.Close()
        Dim objResponse As HttpWebResponse = objReq.GetResponse

        Dim ResponseStream As Stream = objResponse.GetResponseStream
        Dim responseReader As StreamReader = New StreamReader(ResponseStream)
        Dim ResponseString As String = responseReader.ReadToEnd

6

(2 replies, posted in General)

I am developing a personal budgeting software, and I'm trying to understand my options for automtic retrieval of bank statement data.  I have two questions:

Is OFX the only option for automatically retrieving bank statement transactions?

Are users required to sign up for DirectConnect with their banks in order to use OFX to retrieve bank statement transactions?  Just retrieving data, not initiating any transactions.

Great forum!  Thanks for organizing.