Topic: Vanguard Group, The

When I check my .qfx files, they indicate that the FID for The Vanguard Group is 1358. Please update the listing to include this FID.

Re: Vanguard Group, The

I read elsewhere that vanguard is/was using OFX 2.  After banging my head against the wall for a couple of hours trying to make their server respond to v2 (XML) requests, it turns out their server is only responding to OFX version 1.02 (SGML) requests.  FYI.

Re: Vanguard Group, The

For the record I have seen some vanguard files using OFX 2.  When I download information from vanguard I personally get OFX 1.02.

Re: Vanguard Group, The

Jesse, I've seen the same elsewhere on the net, but those posts were dated circa-2008.  Since then, I'm guessing vanguard "downgraded" their OFX connection due to popular demand/software compatibility.

Any ideas on how to connect to VG via OFX 2?  This is pretty much just for my own edification at this point; I'm just happy i can connect. 

TIA!

Re: Vanguard Group, The

No ideas.  I wonder if OFX 1.02 will ever be superseded by 2.0?  Pure XML is easier to parse but everyone seems to have gotten around the SGML difficulties.

Re: Vanguard Group, The

Of note - when using pure OFX, I had to leave out the FI_ID to be able to connect - worked great afterward.

Cheers,
El Deuce

Re: Vanguard Group, The

Starting around July 2017 Vanguard seems to respond with an empty response now (but still a 200 return code signalling no error).  To get the data you need to reissue the request with the cookies it sets in the response.  I added this to my fork of ofx-ba-tfb.py:

            response = res.read()
            res.close()
--- start new code ---
            # Vangaurd requres the request to have cookies it sets
            # (returns empty 200 response the first time)
            if (len(response) == 0):
                cookies = res.getheader('Set-Cookie')
                response_cookies = [c.split("; ")[0] for c in cookies.split(", ")]
                h.request('POST', selector, query,
                    { "Content-type": "application/x-ofx",
                      "Accept": "*/*, application/x-ofx",
                      "Cookie": "; ".join(response_cookies)
                    })
                res = h.getresponse()
                response = res.read()
                res.close()
--- end new code ---
            f = file(name,"w")
            f.write(response)
            f.close()