This is part 5 in my series for replacing Microsoft Money. I gave my requirements in part 1. Then I looked at Quicken, GnuCash, and Moneydance.
I still haven’t found a perfect replacement for Microsoft Money. Money isn’t perfect either, but it’s working. Well, sort of. I already know the bugs and limitations and I know how to work around them.
Having suffered from being at the mercy of one software vendor, I really don’t look forward to jumping into the arms of another vendor with the same policy of automatically disabling features. Meanwhile, the contenders GnuCash and Moneydance still don’t match all the functionalities I’d like to have.
If only the downloading features won’t work in Money, why junk the whole thing? Why not just fix the downloads?
Having seen how GnuCash and Moneydance can download transactions directly from the financial institutions, I wondered if there is a way to use an alternative application for downloading. I can then import the downloaded files into Microsoft Money. If it’s only a one-time setup and a few more mouse clicks, I can live with that.
With the help of Google and GnuCash Wiki, I found two great Python scripts (ofx.py and ofx-ba.py). With some trial and error, I figured out how to use them on Windows.
[The rest of this post contains detailed technical instructions. I provide enough details to make it work even if you are not that technical. Skip if you are not interested.]
1. Download and install Python. I used the latest ActivePython 2.x for Windows. I think the 2.x version from python.org will work too.
2. Download the Python scripts: ofx-ba-tfb.py. Just save them in a folder. Open it in a text editor. You will see something like this:
sites = { "amex": { "caps": [ "SIGNON", "CCSTMT" ], "fid": "3101", "fiorg": "AMEX", "url": "https://www99.americanexpress.com/myca/ofxdl/us/download?request_type=nl_desktopdownload", },
These are the address and IDs used in downloading from the sample financial institutions. You will need the address and IDs for the financial institutions you use.
3. Look for OFX settings. The settings for some financial institutions are listed in OFX Direct Connect Bank Settings on GnuCash Wiki. There is another searchable list at a web site OFX Home. If the companies you use are not listed there, you will have to find them yourself in some other way.
Find and gather all the values for each of your financial institutions.
4. Update Python script. Open the Python script again in a text editor. Replace the sample settings in the scripts with the settings for the companies you use. Give each entry a short name. Fill in fiorg, fid, and url. Add or remove more entries in the “sites” area if necessary.
For credit cards, make them look like amex in the script with a CCSTMT. For brokerage accounts, make them look like fidelity in the script with a INVSTMT. Add bank settings to the script. You will also need the routing number for your bank.
5. Run Python scripts. Open a command prompt (Start -> Run … -> cmd). For credit cards and brokerage accounts, type
python ofx-ba-tfb.py [name of the site] [your online login] [your account number]
For bank accounts:
python ofx-ba.py [name of the site] [your online login] [your account number] [CHECKING or SAVINGS]
When you are prompted for the password, type your online password and press Enter.
The script will download a [site][yyyymmdd].ofx file. Open Microsoft Money. Double click on the downloaded .ofx file. The Microsoft Money Import Handler mnyimprt.exe will take it from there.
So far, this is still not much different from going to each financial institution’s web site and downloading the transactions manually. With more modifications, I made the script:
- take the password as a parameter instead of prompting the user for the password
- trigger the Microsoft Money Import Handler automatically after each download
You can download my automated script. To use the automated script, insert your online password between your login and your account number. For credit card or brokerage account:
python ofx-ba-tfb-auto.py [name of the site] [your online login] [your online password] [your account number]
For bank account:
python ofx-ba-tfb-auto.py [name of the site] [your online login] [your online password] [your account number] [CHECKING or SAVINGS]
To download one account after another, a batch file calls the automated script for each account. Because you have to put your logins, passwords, and account numbers into the batch file, I suggest you put the scripts and the batch file on a portable USB drive. Plug the USB drive into your computer only when you import. Unplug when you are done.
I placed a shortcut to the batch file on my desktop. Now I have my own one-step update. In a round-about way, after looking at the alternatives, I realize I don’t have to replace Microsoft Money after all.
The files generated by these scripts only work with Microsoft Money. Attempting to import the same file into an older version of Quicken gave me this error:
These transaction download scripts only update the prices of securities held at the institutions that provide direct OFX downloads. If you have stocks or mutual funds at institutions that don’t offer OFX transaction downloads, you need a different script for updating the prices. See follow-up post Download Price Quotes to Microsoft Money After Microsoft Pulls the Plug.
Once again, the downloads are:
- ActivePython 2.x or Python 2.x
- my modified script for downloading interactively. Test your settings with this one first.
- my automated script and batch file.
- my script for downloading price quotes.
Special thanks to:
- GnuCash community for the inspiration
- OFX Direct Connect Bank Settings on GnuCash Wiki
- Costin Manolache for the fix for Vanguard
- Google, for helping me find the resources above
Say No To Management Fees
If you are paying an advisor a percentage of your assets, you are paying 5-10x too much. Learn how to find an independent advisor, pay for advice, and only the advice.
indexfundfan says
tfb, would the above scripts also download security prices?
Harry Sit says
Not directly. The brokerage statement includes the positions and the current prices. If you have positions elsewhere, those prices are not updated. However, it is conceivable to create a dummy brokerage account in Money, construct a fake OFX statement with prices from Yahoo! and then import that fake statement for the dummy accout. In your Money reports, you just exclude that dummy account. I will leave that exercise to the future or a more capable developer.
DT says
Seems like all you really wanted to do was fix the
downloads issue with MS money, and now that
you’ve solved that bugaboo, you’re gonna stick
with MS Money after all. Is that about right?
I mean, it appears you’ve just talked yourself
into staying with MS Money, due to these Python
scripts.
Are you planning a summary post for your conclusions?
J says
Not sure about MS money, but Quicken won’t import files without validating with the bank. And it won’t validate with the bank after it expires.
Simon Fell says
The scripts are a nice idea for sticking with Money, but it seens like once money is dead, the OFX download format will soon be after it, and I can see most financial institutions might stop offering it.
Harry Sit says
@DT – Yes, I’m going to stick with MS Money as long as the Python scripts work. Maybe I will write a summary post after I get the stock quotes working and after I take a look at Quicken 2010.
@Simon – That’s a possibility. We will just have to see. I hope Quicken also hit those URIs and the financial institutions will continue to support Quicken. The scripts just piggy back on Quicken.
Chrisem says
Well done! Thank you. At the least it buys time for other options to develop.
J says
To test if import works for MS Money, try pulling the network cable after downloading the files, then do the import. If MS Money needs to phone home, like Quicken does, you should get an error during the import.
Good luck!
Harry Sit says
J – Yep, tested. After downloading the transactions, I turned off WiFi on my laptop. Money 2006 imported the files successfully.
T says
TFB,
Your posts absolutely made my day. Probably my week too, which otherwise would have been spent buying Quicken and converting heaps of data into it.
I wrote a small Batch file to download and import all of my accounts, just like Money used to do, which doesn’t require a hard-coded password…posting it here in case anyone else is interested.
Thanks for the posts.
P.S… The BAT relies on your Automated Script – which accepts password as a parameter – for both Bank and CreditCard. If you have multiple accounts at the same bank, using the BAT file below requires a few small changes to the Python in order to make the filename on each OFX unique, thus to prevent overwrite. In short, change the “client.doQuery” line to include “argv[4]” as part of the filename. Something like
client.doQuery(query, argv[1]+argv[4]+dtnow+”.ofx”)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@echo off
REM Place this .bat file in the same directory as your Python scripts.
REM delete the old files.
del *.ofx
REM Prompt for password. If all accounts use the same password,
REM you’re done. Otherwise repeat this “set /p Password=” command
REM before each account having a different password.
echo Enter Password
set /p Password=
echo Downloading [Credit Account 1]…
python ofx.py [account] [user] %Password% [acct#]
echo Downloading [Investment Account 2]…
python ofx.py [account] [user] %Password% [acct#]
echo Downloading [Bank Account 3]…
python ofx-ba.py [account] [user] %Password% [acct#] [CHECKING or SAVINGS]
REM repeat as necessary for each account…
echo ————————————
echo Processing files.
REM this will “execute” the ofx file, which should open it in Money. If Money
REM is running, it will be imported automatically. If not, Money will process
REM the import the next time it starts.
FOR %%D in (*.ofx) DO START %%D
echo Done.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Dave says
I went through a similar procedure to the one you have been describing in your “Replacing MS Money” series.
I am evaluating two options at the moment.
My first option is to use Yodlee to handle all the downloading. It is an easier way to do the same thing you are doing with the scrips. Yodlee downloads and aggregates all my transactions from banks and investment institutions (and some other vendors too). Then I export from Yodlee and import to GnuCash. Here is a discussion with more details on UbuntuForums:
http://ubuntuforums.org/showthread.php?t=1049798
The second option I’m considering is “My Money 2.0” by MTH. I’m not sure why it never came up on my radar previously, but I’m going to test it now. Here’s a link:
http://www.mthbuilt.com/
I decided that in addition to moving away from MS Money, I wanted to move away from all Microsoft products, so my goals are a bit different, although my requirementes are very similar to yours.
DK says
TFB: Again I appreciate your pulling this information together. I have the following suggestions to help clarify the use of the various scripts you provide in your article:
1. Using the ofx-ba.py script for downloading bank statements requires FOUR arguments in its call, not the three you mention above:
[name of the site: which is the short name given to the site parameters in the script]
[your online login/username]
[your account number]
[CHECKING/SAVINGS].
2. The modified script appears to only allow for credit card and financial institution downloads, excluding bank statements. The parameters required for this script are:
[name of the site: which is the short name given to the site parameters in the script]
[your online login/username]
[your password]
[your account number]
3. The ofx.py script is for credit card and financial institution downloads only and the parameter call is as described in your article.
Thanks for your invaluable help, DK
Harry Sit says
DK – Thank you for the notes. I didn’t do anything to the ofx-ba.py script because I don’t have a bank account. I will do the same modification and update the post later.
Dave says
I’m transitioning gradually from MS Money to something such as GnuCash. In the mean time it may interest others to know what I’m doing. I found out that MS Money will run in Ubuntu 9.04 under Wine 1.0 — and online banking works. Everything works**.
I’m using Money 2003 Deluxe and Business. All my online banking works. My investment account transactions are downloaded too. (Stock prices in my portfolio are not updated automatically, but that’s no big deal.)
I think these older versions of Money (e.g., 2003, 2004) lack the code that makes them stop downloading transactions.
One could revert to an older version of money by using this method:
http://wiki.github.com/mulicheng/csv2ofx/microsoft-money-mapping-file
Getting Money to work under Wine:
There are some tricks to it; find them here: http://ubuntuforums.org/showpost.php?p=7963718&postcount=13
Harry Sit says
DK – I found out that the ofx-ba.py script actually handles all three types of accounts: credit card, brokerage, and bank. I re-did my modified scripts based on ofx-ba.py. I updated the post and links. I hope everything is clear now.
mmblanco says
TFB – Thanks for this valuable scripts.
I want to know if there’s a way I can update the historial values for mutual funds quote prices. I have received an excel doc with two columns, one for the date and the other for th price. I wold like to import this data into MS Money, so that I can make some index comparison, etc.
Thanks in advance.
Harry Sit says
mmblanco – Sorry I don’t know how to import historical prices.
John Brinnand says
TFB: Along with others I would like to thank you for sharing your solution to updating the stock/fund prices after Microsoft pulls the plug on us. I have spent a lot of time, without success, trying to come up with a way that I could retain all my information in Money and avoid having to enter over 30 stock/mutual fund prices manually – it was a big relief to find the answer on “TheFinanceBuff”.
I have had no problem using your quotes.py script to create the “ofx” file and importing the prices into Money Plus Deluxe.
Rather than having the dummy “Investment” account showing a market value I have changed the “number of units” in the script to zero. Even though Money states “You have no unread statements” it does appear to update the “Price File” on a daily basis. I tested this with 5 consecutive daily “ofx” files with no connection to the Internet.
I am quite happy to just update the prices on a daily basis after the market closes but I did see that someone would like to update the prices though out the day. The only way I have found how to do this is: –
1. Do the first update of the day as usual.
2. One the second, and subsequent updates for the same day open Money and delete the dummy “Investment Account” (As there are no open investments in it, it will delete with one click).
3. Run a price update – Money will ask you to set up a new account – click “New” and then “Next” a few times and enter “xxx” for Bank Name. Money will then import the ofx file and update the “Price File” with the latest prices.
Not an ideal solution but it seems to work and could come in handy if you update before all the closing mutual fund prices are in and have to do a second update.
Harry Sit says
John – Thanks for the tip on making the number of unit zero. I never thought of that. I think that works better than unit of one because it won’t affect the holdings and reports. Let me try it. If it works well, I will update the script.
DK says
TFB, I have modified the quotes.py script slightly to download historical security prices for single days. It works basically like your script. I don’t maintain a website myself, but am willing to pass the script and accompanying batch file to you for posting. I like this new option as it lets me download prices for days on which I missed downloading prices with the quotes script.
DK
DK says
TFB: Has anyone tried to connect to RBC Wealth Management, formerly RBC Dain Rauscher? The information from the fi file (RBC Dain Rauscher and 8035) do not work. Thanks!
alw says
Am so happy and relieved to have found your site as I’ve been using and depending heavily on MS-Money for almost 15 years now and did not relish the idea of converting data to Quicken or another PF program. I’ve installed Active Python and your various scripts documented here and the quotes download works great for me. When attempting to execute your auto script though either at the command line or with the batch file I get the following error. I haven’t edited your script at all and am just attempting to use my own AmEx and Chase login credentials. Any thoughts as to the cause?
Traceback (most recent call last):
File “ofx-ba-tfb-auto.py”, line 212, in
client.doQuery(query, argv[1]+”_acct.ofx”)
File “ofx-ba-tfb-auto.py”, line 178, in doQuery
h = httplib.HTTPSConnection(host)
AttributeError: ‘module’ object has no attribute ‘HTTPSConnection’
alw says
I posted the above HTTPSConnection error message and am happy to report that I’ve found resolution. It turns out that Active Python for Windows 64 OS doesn’t come with the necessary SSL support to run these scripts. I am using the 32 bit version instead now and the scripts run fine. Thanks so much TFB for this fine site and solution.
Bob says
Can this be set up to just get quotes into MOney without contacting a financial institution. I don’t want updates from my bank. I just want to update stock prices
Harry Sit says
Bob – See follow-up post Download Price Quotes to Microsoft Money After Microsoft Pulls the Plug.
Julee says
I am not a programmer but I am determined to keep money downloads working.
When I attempt to run the python script at the cmd prompt I get the following error message.
python: can’t open file ‘ofx.py’: [Errno 2] No such file or directory.
I have tried saving the file in a variety of places so it can be found but to no avail.
I had to use Python 2.6.3.7 and chose the Windows(x86) version, rather than the Python 2.6.2 that you suggested. It doesn’t seem to be available anymore.
Julee says
Now that I have used the cd command to change directories to the python26 folder, I am getting a different message.
Traceback (most recent call last):
file “ofx.py”, line 167 in
client = OFXClient(sites[argv[1]], argv[2], passwd)
KeyError: ‘[discover]’
Please help.
Julee says
I got it to work now. Thanks for giving me this fun experience of feeling like I am back in college in my beginning computer science class. Clearly I learned a LOT.
Julee says
Has anyone successfully tried to download account information from an entity that uses Yodlee? I get a long string of problems relating to sending with a final soctet.error [Errno 10061]
No connection could be made because the target machine actively refused it.
I have two a bank account and a couple of credit cards athat have Yodlee as the Org and use the same provider url.
Please help.
Randy says
When I use ofx.py to get my Scottrade account (had to add “fid” field to the sites data), I do get an ofx file. When Money imports it, I have to match every symbol to one in my account (they all seem to be the same anyways) and OK it. Then it shows all my share counts as 0. It also appears to be from 10-24-2009 and not showing any activity newer than that.
Is anyone successfully using these scripts for Scottrade?
Scott says
Thanks so much for posting these scripts! These are exactly what I was looking for.
I admit that I was having problems with getting it to work with JP Morgan Retirement Services–the server kept returning 2020 error codes (something about invalid date in the request).
I tracked it down by comparing what Money was sending in its request. It turns out that JP Morgan doesn’t like to have the time included in the DTASOF field in the request–it wants only the date. In the “_invstreq” procedure, I had to add the following line:
dtnow_notime = time.strftime(“%Y%m%d”,time.localtime())
and then adjust the DTASOF parameter as follows:
_field(“DTASOF”, dtnow_notime),
I don’t know what impact this will have on other brokers, but the JP Morgan import is now working fine for me.
Thanks again!
Inko says
TFB:
Thanks so much for the great work. I have one more challenge for you though. In addition to a userid and password, my bank also (during successive logins) rotates through several other predefined qualifying questions (i.e. What is your father’s middle name) as a additional security feature. Money does support this feature. When setting up the online access for this bank, you’re prompted with a ledger that itemizes the questions and responses. Any idea on how to replicate this feature in your scripts.
Thank you…Inko
Harry Sit says
Inko – Sorry, the script can’t handle that challenge.
George Lindauer says
I’ve been unable to get any of these scripts to do anything for Chase using Active Python 2.6.4. It only calls five programs, the first two the originating python program and the last three to httplib.py lines 974, 391 and finally 355 before quitting.
2.6.4.Traceback (most recent call last)
httplib.py line 355, in _read_status raise BadStatusLine
httplib.BadStatusLine.
Please help!
Harry Sit says
George – Chase changed the OFX server address around Nov. 15. The new address is
If you replace the old address
with that new address, it will start working again.
George Lindauer says
Thanks! That worked fine.
Michael says
Love the help this site is providing. To bad Microsoft won’t help us.
Can I get some insight to fixing the following error?
File “C:\Python26\lib\urllib2.py”, line 516, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 400: Bad Request
I’m using ofx-ba.py sample.
Michael says
I got the ofx.tfb.auto.py to function.. I’ll use it. thanks. This stuff is fun.
DK says
I am getting the same error as referenced in message 29. I am trying to access a bank which has Yodlee as designation. Does anyone know the source of this problem – I get urlopen error 1006: no connection could be made because target machine actively refused it. Any help will be appreciated. Thanks.
Harry Sit says
DK – This script will not work with Yodlee because Yodlee does not provide a true OFX interface. Yodlee charges Microsoft for its service. It will not let you just connect to it. If the bank itself does not provide a web download, the best workaround is perhaps using Yodlee MoneyCenter. I heard you can export to OFX from Yodlee MoneyCenter, although it’s manual, not automated.
Michael says
Anybody solve the OFX URL access to Dodge and Cox mutual funds?
Thanks
Harry Sit says
Michael – According to the online banking directory zip file, Dodge & Cox mutual funds uses Yodlee. I don’t think this script will work for Dodge & Cox.
George says
The ofx-ba-tfb-auto.bat works fine at Chase for a credit card but not for checking. I tried a single python script for checking
ofx-ba-tfb-auto.py chase chase_login chase_password account # CHECKING
which logs on, and produces a small OFX file but does not download banking information. The downloaded OFX information from Chase for the checking account is
0INFOSUCCESS20091226164624.986[0:GMT]ENG
0INFOSUCCESS20091226181846.172[0:GMT]ENGB110898f51e5fc49b6b4494bfe3d34ab0c98aec
2003ERROR4</OFX
at which point it ends.
The credit card information which works for the same login without CHECKING is
0INFO4USD etc
It appears that the ERROR prevents OFX from asking for my account number. Is there something I’m missing?
Harry Sit says
George – For a bank account, you will have to put the ABA routing number in the script (modify from the “usaa” profile in the example script). If you have both a credit card and a bank account with Chase, you will need two site profiles: chase_cc with “SIGNON”, “CCSTMT” and chase_bank with “SIGNON”, “BASTMT”.
George says
I tried changing the profile for chase to,
“chase”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “10898”,
“fiorg”: “B1”,
“url”: “https://ofx.chase.com”,
“bankid”: “074000010”,
},
where 074000010 is the routing number for Chase in Indiana but once again It read in the fid and fiorg information but then gave the CODE 2003 SEVERITY ERROR STATUS CLTCOOKIE4 STMTTRNRS BANKMSGSRSV1 with no downloaded information. Is there something else I need to change?
G says
Does any body know any way to get more than 30 days of historical data? I waited about 2 months after money expired to get this working and now I’m missing a month of data. Thx
Michael says
Look in the main PY routine for:
if __name__==”__main__”:
# print “Number of args”,len(argv)
dayamt = int(argv[5])
dtstart = time.strftime(“%Y%m%d”,time.localtime(time.time()- dayamt*86400))
dtnow = time.strftime(“%Y%m%d%H%M%S”,time.localtime())
dayamt should be 31 (I changed this item to be a variable taken from the control cards. I changed default to 8 in my bat file.) Change to number of days you need.
George says
The bank id for Chase savings apparently was incorrect. It should have been 083000137. Although I live in Indiana, and my checks use 074000010, the routing number needed was that for Kentucky! Using this, the download worked.
I just purchased a new computer and installed MM 2007 (which does not require activation) on it. I imported my data from my old computer using a .qif file and the MM program update feature successfully updated the data from Chase.
Michael says
*** Here’s a heads up for MS Money users and using these routines ***
Firstly, remember to take backups before any account setting changes that deal with MSMoney’s online access setting, once your access has expired.
I discovered that after I removed the online access settings for my accounts (of which I have about 20) two things occured: First, activity previously downloaded, and then downloaded once again, from the bank showed up as new/matching existing entries and I had to ‘accept’ them end to the system. Previously, previously downloaded transactions were ignored. Second, since you have expired your MSMoney online access, you can’t restore it.
I used a backup file to get the online settings restored.
I recommend you don’t turn off your online access after MSMoney expires.
Thanks so much to all the comments and help being offered at this site. It has been a life saver for me.
Barry says
I have to say thank you, thank you, thank you for putting this information out on the net. I saw this script update info months ago but having little knowledge about scripts and batch files it seemed way too complicated for me. I was just going to buy Quicken but the Quicken 2010 reviews that I’ve seen have been lukewarm and I was afraid of how well the Quicken conversion tool would actually work. Since Fidelity and Vanguard are major holdings of mine I decided that since you had a working script that I would finally give this a try. It probably took me much longer than it should but I finally got downloads working for Fidelity, Vanguard, and security price updates. I still have other accounts that I will probably update manually but since I do my bill paying with Fidelity SmartCash that is the account that I really had to have updated automatically instead of manually. So screw you Microsoft, instead of getting cash from me every 2 yearsto renew my software like before now you get nothing and I still have a useful Money product. Don’t know if these companies will support OFX downloads once all current Money users are phased out but this is great for now. So thanks again to the original poster and for all the comments that followed.
Actigraph says
I am still using MS money deluxe 2004 version and I am able to download my credit card and bank transactions as well as stock quotes. Here is the trick
1. Set the computer time back to some time in year 2006 or any time before the online update expiration date.
2. Run MS money, and open you file.
3. Change the computer clock back to current.
4. Update your online account, new transactions and latest stock quotes will show up
It should works with those financial institutions that have direct connect services.
Bobby says
Excellent information! I found your post while looking for options to move data from Money Plus. Quicken doesn’t sound like it’s quite where I want it.
As for the scripts, they are fairly straight-forward, but being a programmer of sorts, I quickly started modifying a few things. The first was to replace the batch file with another Python script, since I wanted a “do this for real… y/n” confirmation before executing… and Python is a *much* better scripting environment than batch commands.
I now have a question regarding OFX messages. Per the OFX standard, can multiple “statements” be aggregated into one message? If so, will Money still require you press the “OK” button every time an account is updated? It would be a nice improvement to not have to “accept” the import process for every statement, even though it is trivial overall. Parsing and aggregating multiple ofx files would be easy, but is there an official OFX format for this that Money will accept?
Leo says
Like others who have posted here, I like Money and do not want to change and appreciate the work you’ve done. However, I am not a programmer, but I think I understand what you’re trying to do.
Having said that, I think my requirement is not as demanding as yours. I simply want to update my fund closing prices. I looked at Google Finance (GF) and found, not unlike Yahoo, that I could create a portfolio of my funds. So, I created a portfolio with the intention of manually updating the prices (this is before I discovered your site). After I created my portfolio I noticed that I could download to OFX from GF. I thought, Hey this is great, can Money import it? Apparently it can and does. At least when I tried it, something was imported as I got a success message. But, I don’t know what happened as none of the prices were updated. I guess my problem is that I don’t know how the import function works. Can someone help?
Thanks in advance.
Harry Sit says
Leo – If you open the OFX file from Google Finance in a text editor, you will see it doesn’t have the current prices. That’s why Money didn’t update anything. I will release a small application with a graphical user interface for updating the prices shortly. Stay tuned.
Leo says
Thanks for the quick reply.
Yes, you are correct there aren’t any prices in the OFX file. But, I don’t understand. What is the point of the download OFX option in Google Finance? What data is a person downloading?
I’ll stay tuned for the GUI application and perhaps then you might explain why there are no prices.
Thanks again for all you do.
Harry Sit says
Leo – I can’t answer for Google Finance because I only knew about its export to OFX feature after you brought it up. It looks like you can enter buys and sells on Google Finance and then download those buys and sells to OFX.
Barry says
Is there any down side to changing the system date as suggested by Actigraph?. I tried it and it works. I like this idea better than running the scrips because I have some investments that I have not yet set up to update using the script.
c230 says
Are you aware of a solution with Schwab brokerage? The ofx that I get with QWIN 1700 only contains account numbers – no transactions or positions. I tried MICROSOFT MONEY 1700, but that produces Traceback errors.
c230 says
In the previous post I meant I changed the appid and appver values from QWIN and 1800 to MONEY PLUS and 1800 respectively.
Denis says
Hi,
Thank you for all these information.
You said that in your last Python script, you managed to launch Money import Handler automatically to download your ofx file into money.
I had a look at your script, but could’nt figure out where this instruction was (the script seems to be troncated somewhere). Could you give me this part of code ?
Thanks
Harry Sit says
Dennis – In the automated transaction download script, this line starts the Money import handler:
os.startfile(“\”” + os.getcwd() + “\\” + name + “\””)
Harry Sit says
c230 – If you read the notes on GnuCash Wiki, you will see other people had the same problem with downloading from Schwab using GnuCash. Sorry I don’t know what the correct settings are for Schwab or if it’s possible to download from Schwab at all.
c230 says
Thanks for the reply. I’ve escalated my request at Schwab to hopefully provide some means of initiating the generation of an ofx file. It sounds like the Direct Connect that Schwab uses is a two-way conversation to generate the ofx, rather than a simple download.
I haven’t had luck with Discover yet either, but maybe I need to let a couple of days pass before trying again. I get no errors, but no transactions either.
Harry Sit says
From Scott via e-mail:
Schwab has been working fine for me with these scripts, for both bank and brokerage:
“schwab”: {
“caps”: [ “SIGNON”, “INVSTMT” ],
“fiorg”: “ISC”,
“fid”: “5104”,
“url”: “https://ofx.schwab.com/cgi_dev/ofx_server”,
},
“schwabbank”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “101”,
“fiorg”: “ISC”,
“url”: “https://ofx.schwab.com/bankcgi_dev/ofx_server”,
“bankid”: “121202211”
},
c230 says
After downloading my Schwab statements, Money wants to change all of my positions to a quantity of 0. I wonder what values Scott is using for appid and appver. I’ve been using QWIN and 1700.
John Brinnand says
Would appreciate it if anyone can provide the script to download prices for a specific date.
This would be handy for getting month-end prices after the fact.
Thanks
Scott says
I’m using appid/appver QWIN, 1800. All of my position information seems to be getting recorded properly as well. Are you at least getting the transactions through?
I also made some changes to the date functionality (see comment 31 for details) to make the script work with another service provider. I could have sworn that Schwab was working before I implemented those, but I suppose you could try implementing them too.
Harry Sit says
John Brinnand – Reader DK sent me histquot.py. It downloads quotes for a specific date in YYYYMMDD format. I have not had the chance to test it. I’m posting it AS-IS.
c230 says
Thanks Scott,
My Money online services haven’t expired yet – I’m trying out these scripts ahead of time, so I don’t need to try the date trick. I’ll keep trying different things…
c230 says
TFB,
Is it your understanding that online services have to be turned off in Money in order for these scripts to work? Perhaps that is why my “successful” ofx files don’t actually do anything. My quotes.py script works fine for the Dummy account (which doesn’t have any online services associated with it).
c230 says
Scott,
My browser (IE8) only shows the last digit of the comment # in the TFB Blog, so I was looking at the wrong one #51 instead of #31). Now I know which one you referred to. I am not getting an error like you did with JPMorgan, but I’ll try your suggestion anyways.
Michael says
C230, post #70
Refer to prior post #49.
Don’t remove the online update status to your accounts. You can run these OFX downloads and run MSMoney udpates (until they expire) at the same time.
If you remove online update status and MSMoney expires, you must restore your money file from a backup when the accounts had update status to reinstate update status.
Michael
Harry Sit says
c230 – The transaction download script downloads transactions. Money is smart enough to know which transactions have been already downloaded and which ones are new. For this script to show anything in Money, there have to be new transactions not yet downloaded. Don’t remove online update. Just stop using it for a few days or at least check off the box in the list of accounts to be updated for the account you are testing. Test again when there are new transactions in the account you haven’t downloaded before.
c230 says
Michael,
Thanx for the ALERT. I remembered reading #49, but was curious whether the scripts and online updates could be run simultaneously, which as you point out now – yes they can. Unless someone else chimes in, I’m going to give up on Schwab brokerage downloads for now, as I am not having any success.
Dan
c230 says
TFB,
Sorry for my high count of blog comments 🙂
After running the scripts several times this morning for both Discover and Schwab, with no transactions or positions ending up in the ofx files this morning, I did the Money online update and got 7 Discover transactions and 5 Schwab transactions. So there were transactions in the que. I’m giving up for now…
Dan
c230 says
TFB,
I ran the scripts several times this morning for both Schwab Brokerage and Discover CC and got no transactions in either ofx file. Then when I ran the Money online update I received several transactions from both, so I know they were in the que.
I give up for now…
Scott says
c230,
Earlier, you mentioned that you received only account numbers in your downloaded transaction file. Is that still the case?
This is what happens for me if I call the script using only my Schwab account credentials and not an account number–this asks Schwab to just list your accounts and nothing else.
If I provide the account number on the command line when executing the script, it should download the actual account content an transactions for the account.
I’m not sure if this is obvious or not, but I thought I’d point it out. if you are in fact including the account number and it’s still not working, I’d be interested to know what is actually contained in the resulting OFX file.
c230 says
It wasn’t obvious to me Scott. THANK YOU! That did the trick – so you get an ofx file for each account. I looked in the ofx file and Wala, the transactions were there AND the positions.
TFB – If this was pointed out, I missed it, but to help others, I think it should be pointed out that if you have multiple accounts at a brokerage, you need to run the script for each account. Now that I look in your batch file, I see you spell out [acct 1] and [acct2] but for some reason, that didn’t strike a chord until Scott mentioned it.
Michael says
C230,
I have no trouble with Discover Card. Here’s my setup structure:
“discvr”: {
“caps”: [ “SIGNON”, “CCSTMT” ],
“fiorg”: “Discover Financial Services”,
“fid”: “7101”,
“url”: “https://ofx.discovercard.com/”,
},
I don’t have Schwab. Have you edited the ofx file to see if it has any comments or error codes?
c230 says
Michael,
Well now that Schwab works, I just have Discover to work on…
my ofx file seems fine other than that there are no transactions – I see my credit card #.
0INFO20100120104329.942[-5:EST]ENGDiscover Financial Services71012f9a099888404c3c8a0d08d78979955c
0INFO419990101170000 my credit card number YNNACTIVE
Is this the same situation where I need to have the account # in the command line?
Bobby says
I don’t have access to my files right now, but Discover works fine. Post #78 matches my memory. As with others, you *must* include the account #. Login for Discover is usually the account# plus password, but you still have to include an account# in the account field (last parameter input to the script call I believe).
Michael says
control card:
python ofx-ba-auto.py discvr %discpwd%
I take password from the download.bat file.
is your discover userid
is your discover card account number. 16 digets.
Michael says
control card:
python ofx-ba-auto.py discvr $userid$ %discpwd% $acctnbr$
I take password from the download.bat file.
$userid$ is your discover userid
$acctnbr$ is your discover card account number. 16 digets.
c230 says
OK, thanks everyone. I’ve always heard that ofx downloads were “smart” in that you didn’t have to worry about duplication of transactions, etc., so I incorrectly assumed that since the ofx contained the account number(s) already, they didn’t need to be input as a variable. I sure was wrong!!
Hopefully if TFB adds a note like “Unless account number is part of your python statement, you will not input any positions or transactions in your Money import file.”, this will save others from going through the frustration I experienced.
c230 says
I sure feel stupid! Nowhere is it implied that account number is optional, so I don’t know why I kept omitting it. All is well now – all of the scripts work great.
TFB, you’ve got a great blog, and I’ve joined your Facebook group to insure I don’t miss your postings now that I’ve found you through the Microsoft Money Discussion Group. The python scripts will keep Money going for quite awhile.
Bobby says
FWIW, I’m having an issue with duplicate entries on Discover downloads. I’ve found that duplicate entries randomly match existing transactions. If I fix the duplicates, and then re-download the transactions soon after, all is well. If I come back and do the same a few days later, it re-enters a bunch of duplicate transactions again… not all of them, but a lot. It seems random as to which ones don’t match correctly. I’m going to watch this and see what happens, but if there’s a setting in Money, I’d be interested to hear about it. Otherwise, I’ll look into a fix on the OFX end of things.
c230 says
Bobby,
I got 49 Discover transactions today in my ofx file that were all repeats. I right clicked each one and selected delete rather than accepting them to delete later. I don’t plan on doing both methods in parallel, so I didn’t see this as a problem.
My guess is that if we only use the python script method, as TFB stated – we probably won’t get repeats.
Bobby says
As of now, I’m only using the scripts. Before starting, I deleted all online connections in Money, and then started *only* using the OFX script. It works well, except that the duplicate entries for Discover are random and Money doesn’t see them as duplicates. What is odd, is that it only happens w/ Discover and it doesn’t happen with every transaction. It’s either a date/time issue (something I saw w/ Discover and Money before), or maybe something to do with the recent deletion of the online connections within Money itself. I’m going to shorten my download window to maybe 10 days for a while, and see if it gets past the issue once I’ve gone past the 10-day window.
c230 says
I don’t like the idea of having a batch file with all of my account numbers, passwords, userids, etc. so I’m going to try QuickBFC to encrypt the file:
Quick Batch File Compiler convert your batch files into actual program (.EXE format) in one click. This program may be run on Windows 2000/2003/XP/Vista without any limitations. An .EXE file is much harder to casually reverse-engineer, so this could be a way to conceal a particular batch file’s operations from an end user. Content of your batch file will be encrypted and protected from changes.
I’ll let you know how I like it afterwards.
hokie94 says
The “Bank Balance” for my accounts do not update. Is there something I’m missing? Some other piece of code that needs to be written that will make Money read the “Bank Balance” that is listed in the ofx file and update it within money?
Thanks
c230 says
I’ll see if I can help. When you click on “View downloaded statements”, you’ll see 2 columns – Bank balance and Local balance. If you reconcile your accounts periodically, the amounts should match, or at least be pretty close, depending on whether you have future transactions recorded etc. (ie. upcoming bills paid).
If you are downloading statements, you’ll see the summary of that downloaded statement when you click on the “unread” account, but for cash accounts at a brokerage, you may be working off a delta from your last reconciliation (daily updates vs. a monthly statement as an example.
See if you are still having a problem after reconciling your accounts.
hokie94 says
c230
I’m not sure I was clear with my question.
Currently, the “Bank Balance” column indicates that Bank balance as of my last “live” download (12/15/09) which was the last time I was able to download information within MS Money, not using any of the awesome scripts here.
Now, when I use the scripts, the bank balance remains unchanged from 12/15/09. New transactions download just fine, but ht “Bank Balance” remains what it was on 12/15/09. I tend not to like a discrepancy between the “Bank Balance” and the “Local Balance” and moving forward, if that balance does not update (ever), this is going to be an issue.
Thanks for any help you can provide on the issue.
c230 says
I’ll have to defer to someone else as I only have 1 day’s experience with the script 😉
I saw that the correct bank balance was there, but it may have already been correct. If you get paper statements once per month or check the web statement and reconcile atleast that frequently, then I think I’d have confidence in the balance. My brokerage cash accounts don’t even transmit a balance, so I reconcile them every 6 months or so and have never had a problem, since all of the transactions are downloaded.
c230 says
Bobby,
It seems that you are correct regarding a slight difference in the downloaded transactions vs. the online updates. A sample of a downloaded transaction…
STMTTRN
DEBIT
DTPOSTED>20100110170000
TRNAMT>-35.79
FITID>FITID20100111-35.7900021
NAME>Sams Club – #4778 Auburn Hills M
/STMTTRN
indicates that it has got to be either the date/time or the ID#. Not really a problem except as you stated they have to be manually matched if running both updates in parallel.
hokie94,
If you look at the end of your ofx file you should see your balance info…
LEDGERBAL
BALAMT>-1258.57
DTASOF>20100121070000
/LEDGERBAL
so you can verify that it is part of the file.
By the way, a tool you might find handy is MT2OFX which can take CSV, QIF, and OFC files and reformat them into OFX for import into Money. It also makes an OFX file easier to read.
hokie94 says
C230
I see the balance in the ofx files for all statements I download. What I’m asking (humbly requesting) is that someone write some code so that that part of the ofx file is read and updated by money.
The other nice to have option would be to delete ofx files that are processed.
I don’t mean to sound ungrateful…these scripts are absolutely awesome and a lifesaver.
c230 says
The 2nd part of your request is easy if you’re using a batch file. and it was posted by T (comment 10). You can’t delete them until they’ve been processed, so it’s much easier to delete them the next time you’re creating ofx files.
————————————-
@echo off
REM Place this .bat file in the same directory as your Python scripts.
REM delete the old files.
del *.ofx
echo Downloading Discover
python….
————————————-
As to the 1st part of your request, there is no code to write for Money, it should just happen (but doesn’t always, as you know) if the data is compatible. I waiting for an expert to chime in, yet still trying to help. You could try changing appid and appver values from QWIN and 1800 to MONEY PLUS and 1700 respectively. You could also try opening Sample.mny and creating an account from scratch to try your ofx on to see if the expected results occur.
c230 says
TFB,
Using your automated script and batch file example, I’ve done the same and included your Quote script as well. Then in order to not have a batch file on my PC with sensitive information, I downloaded Quick BFC from http://www.abyssmedia.com/quickbfc/ and it creates an encoded EXE file so that you can get rid of the batch file. You simply open the bat file, click on the Build button, and name your new file (keep it in the same folder as your python scripts). I’m happy to report that it works very nicely.
If you need to make changes, simply repeat the entire process, as you can’t edit the EXE file.
——————————————
@echo off
REM Place this .bat file in the same directory as your Python scripts.
REM delete the old files.
del *.ofx
echo Downloading [name of the site]
python ofx-ba-tfb-auto.py [name of the site] [your online login] [your online password] [your account number]
— repeat for all of your other accounts using TFB’s automated script…
echo Downloading other quotes
python quotes.py
echo Done.
——————————————
Bobby says
After multiple tests, Money would always duplicate Discover transactions and rarely match them. I have no idea why, but it is obviously unacceptable. So, I began editing the script and started using the last download date+time for each account. That fixed the credit account “duplicates”. Unfortunately, this did not work for a Vanguard account that I have. Requesting too short of a time interval for that account produces a malformed OFX file, that subsequently crashes Money. Not good!
The fix I’m using now is to remember the last connect time for credit and bank accounts, but to use a 90 day window for brokerage accounts. It’s working perfectly. I placed the data get function inside an exception clause so that if the https connection fails, the “last date/time” doesn’t update. I’m going to add a check that the OFX file was created and isn’t empty as well. A better option will be to include a “time window” field in the data structure for each account, where the default window is some # of days (or zero to use the last successful time).
There’s probably more to this than I’m remembering right now (I did the coding last week), but it’s looking good. If anyone is interested, I can see if I can figure a way to post it somewhere. FWIW, I’m using a Python wrapper rather than a batch file. I had never used Python until now, but I’m hooked (I program a lot and *have* used other scripting shells, but never Python for some reason).
c230 says
Bobby,
I found an old Moneydance trouble ticket (#1193) regarding duplicate Discover transactions and sure enough I’m experiencing the same thing. If you compare my sample transaction in comment 94 to this:
STMTTRN
DEBIT
DTPOSTED>20100110170000
TRNAMT>-35.79
FITID>FITID20100111-35.7900022
NAME>Sams Club – #4778 Auburn Hills M
/STMTTRN
you’ll see that the last digit of the ID# is different, which explains why the transaction doesn’t match up with a previously downloaded duplicate. This is the same condition that others have experienced for the last 2 – 3 years with no apparent fix. I can’t find an explanation as to why Discover would do this.
So I thought I’d try downloading from the website to see if that would be less troublesome than the scripted ofx request and I get this as part of 46 duplicates:
STMTTRN
DEBIT
DTPOSTED>20100110170000
TRNAMT>-35.79
FITID>FITID20100111-35.790
NAME>Sams Club – #4778 Auburn Hills M
/STMTTRN
———————————–
My conclusion/finding/request: Perhaps TFB can modify the code to only obtain the first 3 digits after the ID# decimal, rather than all 7 digits.
c230 says
Bobby,
I also noted that the FID for Discover using the Web OFX download is 9625 vs. 7101, so I tried that in the OFX.PY thinking that it might generate the data differently, but I got an error instead. I still think the solution might be to truncate the last 4 digits of the generated FITID (transaction ID) for the Discover OFX.
To try out my theory, someone that hasn’t downloaded Discover transactions via OFX.PY could manually modify their OFX file generated from the Discover website “Download into Money” option, prior to importing the file into Money.
c230 says
Too bad we can’t edit our postings…
What I meant to say was – To try out my theory, someone that hasn’t downloaded Discover transactions via OFX.PY could manually modify their OFX file generated from the script prior to importing the file into Money.
I’m pretty sure that I’ve triggered the Discover website “Download into Money” option before trying these scripts and didn’t get the duplicates after the file imported into Money.
,
Bobby says
I plan to develop a fix for the Discover transactions soon. I have been testing a method that doesn’t require truncating the FITID value, but it has a glitch itself. I’ll probably write something up elsewhere and provide a link, since a comment post doesn’t work very well.
c230 says
Bobby,
Just a thought (that perhaps coincides with your plan). Before deleting all of the ofx files, the name of the existing Discover file (discover20100125104535.ofx as an example) could be used to determine the start date of requested transactions, rather than the default 30 days.
Dan
hokie94 says
Folks…I discovered something that maybe useful to some.
I changed my system date to a day prior to when my software “expired” (just changed the year to 2009). I opened my money file. I changed the date back to the current date. I was able to update all of my accounts. No scripts needed. I have bank and credit card accounts. Not sure if anyone has tried this before, but it works for me.
Anybody willing to figure out and post what the registry entry is for the expiration date?
c230 says
The fact still remains that come next January, Microsoft is pulling the plug on their Money servers, so this activity for many of us is proactive – we’re preparing for going offline, but not there yet.
Michael says
Here’s something I found on the web: Save computer date; Reset computer date; start up program; restore computer date. It might help speed up the process:
set saved=%DATE%
set date=01-03-09
start msmoney
set date=%saved%
Maybe at this point, you can launch the OFX file extracts for money.
Bobby says
Changing the system date before start-up does work, but it’s not a good idea to use Money with the date set back. By my current understanding, Money relies on OFX data files that reside a Microsoft server. When they pull those (and they will), Money will no longer have what it needs, regardless of the system date.
Ken says
Thanks for your efforts !
I have downloaded the scripts and have run them. As I do a lot of programming at work I have made some modifications to output file names and locations. I have also written a script to decipher JHancock price quotes from a download of their daily “Investment Options” page where they list their prices.
I have two questions:
1. Regarding the activity script … the import file from Fidelity returned my monthly statement activity. Have you, or anyone for that matter, found how to download daily activity for just the previous day(s), as MsMoney Plus DeLuxe 2008 used to download ? This would be like downloading the history for the last 2-3 days or something like that.
2. The updates appear in the price listings (Select update prices\update prices manually…”) by date with a Source = “update” rather than “online.” “Update” prices are not used to calculate the “Change” in price value or the “TotalChange” value columns I include on some of my listings, whereas “Online” price values do result in these calculations. Any idea how to modify the scripts to make these “Online” price updates rather than “Update” price updates?
Thanks again,
Ken
Harry Sit says
Ken – The script has hard coded to download 30 days of activities. It’s controlled by this line:
dtstart = time.strftime(“%Y%m%d”,time.localtime(time.time()-31*86400))
If you want to make it download for fewer days, or remember the last download date and time and resume from that point, just play with that dtstart variable.
What Money does with the imported prices is controlled by Money. I don’t think there’s way to force it to treat the prices as “Online” as opposed to “Update.”
schecker says
I am trying to download brokerage transactions from E*Trade. The download works, shows success and my account no. etc. but does not bring down the detailed transactions. What could I be missing? I am using the ofx-ba-tfb-auto.py script.
CH says
Thank you TFB for all your hard work. I was able to get Scottrade to work. The key for me was that the brokerid is not the same as the org. I changed the line
_field(“BROKERID”, brokerid),
to be
_field(“BROKERID”, “www.scottrade.com”),
and it started working. I know this breaks it for other brokerages and I was hoping you might amend the script in a better way.
Before this modification, the OFX file would say that it logged in successfully, but then have a 2003 ERROR.
Thank you again, this has been a real life saver!
CH
c230 says
CH,
Per the Online Banking Directory, 5468.xml – Scottrade in your py script should read something like:
“scottrade”: {
“caps”: [ “SIGNON”, “INVSTMT” ],
“fiorg”: “scottsave.com”,
“url”: “https://ofxstl.scottsave.com”,
but if “www.scottrade.com” works better, change the fiorg to that instead and return the brokerid code as it was.
schecker,
You’re not making the same error I made in omitting the account number, are you?
MDB says
Maybe you might consider AceMoney as an alternative to MS Money; just a thought.
schecker says
I was able to get e*trade brokerage to work by using etrade.com in the fiorg section instead of what the downloaded xml contained. etrade.com was in the brokerid section of the xml.
Has anyone been able to make Wells Fargo Credit Card work?
Bobby says
OK… after messing with this for a while to fix the Discover issue, I then ended up modifying/adding code to the extent that I decided to do a little write-up on it. I wrote too much for my taste, but what the heck… it’s done now.
If interested, you can read about it at:
http://sites.google.com/site/pocketsense/
Note: I’m not a web-guy… and created the site and entry for the sole purpose of sharing/discussing the OFX import to Money. I didn’t realize until well into doing it how much time I would spend describing what’s going on… live and learn.
If you have comments, I *think* you can leave them on the site.
Dan says
Bobby,
Great Job!! I will be one of your first testers. I couldn’t find a way to leave a comment on your site, by the way. That scubber code for Discover is exactly what I was looking for.
Dan says
Bobby,
We really shouldn’t bring up issues on your scripts on this forum, but you don’t have contact info or a comments method. Your setup.py bombs out on me when testing Discover ….
Traceback:
File “setup.py”, line 253, in
test_acct(AcctArray[acctnum])
File “setup.py”, line 111, in test_acct
if ofx.getOFX(acct) == 0:
File “C:\Documents and Settings\…\ofx.py
“, line 191, in getOFX
minInterval = float(Sites[sitename][‘minInterval’]) #minimum interval (da
ys) defined for this site
KeyError: ‘minInterval’
Dan says
Never mind Bobby,
I had copied the institution data from TFB’s script and omitted to add the minInterval variable in the control.py
Bobby says
Dan: I added a comments page, but apparently it only works if a person has been explicitly “invited”? Rather than try to figure that out tonight, I just added a link to a blogspot.com entry for this topic. Hopefully, that works better.
Sorry about the minInterval issue, I forgot to mention that on the setup page. It was the way I fixed the issue w/ Vanguard requiring longer intervals than the others. I’ll update the instructions for anyone trying to copy their prior stuff over.
steve says
Please help. After working my way through this fix, I can’t seem to get past an error on line 163 in my ofx.py file that says: tuple indices must be integers, not str. This happens after it prompts me to enter my password.
Troy says
Firstly, thank you very much for this. I’ve been downloading quotes for a couple of months and now I’m trying to set up credit card and investment account downloads.
I’ve gotten all other accounts to work except for New York Life and Principal investment accounts. Has anybody gotten these to download using the scripts. Here is the code I have entered:
c230 says
Troy,
The scripts do not work with Yodlee unfortunately.
Steve,
Were you inquiring about scripts by TFB or Bobby? (We should respectfully address questions to Bobby on his Blog comments page)
Steve says
Sorry about the confusion, my question was to TFB and the suggested ofx.py script.
Harry Sit says
Steve – You will have to show us what you had in the sites section. The script can throw an error if you missed a comma, a quote, a square bracket, or a curly brace, or if you had one too many of those. I would also suggest you use ofx-ba-tfb.py with the changes I made for Windows.
Steve says
Okay, I’ve pasted below the section from my sites:
sites = {
“fidelity”: {
“caps”: [ “SIGNON”, “INVSTMT” ],
“fid”: “7776”,
“fiorg”: “fidelity.com”,
“url”: “https://ofx.fidelity.com/ftgw/OFX/clients/download”,
},
},
I tried removing the extra }, but then I received an error saying invalid syntax on line 18 which has def _field (tag,value):
I don’t believe I have the file ofx-ba-tfb.py? I only have ofx-ba.py which I tried but get the same error but on line 183 which says: client = OFXClient(sites[argv[1]], argv[2], passwd)
Harry Sit says
Steve – Remove that very last comma. Make it
sites = {
“fidelity”: {
“caps”: [ “SIGNON”, “INVSTMT” ],
“fid”: “7776”,
“fiorg”: “fidelity.com”,
“url”: “https://ofx.fidelity.com/ftgw/OFX/clients/download”,
},
}
matt says
Hi, trying to get this to work, followed the steps correctly, i think, but get an error trying to execute the b-a py:
File “ofx-ba.py”, line 69
req = _tag(“STMTRQ”,
^
whats the correct syntax for executing the script from cmd?
Harry Sit says
Matt – If you are using the original ofx-ba.py, without my modifications,
python ofx-ba.py [name of the site] [your online login] [your account number] [CHECKING or SAVINGS]
The script will prompt you for the password.
matt says
Hi again,
Yeah, i followed the steps listed above, but I still get that error. Are the parameters encapsulated in brackets [ ]?
matt says
So, I made a bit of progress. I installed an earlier version of Python (2.6) and followed the steps, again. I got further, it prompted me for a password, but then returns:
Traceback (most recent call last):
File “ofx-ba.py”, line 182, in
client = OFXClient(sites[argv[1]], argv[2], passwd)
KeyError: ‘[test]’
Im throwing it:
python ofx-ba.py [test] [account] [CHECKING]
if i just do python ofx-ba.py, it tells me that test is an available site. Any ideas?
matt says
Ah, got it. Missed a param. Now I get an error 15500
Matt says
Hi all,
I finally figured out the error – Wells Fargo is one of the banks that charges for OFX connectivity.
Would anyone be willing to send me some sample checking/debit card transactions that are returned from their banks service? I am trying to build a DTD that will normalize data. Yeah, they should be following the ofx spec, but you know how that goes.
If so, you can axe any confidential info – just make sure you give me the bank name. I’ll create a public wiki just in case anyone else wants this info.
[email protected]
circuit_breaker says
I’m the guy that extended ofx.py to include checking/savings and released it as ofx-ba.py. I guess I could have documented it better, and it does contain an ugly hack that shows my ignorance of python.. but it was my first time ever working with python, and it was thoroughly enjoyable. I’m really glad to see it scattered around the web now helping other people. I can’t really claim to be able to support well it as I haven’t used it in YEARS myself.. but I may soon use it again as I recently wrote myself a fancy check balancing spreadsheet. This would integrate well with that… so you might see some more OFX related code from me. But this time it will be in perl with a Gtk front-end 🙂
circuit_breaker says
By the way, guys, you do NOT need to enclose the arguments to ofx-ba.py with [ ]’s. I’m not sure why I wrote it that way, too long ago!
Michael says
I’ve been using this for some time, and it works pretty good.
Just curious, is there any encription going on for these requests to the financial groups?
What’s the chance that some web skimmer won’t find these things and get access to our passwords, etc?
Any ideas out there?
Bobby says
Michael: Yes, the connection occurs via a secure, encrypted (HTTPS) connection. You may be interested in the modified scripts I put together too. I started with the stuff posted here, but modified quite a bit and wrapped the whole thing with a “user configuration” shell. The primary reason I headed down that path was to allow encryption of locally stored account info, including user-names and passwords, but I extended the effort a bit. You can read more @ http://sites.google.com/site/pocketsense/home/msmoneyfixp1 .
Michael says
Bobby, thanks for the update. I feel safer.
I did try Quicken 2010 Deluxe, and boy is it ‘clunky’! Not a smooth GUI like Money.
Anyway, while trying Quicken, I noticed that I could get Oppenhiemer accounts.
Does anyboy out there access Oppenheimer with the OFX downloads? If so, what is their URL and FID codes, etc.
Thanks, Michael
ameridan says
Try these:
“fiorg” = “Oppenheimer”
“fid” = “125”
“url” = “https://ofx.opco.com/eftxweb/access.ofx”
ameridan says
I’ve found (and published) a very populated file that Moneydance keeps up-to-date with FI settings that don’t seem to be available on the GnuCash site, for those trying to locate their settings for the OFX scripts.
http://microsoftmoneyoffline.wordpress.com/moneydance-ofx-settings/
ENJOY!
ameridan says
For those that might be interested, I’ve come up with a method to run the OFX scripts (Bobby’s PocketSense in particular) from with the Money program to replace the “Update Online Information” function that we currently use. Although a shortcut in the Toolbar would have been my preferred method, this webpage approach doesn’t require any hacking into the program.
Read more here:
http://microsoftmoneyoffline.wordpress.com/2010/02/25/webpage-add-in-run-pocketsense-from-within-the-money-program/
Ryan P. says
This is such a great find! Thanks to TFB and everyone else for the good information!
I have one problem…I bought MS Money in 2008, and it had a key good for I think 2 years. So now it’s expired, and it won’t let me enter new transactions. I still have the exe file I downloaded when I bought it, and that will let me run it in trial mode on a new computer for 60 days, so I’ve just been hopping through old computers in my house every 60 days to keep Money going. Does anybody have any suggestings for getting a new license to keep Money running (or some other way around this)?
Thanks!
Brian R. says
Hello. Thanks for publishing these instructions and these scripts. I have been fretting about losing the transaction downloads and cash flow forecast for several months now.
One note regarding USAA. I have gotten this to work. But USAA users should be aware that you must use your USAA member number as the User ID and the 4-digit PIN as the password (not the UserID and password you use to logon to their web-site which are completely different).
Thanks again. I’m very happy that I’ll be able to run MS Money (hopefully) for years to come. Quicken just doesn’t cut it for me.
Brian
Brian R. says
Also, I forgot to note that I has to put two leading zeroes in front of my account number in the script to get it to work. For instance, if my account number was 123456789, I had to put 00123456789 in the script.
Brian
Brian R. says
I can’t figure out how to edit so I’m posting a correction. In my previous post, I indicated that you needed to preface your checking and/or savings account number with two leading zeroes for USAA. This is correct. However, my example was incorrect. A correct example would be:
Account Number: 12345678
Needs to be formatted as: 0012345678
Effectively, they require 10-digit account numbers. Sorry for the mistake.
Brian
Brian R. says
After a lot of trial and error, I have determined that you can also download your USAA home equity line by using the following settings:
ACCTTYPE in your bat file must be CREDITLINE (rather than CHECKING or SAVINGS)
Account number must be preceded by leading zeroes to create a 14-digit account number. For example, account number 12345678 would be formatted as 00000012345678.
Brian
JM says
Thanks for the scripts. I have implemented your scripts for three brokers: Fidelity, Optionsxpress & Schwab. Fidelity and Schwab work fine with MS Money Plus. Optionsxpress is proving to be a problem. I get MS Money error stating that the file to import contains invalid data or is corrupt when trying to download an OFX file using your scripts. (I also cannot get OX to download via the automatic process within MS Money)….any suggestions about OFX problems with OX? Thanks.
Harry Sit says
JM – If Money proper couldn’t download automatically from OptionsExpress, I doubt you can make the script do it. Download manually after logging in to OptionsExpress (if it offers downloads), or just enter them by hand.
alw says
Is anybody else having a problem with Chase? My batch file calls several institutions and has been working find since last October. Now it works for all institutions except for Chase.
Now get this error on all my Chase accounts (both credit and deposit).
Traceback (most recent call last):
File “ofx.py”, line 220, in
client.doQuery(query, argv[1]+dtnow+”.ofx”)
File “ofx.py”, line 181, in doQuery
“Accept”: “*/*, application/x-ofx”
File “C:\Python26\lib\httplib.py”, line 898, in request
self._send_request(method, url, body, headers)
File “C:\Python26\lib\httplib.py”, line 935, in _send_request
self.endheaders()
File “C:\Python26\lib\httplib.py”, line 892, in endheaders
self._send_output()
File “C:\Python26\lib\httplib.py”, line 764, in _send_output
self.send(msg)
File “C:\Python26\lib\httplib.py”, line 723, in send
self.connect()
File “C:\Python26\lib\httplib.py”, line 1100, in connect
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
File “C:\Python26\lib\ssl.py”, line 350, in wrap_socket
suppress_ragged_eofs=suppress_ragged_eofs)
File “C:\Python26\lib\ssl.py”, line 118, in __init__
self.do_handshake()
File “C:\Python26\lib\ssl.py”, line 293, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno 8] _ssl.c:480: EOF occurred in violation of protocol
alw says
Sorry – hit enter too soon, but am also having trouble downloading directly into MS-Money 2007 from Chase site. Basically there is no error, it just doesn’t do anything. If I’m not signed into MS-Money I get a prompt upon download that Money will import the file on it’s next run, but that doesn’t happen.
Thanks in advance.
Harry Sit says
alw – Which URL are you using for Chase? Did you see they changed it some time last year?
alw says
Thank you so much for the heads-up about the URL change TFB. I was not aware of the URL change and since the direct downloads continued to work for me in MS-Money until just recently I hadn’t been relying on the scripts.
Thanks again for a terrific site too. I came because of the MS-Money issue and have stayed because of the excellent general content.
Cheers.
ED says
My banks don’t have an FID or an URL in the xml files, it seems most banks in Canada don’t have the direct OFX connection. Instead I built Python scripts with Mechanize to emulate web browser clicks to get the ofx files from the bank website. It works really well.
SD says
Has anyone else had issues with American Express credit card downloads not working? They were working for me for quite a while, but it broken within the last three months (with no changes on my part).
I’m now getting this message:
2000
ERROR
[ofx.unsupportedClientApplication]
Client application or version is not supported by this server.
In my script, I have the app version and ID configured with these values. Perhaps someone else has an idea of which client application/version is liked better by AMEX?
config[“appid”] = “QWIN”
config[“appver”] = “1800”
motif1 says
Sorry to interrupt the very useful programming discussion. Just to say this is a great post, thanks for the work. I was looking for a Money replacement also. I first found that Quicken won’t accept my bank (in France) OFX files. I downloaded the OFX locally and tried to import it into Quicken, but no dice. The googled reason for that is apparently that banks have to not only provide OFX data, but also they have to PAY INTUIT (!!) to authorize data from that bank, even by download/import as I tried. As evil as it sounds, it nevertheless seems plausible, because I could not get the OFX files to import into Quicken.
Then tried Moneydance, yes it did import the OFX files but the program seems not quite there yet in terms of the functionalities that I am used to from Money.
Finally, I downloaded the Sunset version of Money to try, I wanted to make sure it was OK with at least local importing of OFX files. Yes, the same OFX files from the bank “banned” by Quicken are imported with no problem by Money.
So now I figure, between Money Sunset version and download/importing OFX, at least until I can get your py scripts set up, at least one problem in my life is solved. This is great, using Money like this should now be good for another 5 years, until a new bank data format or several more win OS generations finally break everything…
SD says
OK—I fixed my American Express download problem. Google tells me, from a different forum, that AMEX just changed their download URL. I was able to get it working again by configuring the script to point at:
csingley says
Thought you guys might be interested in this:
http://github.com/csingley/pyofx/tree/master/ofx/
Updated python OFX download script, including a basic QT GUI.
keg says
Has anyone gotten these scripts to work with Edward Jones? Mine fail with an OFX 2003 error.
Tom says
My Edward Jones is also failing. Without an account number, the login is successful and the account numbers are returned. But when I use one of the account numbers, the return has the 2003.
Ouroboros says
This is great info. I’ve tried both these and the hleOfxQuotes Java method.
My main problem is I have loads of brokerage accounts with different securities. I want one OFX for all of them, but Money only seems to like to import per account, which is quite time consuming – even if you are reloading from one large OFX.
Anyone tinkered with a direct Money DB update method yet?
Ouroboros says
Also,
If anyone fancies hosting a replacement to the MS online services, serving up the same data (we could change our hosts files to point to the new place)
I would very happily subscribe!
Christian says
Thankyou for these scripts. I’ve been using them for a year. Last week my Scottrade accounts stopped downloading their positions. I still get the account balance and the cash balance, just no stock positions. This happened to all 5 accounts at the same time last week.
Is anyone else seeing or has anyone solved this problem?
Thank you,
Christian
Christian says
After reaching out to Scottrade tech support, the downloads mysteriously started working again.
Thanks,
Christian
Andrew says
Well, like Dave above, I’ve been successfully using Money D&B 2003, happily downloading prices from Microsoft – until Dec. 30, 2010. Fortunately, I found these helpful scripts (which run under Python 2.6.x, but not Python 3.1.x, as it took me awhile to figure out).
Mostly, I am just trying to update my equity prices from yahoo, using the automated script. Everything works and it likes up to my Investment Watch account with the Broker “broker.com” and account number “123456789”, as listed in the OFX file that the script produces.
I still cannot get the OFX file to actually update the prices as of the last trade date (or any other date). It just doesn’t update the holdings in my Investment Watch account in Money, which lists all my equities dated 1/1/2010 with zero shares added. I tried changing the added shares to 1, instead of zero, but that didn’t work either. I tried manually updating one of the positions and reimporting the OFX file – didn’t work. No matter what I have done, the OFX file imports and associates with the Investment Watch account, but does not update the prices as of 12/31/10.
Any suggestions?
Andrew says
PS All update entries in the OFX file show 20101231160200.000[-5:EST]
or something very close to the time of the last trading day end, which should if interpreted properly by Money be updated as of 12/13/10.
Andrew says
PPS – Oh, and Money is matching up the securities with the imported data, just not posting the updated prices, which cannot be seen in portfolio view or on the price history. Still trying to figure it out.
Harry Sit says
@Andrew – Have you tried the Money sunset edition? There is one for home and business as well. People reported the quote script works out of the box with newer versions including the Plus and the Sunset editions.
Andrew says
@TFB – No, I only have Money 2003 Deluxe and Business edition. It worked fine – until now.
The quote script is working fine so far, but Money is so far not recognizing the date and updating the prices, even thought the OFX file is being imported.
ourobrs says
Re Last Updated and Last Trade.
‘Last Trade’ will be populated with the last time you did something like buy or sell. ‘Last Updated’ cannot be activated by the OFX scripts – it could only be previously activated by the Microsoft online download.
I missed this at first (as I wanted it to work to see that the quotes were always updated). However now I just use a ‘TR Week’ field in portfolio view. So long as that is moving, I know the stocks and funds are getting updated. a 0% there means something is wrong.
Matt says
I have 8 accounts in my python script, 2 with Wachovia and 6 with Vanguard. If I use the test function and test individually they all work correctly and import into MS Money Sunset. However, If I try to initiate the script it runs but nothing gets imported. Everything looks correct.
Any suggestions?
Andrew says
That sounds related to the problem I am having, “ourobrs”, but I don’t understand what using a ‘TR Week’ filed in portfolio view means. There is no such view or field in Portfolio from what I can tell, and I don’t understand how that helps if the quotes are not actually updated and seen in the returns view.
Matt, did you select File, Import, and choose the OFX files that the script creates?
Matt says
No, I didn’t. My problem was a misunderstanding in how to use the Sites.dat file. I set up a separate entry for every account at an institution, instead of just the one that is needed. I rebuilt my system onto a new pc and discovered this error when I went through the procedure to install the python scrips and pocketsense. It now works correctly with two accounts at my bank and 6 accounts at my mutual fund.
Sorry I can’t be of help to your problem.
Jason says
This is great. I’m preparing for Money to go offline this month and this will save me a lot of time every day. I’ve got it to work with every account I have in Money, but I can’t get ING Direct to work. I get a successful log on and it downloads an OFX file which appears to be good (I see the latest transactions, etc), but when Money runs to import the file it says that it’s not a valid file. Below is what I have in the script and I’m calling it with:
python ofx-ba-tfb-auto.py ING ‘loginname’ ‘SpecialWebPassword’ ‘Acct#’ SAVINGS
“ING”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “35489”,
“fiorg”: “ING DIRECT”,
“url”: “https://ofx.ingdirect.com/OFX/ofx.html”,
“bankid”: “031176110”,
},
Matt says
Suggestion:
Have you set the appid and app version?
“appid” = “QWIN”
“appver”= “1800″
for the specific ING account. You could also contact ING to see what Quicken versions they do support.
Jason says
Yes, I have it set to:
“appid” = “QWIN”
“appver”= “1800″
I’ll try to find out what works for ING.
Hung Le says
Regarding the malformed ING download. The response from ING has a missing required field DTEND in BANKTRANLIST
ING has:
BANKTRANLIST
DTSTART …
STMTTRN
Should be
BANKTRANLIST
DTSTART …
DTEND …
STMTTRN
Jason says
Is that caused by something I’m doing or is it an ING issue? If I download the data directly from their website it works fine.
Hung Le says
ING issue. I’ve send customer support a note on that. Suggest you do the same. Best,
Richard says
In response to earlier comment: Dodge and Cox seems to work OK (as of today, anyway) using data from the online banking directory given in the article. D&C put a bunch of linefeeds in there that others generally don’t, but otherwise it is OK.
The account uses a peculiar xxx,xxxxxxxx format. When I missed off the leading xxx, part, no data came back other than the signon acknowledgement.
Richard says
Dodge and Cox correction: The address it used came from one of the other sources above, as follows…
“https://ofx3.financialtrans.com/tf/OFXServer?tx=OFXController&cz=702110804131918&cl=50314030604”,
and an fid of 8935,
joel brandt says
How complicated are the fixes posted to convert Yahoo quotes into Money? I have Yahoo set up so that its captures all of my position daily, but I have over 50 positions at the moment and the thought that I will need to manually impute prices into Money is depressing (Today is the end!). I’m think this will add an extra hour of work for my weekly Saturday morning updates.
Reviewing these earlier posts makes me think the process described is complicated (I’m not a geek).
Given that today is the absolute end, can the moderator take the time to SLOWLY describe the solution?
tyler says
tfb, this type of script is exactly what i’ve been looking for! however, i’m having some trouble getting connected to my texans credit union checking account.
i’ve followed the steps above and modified the raw ofx-ba.py file with:
“texans”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “008PU”,
“fiorg”: “TexansCU”,
“url”: “https://www.netit.financial-net.com/ofx”,
“bankid”: “311987786”, # bank routing #
}
all of this information was retrieved from the fidata xml zip file above.
when i go to run the script using:
ofx-ba.py texans username account# CHECKING
I type in my password at the prompt, and then after 1 second I get an output file which contains the following:
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:35e3679544e04c4c9cc1f06f31c0c972
15500
ERROR
20110202194546
ENG
TexansCU
008PU
fe99bae2bfd94191906d700c4d6f8fe2
15500
ERROR
4
does anyone have any ideas of what may be going wrong? i read the OFX spec from microsoft which says the 15500 error is a “signon invalid” error.
thanks for your help!
Peter says
First of all, a huge Thank You to TFB for putting together this website and the OFX scripts. I have been using MS Money 2002 since, well, 2002, and I cannot face the prospect of changing to another personal finance program. None of the ones available today seems to have the combination of familiarity, ease of use, and feature set that Money has.
I’ve been following this thread for months and did get as far as installing Python, downloading the scripts, running them and getting (it seems) price quotes into a “Dummy” account in Money which contains all the stock and mutual fund positions that I need daily price quotes on.
The one aspect where it looks like it will not work is for options quotes, because the new option quote symbols are longer than what Money allows for the symbol of an investment. I’ve been updating my option quotes manually for a while now, ever since the new symbols came into use, so that does not bother me too much.
But the point of my post is that, 3 days into February, I am still able to download price quotes for stocks and mutual funds, and even foreign currencies (/EURUS) in Money 2002! Does anyone else have a similar experience, i.e., quotes still working? Could it be thatMicrosoft has reconsidered pulling the plug on the price quotes service, or more likely, perhaps it is an oversight and they will disappear soon enough!
Great thread and discussion, thanks everybody!
Matt says
Pete,
Try MS Money Sunset Edition. It’s Free!
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=60302e1e-207e-4710-ac80-d19c22e47488
joel brandt says
I’ve noticed that quotes continue to be downloaded as well. Lets hope it continues.
Amol says
Thanks for posting all the scripts.
Having used several disappointing personal finance software over years, and considering all the time (and money) it needs to maintain them ….
I’m considering writing similar scripts to download transactions in spread sheet formats: excel and CSV. Most financial institutions which offer quicken support, also offer download of transactions in spreadsheet formats. A feature to auto assign categories can be implemented as well.
The best part is, you’re not locked into using any of these finance softwares which want you to upgrade every few years. You can use any Spreadsheet app like Excel, OpenOffice etc, which you use anyway.
Ann says
I thought I was doing fine using the OFX scripts, when suddenly my Wells Fargo accounts stopped working (3 other banks I use still seem to be OK). Did WF completely stop all non-Quicken OFX access? Are there any workarounds?
Harry Sit says
@Ann – Wells Fargo sent a letter to customers some time ago saying they would stop supporting Money downloads. Chase did too.
Robert L. Winter says
First, I’m pretty sure Intuit’s QFX (quicken) and QBO (quickbooks) download files are in fact OFX format files. I feed them to the script below successfully.
Second, Wesabe open sourced a python script that ‘fixes’ OFX files for various brokenness – it updates OFX 1.x version files to 2.X for example.
Here’s the link: https://github.com/wesabe/fixofx
Barry says
I hope someone can help me. In preparation for losing online services I set up Python scripts and tested them several months ago and I was able to import all of my accounts. Now when I try to import into Money I get an import dialog box for each account as expected, After the last account is imported my Money program just stops working and a windows dialog box pops up saying that there was a problem and the program stopped working. Then I am dead in the water. When I close out of Money and then reopen it the program stops working with the same message that the program has stopped working. If I uninstall and reinstall Money there are no problems. But every time I import after running the Python scripts after the last import the same problem – Money stops working. This has to be a problem with my computer or else other people would have this problem. So does anyone have any idea why after importing my last account Money stops working? I am using the Pocket Sense scripts but I do not see a recent discussion area there.
Harry Sit says
@Barry – I had this happen to me once. It was caused by bad data downloaded from Vanguard during a weekend. The solution was deleting temp files, as described in Method 5 in this Microsoft knowledge base article.
http://support.microsoft.com/kb/182608
After I deleted the temp files. Money launched OK. I then removed Vanguard accounts from the list of accounts I download.
You will have to find out which financial institution is giving you bad data and remove it. Otherwise you will have this happen again when it gives you bad data again.
Barry says
@TFB Thanks for the quick response. I will look into it. Vanguard is one of my accounts so I will start with that. If it is bad data from an account then do I have to permanently remove that account from the script and update manually of is this just a temporary problem that will resolve itself?
Also I have been back dating the system date and updating that way since my online services expired in 2009, still works but I’d like to start using the Python method., When I download with Money then I don’t have a problem so if it is bad data why is it happening with the Python scripts but not happening when I use Money online services?
Barry says
@TFB – I deleted the temp files and now Money starts so thank you for your help. I have not verified it yet but Vanguard is the last account on my import list so I suspect that is the problem account.
Still looking for answers on whether I need to permanently remove Vanguard or if it is just a one time issue for the bad data that may have been sent. Also if there was bad data why does it affect Money with the Python script but not when I use Money itself to download.
Harry Sit says
@Barry – I don’t know the answers. Because I don’t have many transactions in my Vanguard accounts anyway, I didn’t put them back in after I removed them. Now that you know how to fix it, you can experiment and see if it’s only temporary. Maybe they only have this problem during some weekends when they do maintenance. I don’t know how Money does it. Maybe Microsoft has additional validation checks and massages the data if it sees problems.
It’ll be interesting to see what’s wrong in the data though. If you look at the Vanguard ofx file and compare it with others, maybe you can see which part isn’t right.
If I get some time, I’ll see if I can link the script to the Wesabe “fix ofx” script Robert posted in comment #188. Hope that will help with some of these bad data problems.
Barry says
@TFB thanks for taking the time to reply. Now that I know I can just delete those temp files if it happens again I will wait a few days before trying to download any Vanguard data. If Vanguard continues to be a problem then I’ll have to permanently remove it and download from the Vanguard web site instead because that does not cause a problem either, it is only the python download that is causing a problem.
Jason says
Has anyone started having problems with the quotes.py piece? It worked fine for me for several weeks, but then suddenly this week Money starts telling me that the data is bad. I don’t mind uploading the ofx file if it will help since it has nothing but stock quotes in it if anyone wants to take a look.
Harry Sit says
@Jason – Yahoo! broke it. I fixed it. See comments in the quotes.py post.
Joanne Lennstrom says
First off – thank-you so much for the python script to update closing stock and mutual fund prices into MS Money.
The script works great!
One part of the MS Money portfolio that I miss is the daily change in stock prices from the previous day, and the calculation of the change in value for my investments. The “Change” column just has “unch”.
Can that ability be written into the script? Or is that a msft calc function that won’t work when the price source is “Online” instead of “Update” ?
Jo L.
Joanne Lennstrom says
OOps Previous post should have read:
Or is that a msft calc function that works only when the price source is “Online” instead of “Update” , as appears in the manual ” update price” window?
Daryl Reece says
First of all, thanks for putting all this together. It saved me lots of time and frustration, but I still have a little an issue that is stumping me. I can’t get Vanguard to download. Can someone who has it working tell me what FIORG, FID and URL you are using? I’ve tried all the permutations of
fiorg: vanguard.com
fid: 1358 and 5641
url:
and
I either get a blank OFX file or one that tells me “The page you’re trying to reach is currently unavailable.”
ameridan says
On my Blog http://microsoftmoneyoffline.wordpress.com/2010/10/06/cal-learners-review-fidelity-401k-citi-card-and-vanguard-account-info/ , someone has reported working settings for Vanguard for PocketSense as follows:
If you are able to change the interval in TFBs script, that may resolve your issue.
Mark says
I also found what the January 30, 2010 posts show. For scottrade the fidata ORG and broker ID have to be different. The c230 reply didn’t quite seem to address that fact. fiorg has to be “Scottrade” while the broker ID that is sent needs to be “www.scottrade.com”. Trying the same value for both (tried “Scottrade”, “scottsave.com”, “scottrade”, “www.scottrade.com”) would either give a 2000 error (The server does not support the INVSTMTMSGSRQV1 request) or a 2003 error (account not found).
hleofxquotes says
Re Vanguard – comment #200 from ‘ameridan’, I can confirm that those OFX settings are working for me.
One of the reasons (there might be others), that you want a fairly large-range mininterval value is that you need to make sure that there is at least ONE transaction occurred during the download period. Otherwise, Vanguard will generate a OFX response that MM will choke one and cause subsequent MM starts to fail. I believe (not 100%) that the root cause is that MM was expecting a <:SECLIST> tag but it did not see one.
Vanguard seems to behave better when talking in OFX v2. Same scenario, the OFX v2 response does not appear to crash MM.
hleofxquotes says
Re: Peter
Regarding ‘options’:
There is support for “options” (symbols as defined by Yahoo) in the current build of hleofxquotes if you like to give it a try.
https://code.google.com/p/hle-ofx-quotes/
Mark says
Here is my fix for Scottrade. It allows and optional “brokerid” tag in the sites table.
Change this line in ofx-ba-tfb.py (probably similar change to the other scripts):
query = client.invstQuery(sites[argv[1]][“fiorg”], sys.argv[3], dtstart)
to this:
brokerid = sites[argv[1]][“fiorg”];
if sites[argv[1]].has_key(“brokerid”):
brokerid = sites[argv[1]][“brokerid”];
query = client.invstQuery(brokerid, sys.argv[3], dtstart)
So now Scottrade works for me with:
“scottrade”: {
“caps”: [ “SIGNON”, “INVSTMT” ],
“fiorg”: “Scottrade”,
“brokerid”: “www.scottrade.com”,
“url”: “https://ofxstl.scottsave.com”,
},
Mark says
Note that in my previous comment, you need to indent this line:
brokerid = sites[argv[1]][“brokerid”];
(the indent seems to have been stripped with the comment submission).
joel brandt says
Although iy appears that Money is still downloading prices every day (unexpected), I’ve notived that the “new” Microsoft Money site no longer containsn a feature allowing me to compare funds (AKA Wizzard). Has anyone fiqured it out? I found that i can do a limited comarison of fundfs via the Vanguard and Fidelity sites.
NC says
TFB – thanks a bunch for posting the script and how-to. It certainly saved me the from doing the work! 🙂 Since you’ve been helping so many people, maybe you want to post what I found:
Capital One online savings accounts allow OFX downloads. However, although named “savings” account, it’s actually a money market account. And OFX requires it be treated as such. The good news? After first editing your script to make it work (I found out that your version actually works correctly out of the box. (Nice work), For anyone having a money market account, just add your Capital one account using the “caps”: [ “SIGNON”, “BASTMT” ], “ setting as such:
“Cap1MM”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “1001”, # Money Market Statement
“fiorg”: “Hibernia”,
“url”: “https://onlinebanking.capitalone.com/ofx/process.ofx”,
“bankid”: “051405515”, # bank routing #
},
But when you call the script, use “MONEYMRKT” instead of “SAVINGS” or “CHECKING” when you call the script.
Thanks again!
NC
Jeff says
As of yesterday evening, after spending the last 2 days cleaning up my 2010 money records, I can not access money at all. The windows live ID is blocking my enterance claiming that my email or password is wrong, but I can still access other MSN accounts with the same live ID. It will not let me sign-in to money direct either. Any ideas how I can get on and recover my data?
Thx,
Jeff
ameridan says
See if the pale yellow note on my Blog at http://microsoftmoneyoffline.wordpress.com/ helps you out.
greg schwendinger says
the scripts hosted on jongsma.org seem to have been removed??
Harry Sit says
@greg schwendinger – Yes, it looks like it. Since you will have to modify them anyway, just download the ones I’m hosting. I will edit the post to replace the dead links.
greg schwendinger says
If anyone has a current working example for a citibank or ING checking or savings account I’d like to see it. I am trying TFB’s basic non-auto script but I get an error back. my command line is ‘ofx-ba-tfb.py citibank/ing CHECKING/SAVINGS’, and here are my python records (and below is the error output received)
“citibank”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “2101”,
“fiorg”: “ISC”,
“url”: “https://secureofx2.bankhost.com/citi/cgi-forte/ofx_rt?servicename=ofx_rt&pagename=ofx”,
“bankid”: “271070801”, # bank routing #
},
“ing”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “35489”,
“fiorg”: “ING DIRECT”,
“url”: “https://ofx.ingdirect.com/OFX/ofx.html”,
“bankid”: “031176110”, # bank routing #
},
.ofx output from ING: (citibank actually give 0 bytes back)
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:cf66297e3cf64d78bc9f049b5d743eac
15500ERROR20110408041146.945ENG20110408041146.945ING DIRECT35489
John says
First, thanks TFB for all your great work.
The following is for USAA members.
I had lots of trouble setting up my USAA accounts in Setup.py. Here’s what worked for me.
“Account password” for USAA is the four number pin used to sign into the USAA website.
“User name” for me was my USAA number with two leading zeros. My USAA number is 6 numbers long, so an example would be “00123456”.
“Account #” for my USAA bank accounts needed three leading zeros, for a total of ten numbers. Example “0001234567”
“Account #” for my USAA credit card was the 16 number credit card number.
“Account #” for my USAA investment accounts was the hardest to find. It is an account number that is not on any of my USAA statements. I got it by logging into the USAA website and finding “Web Connect”. On that page, there is the option to download Quicken or Money files. Download either of these, and open the file with a text editor. Find the account numbers for your USAA investment accounts following the term “” in that file.
Thanks also to everyone who has contributed here.
John
John says
My above comment didn’t paste well. Here is the second last sentence, again.
Find the account numbers for your USAA investment accounts following the term “ACCTID” in that file.
John
Francesco says
Was anybody successful in downloading OFX from Thinkorswim (via Penson resources) ? With ofx-ba-tfb.py I keep getting the error “Server error occured. Received HttpStatusCode of 400”.
Nicole Morris says
I’m hoping for some advice. I’ve been a loyal MS Money 2003 user. My home PC just died, I have all of my backup information, but no longer have the SW. I primarily use this software for check reconcilation and bill scheduling. Any thoughts on where I should move to next? I’d like to be able to import my MS Money historical data. I’m also interested in the possibility of using an app so I can access on my ipad.
Thank you!!
Harry Sit says
@Nicole Morris – Download the Money Plus Sunset Deluxe from Microsoft. It’ll read your Money 2003 file.
Ryan P. says
Thanks a lot, TFB–this is an excellent page.
@Francesco–any luck? I am getting a similar error: “urllib2.HTTPError: HTTP Error 400: Bad Request” when I try to connect to USAA for a checking account (and I’ve followed all the USAA suggestions given above). Thanks for any input/suggestions.
Also, anybody know of an active Money forum for those of us trying to keep it alive?
lull says
For the past two days MS Money does not give the total change in value for individual mutual funds, but it does for my individual stocks
TomB says
Yes, it seems that mutual fund prices are not updating since 10-Jun-2011. I’m using Money 2004. The updated prices are being imported into Money, but they’re not making it into the price history.
Jason says
I just opened 2 Bank of America accounts. I am using the following command (with LoginName, Password & Acct# replaced with my real info).
python ofx-ba-tfb-auto.py BOA LoginName Password Acct# CHECKING
My py file looks like this (with the routing # being my real routing # not just 0’s)
“BOA”: {
“caps”: [ “SIGNON”, “BASTMT” ],
“fid”: “6812”,
“fiorg”: “HAN”,
“url”: “https://ofx.bankofamerica.com/cgi-forte/fortecgi?servicename=ofx_2-3&pagename=ofx”,
“bankid”: “000000000” #bank routing #
}
The ofx file that gets download has this error message in it: “The product which you are using is not enabled. Please call customer service at 1.800.933.6262 for assistance.”. Before I call I wanted to check to see if you guys can see something that I’m doing wrong.
Harry Sit says
@TomB – Although the Change column doesn’t show the changes from the previous day, the prices are updated and they are getting into the price history.
@Jason – Last I heard Bank of America charges $9.95/month for getting data into Quicken directly, which this script is emulating. It’s probably better to just log in to their web site and download from there.
Jason says
@TFB – Thanks for the BOA info. I dug deeper and found where they offer that for a fee. I’ll be skipping that for now and will use one of the online download options. They don’t offer a Money format download, but the Quicken format seemed to work, other than it didn’t update the ‘Bank Balance’ field.
@Hung Le (and any other ING users) – I haven’t heard back from ING as to whether they’re going to correct this issue or not. Have you found a workaround?
TomB says
@TFB – Not for me…as lull also reports, since 10-Jun, whether I use the ‘Update Online Quotes’ poke point or run your python program, only the stock prices update, not the fund prices.
TomB
Harry Sit says
@TomB – I’m only using the python script. See my screenshots. Note I have one stock and two mutual funds in the test account. The quotes.py script updates all prices, market values, and the Gain column. I removed the Change column because it always says unch. Do you have matching mutual fund tickers in the right place in quotes.py? Are your mutual funds set up as mutual funds under Investment Details in Money?
TomB says
@TFB – Mutual funds are defined as mutual funds, not sure what you mean by ‘matching mutual fund tickers…’. I replaced the given ticker symbols w/the specific symbols I’m interested in. When I run your script, the result is a ‘quotes.ofx’ file with current pricing content. Also Money imports the file and brings me to a page labelled ‘Statements to read’. If I pick the proper statement, I get a list of the securities specified in the script with current prices but zero quantities.
However, the price history(for the mutual funds) doesn’t reflect the latest price. The last ‘online’ price remains 10-Jun-2011. The only way I can get a current price into the price history is to manual enter it via the ‘update prices’ dialog.
I’m using Money 2004; do you think this is specific to that version? Can I get one of the later ‘sunset’ versions?
TomB
Harry Sit says
@TomB – Matching just means the tickers you have in Money are the same as the tickers in the script. First try to change the quantity in the script from 0 to 1 and see it helps. Find this line (line 130 in my sample):
_field(“UNITS”, “0”),
Change the 0 to 1. If that still doesn’t do it, you can get the Money sunset edition from Microsoft. You should keep a copy of the sunset edition anyway in case you have problem with reinstalling and activating your Money 2004 when you switch to a different machine in the future.
TomB says
@TFB – Thanks for trying. Changing 0 to 1 did not seem to change anything. I’m abandoning Money 2004 in favor of the sunset edition. The script seems to work there, although I do wonder why it only works once/day which I believe you mentioned somewhere.
Anyway it worked yesterday and I’ll run it again today after closing. BTW the import process forced me to direct the import to a specific Money acct. I created a dummy acct w/o any investments for this purpose.
Regards…
TomB says
@TFB – This is another problem entirely. I own shares of some stocks bearing 5 char ticker symbols ending in ‘Y’. These cause your script to croak; I suspect the ‘Y’ results in a different response than the program is expecting. Try “RHHBY” to see what I mean.
Harry Sit says
@TomB – You have to use the tickers as Yahoo has them. RHHBY is RHHBY.PK in Yahoo.
Grandpa says
Hi
First up thanks for this site and work you have done – I’ve managed to get loads of stuff done based on the info here.
Now my question – My investment company provides the transactions as a csv file and I can process the buy and sell into OFX however I can’t get the Dividends to work in OFX.
Below is a sample of the OFX I tried to get money (sunset version) to open but it fails with “invalid format”
From the OFX document I think it’s correct ie the . If I comment out the whole block money does not complain so it’s somehting to do with that I think..
Anyway any help would be really appreciated
Many Thanks
————->
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
0
INFO
20050831165324.000[-8:PST]
ENG
0
0
INFO
20050831165324.000[-8:PST]
CAD
Broker Site
1256734
20050801
20050831
40025098199608029240
20050802101010
MONEY MARKET FUND
CEM662
CASH
DIV
666
CEM662
ACUITY
MONEY MARKET FUND
SWMXX
OPENEND
ameridan says
See if this helps you out…
First of all, using your editor you have to replace < with another character like { and > with } to get everything to display properly.
Second, your year is 2005?, unless this was just an intentional sample.
Here is a working file that actually lets Money compute the dividend based on the balance already in Money (the difference).
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:7dbc4a48bfab486aa2caa6979524949a
{OFX}
{SIGNONMSGSRSV1}
{SONRS}
{STATUS}
{CODE}0
{SEVERITY}INFO
{MESSAGE}SUCCESS
{/STATUS}
{DTSERVER}20101224095011.296[-6:CST]
{LANGUAGE}ENG
{FI}
{ORG}valic.com
{FID}77019
{/FI}
{/SONRS}
{/SIGNONMSGSRSV1}
{INVSTMTMSGSRSV1}
{INVSTMTTRNRS}
{TRNUID}xxxxxxxxxxxxxxxxx
{STATUS}
{CODE}0
{SEVERITY}INFO
{MESSAGE}SUCCESS
{/STATUS}
{CLTCOOKIE}4
{INVSTMTRS}
{DTASOF}20101223170000[-6:CST]
{CURDEF}USD
{INVACCTFROM}
{BROKERID}valic.com
{ACCTID}xxxxxxxxx
{/INVACCTFROM}
{INVPOSLIST}
{POSOTHER}
{INVPOS}
{SECID}
{UNIQUEID}FB001
{UNIQUEIDTYPE}NON-CUSIP
{/SECID}
{HELDINACCT}CASH
{POSTYPE}LONG
{UNITS}200.41
{UNITPRICE}1
{MKTVAL}200.41
{DTPRICEASOF}20101223120000
{/INVPOS}
{/POSOTHER}
{/INVPOSLIST}
{/INVSTMTRS}
{/INVSTMTTRNRS}
{/INVSTMTMSGSRSV1}
{SECLISTMSGSRSV1}
{SECLIST}
{OTHERINFO}
{SECINFO}
{SECID}
{UNIQUEID}FB001
{UNIQUEIDTYPE}NON-CUSIP
{/SECID}
{SECNAME}Fixed Account Plus FB001
{/SECINFO}
{/OTHERINFO}
{/SECLIST}
{/SECLISTMSGSRSV1}
{/OFX}
Grandpa says
Thanks ameridan
Something went wrong with the formatting on the post it removed a all the tags…I found out that I had the DTPRICEASOF in the wrong place. Once I fix that it worked fine.
I now have Dividends, Sell, Buy and update of prices all working. The one things I can’t get to work is the {REINVEST} – Money imports it ok but it does not create any transaction in the money register for that security. It does not even say that there any transactions to processes. Very odd as everything else works
Vijay says
First of all, thanks a millon for this website and the scripts. I have been looking for these ever since MS pulled the plug on me … I have been able to use these scripts to import my credit card statements without a hitch, but for investment accounts, this doesn’t seem to work. MS Money only manages to tell me how the positions have changed with respect to my local file, but does not import the buy/sell transactions that are apparently included in the downloaded OFX file.
In the past, I used to do this by downloading investment data into a QIF file and then importing them into Money by using “Recover Accounts…” instead of “Downloaded Statement …”. But, unfortunately, “Recover Accounts …” only seems to work with QIF files. So, I am not sure if I am missing something here. Since people here have been successfully using this method to import investment transactions, can someone please point me as to what I am doing wrong? I am sure I am missing something pretty basic … I am using MS Money Plus Deluxe with Fidelity Netbenefits. Thanks !
ameridan says
Vijay,
Here are the settings that work with PocketSense for Fidelity NetBenefits, so either translate them to TFB’s settings, or try out PocketSense. see my blog for more…
http://microsoftmoneyoffline.wordpress.com/2010/10/06/cal-learners-review-fidelity-401k-citi-card-and-vanguard-account-info/
Mark says
I have the same problem with Fidelity Netbenefits. I have a few other accounts, and I have had great luck with them, but I have yet to get Fidelity Netbenefits to work, I’ve been putting those transactions in manually. Like you, for me it just tells me the new positions. Ironically, I have normal Fidelity brokerage accounts as well, and those work fine. It’s just the 401k through Netbenefits that I cannot get working yet. The downloaded file looks like it might have the transactions in it, money is just not processing them.
G says
Anyone done the conversion from using this with Wachovia to Wells Fargo? They just converted NC last weekend and it’s been a while since I put all these together, so trying to shake the fog out on what settings I need to update. Thx
G says
My first attempt just updating the settings in the ofx-ba-auto file produced this error:
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:17b86c99197a4c0b826263bbd95e05d8
15500
ERROR
20111025011640
ENG
19700101000000
19700101000000
Wells Fargo
3001
5583b6cdf53f4e88aacf2071873966d7
15500
ERROR
4
Does the signon detail change in the bat file when I shift banks? i was able to use my old username and password after they did the wells conversion, so didn’t update any of that.
Vijay says
In ofx-ba-tfb-auto.py, shouldn’t the following line:
_field(“BANKID”,sites [argv[1]] [“bankid”]),
really be:
_field(“BANKID”, config[“bankid”]),
?
I am not sure why are referring to argv[] from within OFXClient. This is not a problem as it is, but will sneak up on you if ever decide to change the argument list order or contents (which was exactly what I was trying to do). Thanks.
RDT2 says
FYI, these couple modifications will change the script to use OFX 2.00 which is XML compliant. This has been tested successfully on vanguard and Fidelity Netbenefits. I tried to do version 2.11, however Vanguard does not seem to support it, so version 2.00 it is.
Change the header to:
def _header(self):
return join(“\r\n”,[ “<?xml version=\”1.0\” encoding=\”utf-8\” standalone=\”no\”?>”,
“<?OFX OFXHEADER=\”200\” VERSION=\”200\” SECURITY=\”NONE\” OLDFILEUID=\”NONE\” NEWFILEUID=\””+_genuuid()+”\”?>”,
“”])
And change the field tags to:
def _field(tag,value):
return “<“+tag+”>”+value+”</”+tag+”>”
Greg says
RDT2, I’m trying the script with these new modifications and it works fine (on accounts that also worked before). One account I still can’t get working is Vanguard. You say you’ve tested it on Vanguard–what settings are you using (fiorg, url, etc)? thanks.
Rich S. says
Can anyone tell me if these downloaded OFX files will work with Quicken (like 2009) once Quicken downloads “expire” after three years? Do I need to convert them to QFX files with the OFX to QFX converter that I found online?
Pardon me if this has already been answered.
Harry Sit says
@Rich S – No it won’t work for Quicken. In the main article, toward the end, I showed the error Quicken 2006 displayed when I tried to import the file. At that time, the download feature in Quicken 2006 already expired.
Vlado Nenov says
@TFB – I have got the quotes loading in Quicken 2009.
I saved the .OFX file generated by hleOfxQuotes java script (I assume it should work with your script as well) as .QFX and then made two changes:
1) Added after ENG and before
INTU.BID 04297
This is for TD Mutual Funds (Canada), so you need to load OFX from the bank to get the BID.
2) Added
BROKERID td.com
Harry Sit says
@Vlado Nenov – Quicken 2009 won’t sunset until April 27, 2012. Wait until after that date and see if your changes still work.
Vlado Nenov says
@TFB I have disabled the wireless when I did the test, so Quicken could not connect to Internet.
I see that the date of the update is 02/18/2012 even that the markets are closed and the last update price for the mutual funds is 02/17/2012. So, I think it should work even after April 27, 2012.
BTW above 1) Should be after ENG and before SONRS tags place un-closed tag INTU.BID
This blog does not allow entering xml tags, but it is easy enough to find the place in the OFX file.
Worst case I will use a simple script to get the mutual fund prices from TD and save in .csv format following the .qhs Quicken quotes format and then import in Quicken Portfolio using Import Prices.
BTW, I have migrated my data to MS Money and like it so far. I’ve got the hleOfxQuotes java script working with currencies and the Canadian Mutual funds, and import the quotes in MS Money works. However, I am a bit concerned to use a software that is not going to be developed and in 2-3 years I may have to migrate again.
Quicken 2011 and 2012 cost over $100 and the reviews are really bad, so I am not going to upgrade Quicken for now, but the freeware choices are not good for my needs. I tested KMyMoney and jGnash and the Investment Reporting is not good enough (no cost basis, etc.). MS Money is on par with Quicken.
Still undecided what to do.
Tom76017 says
I am desiring to track the value of my home as an asset. Zillow is providing an estimate and supports API and/or web-services calls. Is it possible to update the current scripts to support generation of an OFX file that can be imported into Money?
Michael says
I’ve been trying to figure out how to automatically download OFX data directly into a form I can put it into a database. I tried GNUCash as a start, but kept getting 400 errors with no response in the log file, and then I came here. To my delight no errors occurred when I ran ofx.py. But – when I look at the output file I don’t seen any useful data, so I am wondering what to do next. There are several fields, including my CC number so I know *something* is working (since I didn’t pass that information to the server), and what looks like a couple UIDs. Do I need to issue another query to get actual transaction data?
ameridan says
This is answered somewhere in the OLD questions, but it seems to me that you aren’t going quite far enough in adding accounts. If you have multiple accounts at one location, you need to set up each one individually (using the setup python script) even though they use the same brokerage / bank. If you provide all of the logon credentials without an account number (you said you hadn’t provided the credit card #), you will get an OFX file listing your accounts, as I think you are describing. Sounds like you didn’t follow the instructions all the way through 🙂
Michael says
Finally got through the old comments and you are right, it was a simple fix, I didn’t realize I needed the account number argument. 🙂
Chris says
Got an error on my ING Direct Bank accounts using Money 2000. After downloading a .ofx from the website and comparing, I was able to determine that Money needs a DTEND parameter for this to be successfully imported. I updated _bareq with the code _field(“DTEND”, dtnow), placed right after the DTSTART line. Now works like a champ!
Thanks for the great fix! This will be even better than before everything was sunsetted (assuming I can figure out why the Quotes part isn’t working for me).
Chris says
Anyone get this working for Sharebuilder? I set up my online access code, but i still get an error back in the .ofx file…
Matt says
I switched from a “bricks and mortar” bank to ally bank and so far like the service from them. Except, ally does’nt allow direct OFX transactions but provides for downloads of account statements into MS Money, Quicken or CSV format. The MS Money is an OFX transaction which does go into MS Money Sunset Edition except for one problem. The payee information is in the memo field as a double entry:
Beginning of OFX download:
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
Individual Transaction:
POS
20120904121355
-20.20
1024242578864
Withdrawal
Wal-Mart Super Wal-Mart Super TAYLORS SC US
(I edited out all of the spaces, tabs and CR’s to make it more readable)
I ran the OFX file through MS OFXAnalyzer and it comes up clean.
Any suggestions as to what to do to avoid all of the cut and paste necessary to get the information into the “Payee” field. I understand that this might require some Python code.
Thanks!
Matt says
Individual transaction got kind of messed up and time limt booted me out. Here it is again:
STMTTRN
TRNTYPE POS
DTPOSTED 20120904121355
TRNAMT -20.20
FITID 1024242578864
NAME Withdrawal
MEMO Wal-Mart Super Wal-Mart Super TAYLORS SC US
/STMTTRN
Any suggestions as to what to do to avoid all of the cut and paste necessary to get the information into the “Payee” field in MS Money? I understand that this might require some Python code.
Thanks!
Charlie says
I don’t know if this is a dumb question, but I modified the bank account script, opened a Run Command prompt, which shows up as:
C:\Users\Owner>
then when I enter
python ofx-ba.py [followed by bank Id, User Id, acct #, CHECKING], I get:
‘python’ is not recognized as an internal or external command, operable program or batch file.
The python executable is in C:\Python27. I don’t even know how to change directories. Sorry.
Suggestions appreciated, thanks.
Charlie says
I figured it out.
I had to
chdir C:\python27
then
C:\python27 python [directory path]ofx-ba.py …
Barry says
I have been running updates with these scripts since the demise of Microsoft Money. I got a new laptop and I need to transfer the existing scripts on my old computer to the new one. It looks like the setup script, getdata script, and everything related is in a folder called ofxpy_pocketsenese. Since I have existing scripts that work do I just need to copy everything in the ofxpy_pocketsense folder to the new computer? Do I need to install active_python on the new computer? I’m not very tech savvy and it took me a while to get these scripts to work so I would like to get them on the new computer in the easiest way possible. I am a little confused on what I have to do for the new computer so it would be appreciated greatly If someone can give me a step by step on what I have to do to get my already working scripts from an old computer to a new one.
Harry says
Barry – You are using PocketSense, which improved the script here in many ways. Please see PocketSense instructions.
Tom76017 says
My Edward Jones connection started erroring off this weekend after months of success with PocketSense. OFXget is still working from the OFX Home site. Any ideas or similar experiences?
STATUS>
CODE>2000
SEVERITY>ERROR
MESSAGE>[ofx.unsupportedService]
The server does not support the SIGNONMSGSRQV1 request, or a request was made against an invalid organization. Please verify the Organization name and FID and try again.
[ref: A750686F0141FAB60000013A42BD1709BB39]
/STATUS>
Tom76017 says
Sorry, the previous comment was related to PocketSense.
Himanshu says
I want to fetch Bank Transaction details for Accounts that provided by user
I am Using Asp.net and use vb.net language
I Pass Folllowing Parameter “AccountActivity” “username”, “password”, “ACCOUNTID”, “BANKID”, “ORG”, “FID”
But i got that error for Response
Please Help me to solve that issue
2000ERROR[ofx.unsupportedService] The server does not support the SIGNONMSGSRQV1 request, or a request was made against an invalid organization. Please verify the Organization name and FID and try again. [ref: 9BB4703D006397EB0000013B51353E3E69F2]20121201001441.666[-5:EST]ENGChase Bank16010af5f18d-098b-4cab-94dc-5a033135813c2000ERRORThe server does not support the BANKMSGSRQV1 request, or a request was made against an invalid organization. Please verify the Organization name and FID and try again. [ref: 0af5f18d-098b-4cab-94dc-5a033135813c]
Michael says
Been running the OFX download / import routines for a long time. Running Win XP SP3. All of a sudden I began getting the following failure with MSMoney: (taken from Application Event Viewer)
Faulting application msmoney.exe, version 17.0.0.3817, faulting module utlsrf08.dll, version 17.0.0.3817, fault address 0x00006f6b.
I download about 7 files, and only one or two of them create this failure. Once the import fails, MS Money will not run. It starts up, show “online updating…” in the upper right corner, then crashes.
I have to restore to an earlier MSMoney file, and bypass this offending OFX file. Other OFX’s from same bank
import okay.
Anyone else having this issue?
ameridan says
You’ll find the solution in my blog entry http://microsoftmoneyoffline.wordpress.com/2012/12/02/windows-8-64-bit-version-compatibility-with-sunset-money/
My blog actually started because of TFB’s creation, but I now use PocketSense instead for gathering OFX downloads.
Michael says
Patching MNYOB99.dll did the trick. Thanks so much.
joel brandt says
Microsoft money no longer automatically downloads fund and stock prices as of July 1, 2013. Has anyone else experienced that? Prices can be inserted manually, but with mutliple positions, it is quite time consuming.
Jason says
Bank of America changed their download file types this morning! I tried to download the Web Connect file type (the other 2 choices are excel or printable text formats), but it errored out in Money. Anyone have a workaround?
Jason says
Anyone get Bank of America to work? I can download them from the website, but using my standard script I now get the below error. It was working fine up until BOA made changes. They’re saying they no longer support some older Quicken versions. Anyone still download from BOA?
Traceback (most recent call last):
File “ofx-ba-tfb-auto.py”, line 252, in
client.doQuery(query, argv[1]+dtnow+”.ofx”)
File “ofx-ba-tfb-auto.py”, line 213, in doQuery
“Accept”: “*/*, application/x-ofx”
File “C:Python27libhttplib.py”, line 941, in request
self._send_request(method, url, body, headers)
File “C:Python27libhttplib.py”, line 975, in _send_request
self.endheaders(body)
File “C:Python27libhttplib.py”, line 937, in endheaders
self._send_output(message_body)
File “C:Python27libhttplib.py”, line 797, in _send_output
self.send(msg)
File “C:Python27libhttplib.py”, line 759, in send
self.connect()
File “C:Python27libhttplib.py”, line 1144, in connect
self.sock = ssl.wrap_socket(sock, self.key_file, self.cert_file)
File “C:Python27libssl.py”, line 344, in wrap_socket
ciphers=ciphers)
File “C:Python27libssl.py”, line 121, in __init__
self.do_handshake()
File “C:Python27libssl.py”, line 283, in do_handshake
self._sslobj.do_handshake()
socket.error: [Errno 10054] An existing connection was forcibly closed by the re
mote host
Ozarn says
Hi,
i had the same error and i changed the url to https://eftx.bankofamerica.com/eftxweb/access.ofx, that fixed the problem for me. I can download it now.
gun schwarz says
I am using Money Plus Sunset for a few years now.
However, after using “CCleaner” I can’t open Money anymore and when I use my backup file:
my portfolio3 Backup_2014-04-10_234802.mbf Money opens but wants to convert my file to a *.mny file.
That tells me (I think) that all of a sudden I am using Money 2006 that’s still on the hard drive.
My question: would it be ok to uninstall all Money programs and reinstall Money Plus Sunset, then the *.mbf file should open up , correct?
MW says
It appears Vanguard changed something with the OFX download, it is no longer working. Does anyone have the updated server information, or did they completely disable these downloads?
RDT2 says
I just got done fighting this!
So at the bottom of the ofx-ba-tfb-auto.py is the Main section. The line that needs tweaking is:
elif “INVSTMT” in sites[argv[1]][“caps”]:
query = client.invstQuery(sites[argv[1]][“fiorg”], sys.argv[4], dtstart)
Change “fiorg” to “brokerid”. Now at the top of the file, for all of your sites duplicate the fiorg lines and then rename the new line brokerid. Now for Vanguard you will need to have the following info:
“vanguard”: {
“caps”: [ “SIGNON”, “INVSTMT” ],
“fiorg”: “Vanguard”,
“fid”: “1358”,
“brokerid”: “vanguard.com”,
“url”: “https://vesnc.vanguard.com/us/OfxDirectConnectServlet”,
},
And now it works! So in summary, it looks like they are requiring a specific fiorg and brokerid and they are no longer the same value.
MW says
Thank you thank you thank you. I’m glad someone more knowledgeable than me still uses this script!
Can I ask how did you go about debugging this?
RDT2 says
So the error code was for account not found. Originally I went down a rat hole where I ended up buying quicken to ensure that Vanguard didn’t break something that allowed me to get the data over OFX. Quicken worked so no issue on Vanguard’s end.
So I realized that the error code was no account found, but I was logging in ok, so that means the first part of the OFX messages was working. I remembered that if you run the script without an account number you will get a list of all of your account numbers at Vanguard. I noticed that the brokerid value was different than what I was sending as the code was using the fiorg data as the brokerid. So I changed the fiorg and then it was still broken. So then I changed it so the fiorg would be Vanguard while the brokerid would be vanguard.com. Success.
Now I have to work on getting a refund through the 60 day refund policy on Quicken as I have no desire to use their software. I’ve actually written my own software and database to keep track of all of my retirement information, crunch the numbers and then upload it to Zoho Reports so I can make pretty graphs.
MW says
Nice work!
Another site you could check is PocketSense, http://pocketsense.blogspot.com/
He also figured out the correct parameters and his script must already account for the separate brokerid. But thanks for fixing this script. I wonder how many people out there are still using this one.
Barry says
My comment is not about the scripts but I do not know where else to ask this. Also it looks like the last comment here was back in September so I hope that somebody sees this.
My problem is that I used to be able to look at Portfolio Manager for a summary of my holdings. Before Money was discontinued you could get to Portfolio Manager by clicking on the “Investing” tab and then there was a “Portfolio Manager” tab that got you to the holdings page. Then with the discontinuation of Money at some point when I clicked on the “Investing” tab it went to a dead page but then in the search box if I type in “Portfolio” it got me to the page that had the “Portfolio Manager” tab to click on that got me to the holdings page. Now Microsoft made a change because when I type in “Portfolio Manager” in the search box the page that it goes to does not have the “Portfolio Manager” tab on it. So if this post is making sense to someone then how do I get to the portfolio summary page that I used to be able to get to?
Harry Sit says
I have Portfolio Manager as one of toolbar buttons above the Investing tab label. If you don’t have it, click on Shortcuts… to add it to the toolbar.
Barry says
@Harry Sit – Thank you so much for the reply. That solved my problem.
Arthur Zebra says
This script worked fine for JP Morgan Chase checking and credit cards until early this year. Chase apparently made some changes, and although their is no indication of an error, it no longer downloads any data. Is there any fix for this?
Jeff says
If anyone is still using these scripts and ran into an issue in the last month with Discover and/or Citibank rejecting the download request you can fix it by removing the lines in ofx-b-tfb.py:
h.request(‘POST’, selector, query,
{ “Content-type”: “application/x-ofx”,
“Accept”: “*/*, application/x-ofx”
})
and replacing them with:
h.putrequest(‘POST’, selector, skip_host=True, skip_accept_encoding=True)
h.putheader(‘Content-Type’,’application/x-ofx’)
h.putheader(‘Host’,host)
h.putheader(‘Content-Length’,len(query))
h.putheader(‘Connection’,’Keep-Alive’)
h.endheaders(query)
Gomel says
didn’t work for me:
Traceback (most recent call last):
File “ofx-ba-tfb.py”, line 228, in
client.doQuery(query, argv[1]+”_acct.ofx”)
File “ofx-ba-tfb.py”, line 198, in doQuery
h.endheaders(query)
TypeError: endheaders() takes exactly 1 argument (2 given)
Gomel says
working now
need python 2.7
thanks
George says
Moneyspire is a good personal finance manager that supports OFX/Direct Connect http://www.moneyspire.com
Barry says
I am trying to record a stock sale by choosing specific lots. Somehow I can’t figure out how to do it. When I record the sale and choose OK I am not getting another dialog box where I can choose the specific lots that I want to sell. I have not sold a stock in a long time and I know before Money was discontinued I could do this so am I missing something or did this functionality go away with the demise of Money?
Harry Sit says
That functionality is still there. Look in settings to make sure you don’t have it set to always use the default first in first out.
Barry says
@Harry Sit thanks for reply but I must be blind because I don’t see an option in the settings that defaults to FIFO. Can you tell me where the setting is please and do I need to change the setting at the investment account level or at the holdings level. Thank you.
Barry says
Ignore last post I found the setting. Thank you for the assist.
Richard says
It appears that Yahoo has terminated the csv API. I found an alternative API call that returns one stock at a time in JSON format. https://stackoverflow.com/questions/47064776/has-yahoo-suddenly-today-terminated-its-finance-download-api
The problem is, I don’t have sufficient Python experience to be able to integrate this change into our favorite script. My attempt fails on
import requests
with: NameError: Global name ‘requests’ is not defined
SF Giants Fan says
First of all, I would like to thank you for all this valuable information. With Quicken now going to a 1 or 2 year subscription, I’ve decided to pull the plug and go with MS Money. With your help, I was able to get everything set up and am extremely happy so far. The only issue that I’m having is that I can’t find any OFX information for my Saturna HSA. In reading your other blogs, I believe you have an HSA through Saturna, too. Are you able to download your data from Saturna to MS Money?
Thanks again!
Harry Sit says
I didn’t try. I just manually enter my small number of transactions there.
Barry says
I am recently having trouble downloading from Fidelity and T. Rowe Price. Error on both accounts is “An error occurred sending POST request. There is also an Exception Type and Excepton VAL error.
For Fidelity there is also a message Enter Hello: tlsv1 alert protocol version
For T. Rowe Price a message Enter Hello: sslv3 handshake failure
Any help is appreciated.
Harry Sit says
Bobby made many improvements to these scripts in PocketSense. Please switch to PocketSense.
http://sites.google.com/site/pocketsense/
Barry says
@Harry Sit
Please excuse my ignorance but I thought that I was using pocketsense. Or are you saying that the scripts that I am using are old and out of date and that the one you are referring me to is a different script?
I have a pocketsense directory and scripts that I set up in 2012 based on the info in this site. Should I delete everything and start fresh using the pocketsense scripts?
Thank you for your time to answer.
Harry Sit says
PocketSense made many improvements to the original scripts here back then. It made more improvements over the years. If you are using an older version of PocketSense you should update to the latest (but keep a copy of the information about your specific institutions and stock and fund symbols).
Barry says
@Harry Sit
I’m having major problems don’t know if I should be posting here or at the pocketsense site that you referred me to. I downloaded the new pocketsense info and when I run setup to add accounts account connections that were working before are not working. None of my userid or passwords have changed. The error message just flies by so is there a way to capture an error message so that I can read it?
Harry Sit says
Sorry I don’t know to how to troubleshoot it. You should post at the PocketSense site.
Robert Norsworthy says
Hi, I’m looking for a 2021 update as to the best way to download transactions from Chase and other major banks in .NET. I’ve heard OFX is the way to go, but not seeing any .NET code to do it. I have a customer for my mom-and-pop software shop that wants to automate that as part of the accounts receivable app I do for them.
Please advise,
Robert
John says
ofx.chase.com I dead for last couple days. anybody has solution?
thanks
John says
I meant is dead