I finally found a bit of time to update the scripts to include some recently discussed enhancements. Specifically:
- When adding or updating an account in Setup, it will now query the institution, and give a list of valid accounts. The user can still enter the account number manually, and will need to do so if/when a bank masks the account number in the reply (e.g., XXXX-XXXX-1234). Otherwise, the user can select the account number from the list.
- When running GetData, if a connection fails for a given Site+Username combination, it will not attempt another connection with those same credentials at that site during the session. The intent is to give a single error message, regardless of the number of accounts assigned to a given username at a site. A new sites.dat option named skipFailedLogon can be used to override the behavior.
- Setup now sorts accounts by sitename+username+account.
- Robert
Adding Account does a nice job of listing accounts, but since I had all 6 accounts that were listed already set up, I hit Return on the Account # prompt, rather than a line # or account #, and the whole python script disappeared. This didn't hurt anything, but I expected it to go back to the main menu instead.
ReplyDeleteThanks Dan. Definitely a bug to fix.
DeleteWorks very nice for Credit cards as well; specifically Discover where before you had to log into your web account and inspect the downloaded ofx file to determine your coded account number, now it is revealed with Robert's new routine.
ReplyDeleteThanks for the feedback Dan. I updated the release version, including the bug fix above.
ReplyDeleteVery Nice Robert! If you could add a feature to reorder the accounts that would be a nice add...
ReplyDeleteIt would be easy to add a "sort" option, maybe by site+username+account? It probably makes sense to just auto-sort when adding or changing an account, rather than having it as an option. I only have a few accounts, so haven't really noticed.
DeleteI added a sort step to the Setup routine, such that accounts are now sorted by Sitename+username+account. It happens each time Setup is run, and anytime an account is edited/added/deleted.
DeleteThanks! This is a great feature!
DeleteThank you Robert, I have been using your scripts for years to extend the life of MS Money. I have scoured your site and blog for fixing the DISCOVER OFX problem. I tried several things including updating python 2.7 and adding the new updated scripts but nothing seems to be working. Below is the latest OFX return.
ReplyDeleteYou don't have permission to access "http://ofx.discovercard.com/" on this server.
Reference #18.e22f5dcc.1526756728.451c74
My sites file has the following entry :
SiteName : DISCOVER
AcctType : CCSTMT #credit card
fiorg : Discover Financial Services #Discover Card Account Center
fid : 7101 #9625
url : https://ofx.discovercard.com
bankid : # 031100649
brokerid :
ofxVer : 103
appid : QWIN
appver : 2200
mininterval:
timeOffset :
Any guidance would be most appreciated.
Remove 103 from ofxVer and see my blog article https://microsoftmoneyoffline.wordpress.com/2017/05/12/discover-has-changed-your-account-id/
ReplyDeleteregarding your coded account #.
- ameridan
Thank you very much. I was thrown off by the account number, you must keep the leading Discovr in the account number. When I typed it in exactly as the setup pocketsense script reports then all worked fine. I am so happy my MS Money OFX imports are fully functional again after about a year. Thank you for continuing to support and update pocketsense for those of us that won't accept inferior alternatives to MS Money.
DeleteJust fyi, but my Discover settings are simpler, and work with either ofxVer=102 (default) or 103.
DeleteSiteName : DISCOVER
AcctType : CCSTMT #credit card
fiorg : Discover Financial Services
fid : 7101
url : https://ofx.discovercard.com
bankid :
brokerid :
appid :
ofxVer :
appver :
mininterval:
timeOffset :
I pasted the 5/20 setup.py and control2.py files into my folder to try out and although my Schwab downloads work when using Setup to test (everything sorted nicely), I tried 4 times with the Getdata and the Schwab downloads errored out. I copied the 5/16 control2.py and setup.py back and the Schwab downloads worked again. May just be coincidental, but thought I'd relay it to you Robert. Setup isn't involved in the getdata queries, are they?
ReplyDeleteNo connection between them and, in fact, the new Setup would have saved the accounts "sorted"... so that the previous version would execute in the same order as the new.
DeleteRobert, I reverted back to the newest version, but because of errors? that I'm getting today
ReplyDelete{CODE}2000
{SEVERITY}ERROR
{MESSAGE}General error
{STATUS}
{CODE}15500
{SEVERITY}ERROR
{MESSAGE}Signon (for example, user ID or password) invalid (ERROR)
once a Schwab getdata fails, it doesn't try any more for the remaining other accounts. Can you put a toggle on your new logic for those of us that want to try all accounts as we've been doing for years, rather than give up after one failed? Today must just be a bad day for that server.
I can, but are you saying that it (randomly) fails one account and not the others during a single session? Seems odd, especially since it's giving an error related to "password". I haven't seen this on the servers I use, but I don't connect to Schwab.
DeleteYesterday, yes some accounts worked. Today, all seems well again. I've always liked that it tries all accounts and just ignores the occasional erroneous feedbacks. In my case, I don't like that it skips trying all of my remaining Schwab accounts once it encounters an error. I would appreciate an override flag in sites.dat ;)
ReplyDeleteRobert, you can just ignore. If I want to get transactions from a Schwab acct that has transactions daily, I'll just use Setup instead. Most days, the server doesn't have errors.
ReplyDeleteDan, if you get a real {CODE}15500 4 times in a row, won't you get locked out and have to get your password reset?
ReplyDeleteOn the times where things get stopped, I would check the recorded OFX in XFR, and see if there was indeed a {CODE}15500. I would think a failed server would give a different indication.
cl
Possible. I don't think I've ever gotten 4 in one occassion, although Monday might have triggered that with the old script. ;)
ReplyDeleteAs of now, the script doesn't parse the failed attempt to determine whether it's a potential credential error, as I figured any failed connect was cause enough to skip that server for that session. The next step was going to be to add checks for specific errors, if needed. Dan's errors above indicate that the same error was getting thrown even when it wasn't related to credentials, so it may not help?
ReplyDeleteI added a flag for disabling the check, but haven't yet posted it. I think it's better to accept the failed check, than to risk locking an account, but that's just my opinion ;)
It would be possible to have an optional site descriptor entry that identifies what that FI returns to indicate a failed credential check. For most FIs it is going to be the {CODE}15500.
ReplyDeleteIt would also be possible to run a count on fails.
I can see this could make things more complex or obscure. Just throwing it out.
cl
I thought about it too, but I couldn't think of a reason to (immediately) retry a failed connect, when the user can run it again, if they want. For this case, if a server response fails once, there's no harm in skipping it. Otherwise, it will either rapid fire to a bad response (e.g., bad credentials), or hang for the socket timeout over again.
DeleteI finally had a moment to focus on this. A new version has been posted, adding a sites.dat option named skipFailedLogon to override the (default) behavior of skipping subsequent accounts after a failed logon. Default = Yes.
ReplyDeleteThank you Robert. I'm using the option, but Schwab servers are behaving properly anyways.
DeleteWhere exactly do I (manually) add "skipFailedLogon" to sites.dat, and how is it to be stated?
DeleteIt's described in the sites template file.
DeleteHere is what I added to sites.data and it doesn't work (I need it to continue trying to connect):
Delete#Entries are (FieldName : Value) pairs, one per line. Spacing/Tabs are ignored.
#anything following a "#" symbol is ignored (treated as a comment)
#If a connection to a site fails during Getdata, no further connections will be attempted for that site+username combo during the session.
#--------------------------------------------------------------------------------
skipfailedlogin: No
#define default download interval (days)
#--------------------------------------------------------------------------------
defaultInterval: 30
jmf
I did try "skipfailedlogon: No"also.
Delete#define default download interval (days)
#--------------------------------------------------------------------------------
defaultInterval: 30
The strings are case-sensitive. You showed using lowercase.
DeleteLine 52 of the template shows the string. You would want to enter "skipFailedLogon: No"
cl
User flags in sites.dat aren't case sensitive, however this is a flag I wasn't able to really test. It only gets used by GetData, not setup/test, so I'm curious if there may be a bug. Did you update *all* files to latest version?
DeleteAnother comment on sites.dat user flags. Flags can't be "inside" a site definition block. They can be anywhere else in the file, with one option per line.
DeleteHello,
ReplyDeleteI've been tracking my finances with Microsoft Money for a number of years and only recently started using PocketSense -- what a life enhancer! I also started trading cryptocurrencies a few months ago and I wanted an easy way to import these transactions into MS Money. I've made a simple website that details how I've done it. I am able to use PocketSense to update MS Money with cryptocurrency quotes from Yahoo.
http://pages.suddenlink.net/shaferandrew
Thanks!
-Andrew
Recently seeing my Chase downloads receiving 502 Bad Gateway in the XFR files. I upgraded to the latest version and no change. Any recommendations or what could have caused the issue?
ReplyDeletePython version?
DeleteHi Andrew,
DeleteI can confirm that Robert's scripts connect to the Chase Visa credit card server as expected using Active State Python 2.7.14 Build 2717.
-Kevin N.
This comment has been removed by the author.
DeleteActivePython 2.7.12.2712 (ActiveState Software Inc.)
DeleteI installed Build 2717 and see the same issue.
DeleteVerify that the new version is the active one by running python in a command prompt, e.g.
Delete> python
>> version
If that looks good, you may want to post your site entry so others can compare. I don't use chase myself.
Chase is working fine for me with 2.7.14. Here are my site entries:
DeleteSiteName : CHASE
AcctType : BASTMT
fiorg : B1
url : https://ofx.chase.com
fid : 10898
bankid : 021000021
brokerid :
appid : QWIN
appver : 2400
mininterval :
ofxVer : 103
----
SiteName : CHASE CREDIT CARD
AcctType : CCSTMT #credit card
fiorg : B1
url : https://ofx.chase.com
fid : 10898
bankid :
brokerid :
appid : QWIN
appver : 2400
ofxver : 103
mininterval:
DeleteSiteName : Chase
AcctType : CCSTMT #credit card
fiorg : B1
fid : 10898
url : https://ofx.chase.com
bankid :
brokerid :
appid : QWIN
appver : 2400
ofxver : 103
mininterval:
I deleted my Chase entries and then attempted to add them again and I received a message that my login and password are wrong, but if I go to the site - the credentials are fine
I have NOT upgraded to the latest version. But I too am experiencing the same issue as Andrew. I have been using the scripts for years with no issues. I too get 502 Bad Gateway. I have couple of accounts and only 1 is experiencing this issue. This started 6/4. I wonder if Chase is making changes on their end???
DeleteSam - I just fixed my issue by logging into Chase and accessing the secure message center and clicking the email to confirm my identity. Once I did that, everything is working again. Now, my caveat. I also have a download of Quicken installed here as a test so I don't know if importing my Chase data into it caused the secure message from Chase to generate, but those are the steps I took.
DeleteThis may help too. https://microsoftmoneyoffline.wordpress.com/2018/01/07/chase-ofx-downloads/
For each account user (sites.dat entry), after running Pocketsense > Setup > Test Account, you will get an error informing you that you have a secure message requiring your verification. Logon to your web account, click on top left button and then click on Secure Messages and then click on the link within your most recent message to activate downloads.
Now you will be able to test once again, and you should have a successful download that you’ll need to Send to Money, so that you can match with the appropriate account in Money.
Test each account individually and match to Money accounts before running the regular combined downloads.
Andrew, when you access https://ofx.chase.com with a web browser such as IE, you should get a 501 error.
ReplyDeleteIt may be that your problem with the 502 error was a transient condition.
cl
I suggest that you look through the 20 references to Chase in http://pocketsense.blogspot.com/2017/11/new-version-available-includes-yahoo.html A few of those will be useful I suspect.
ReplyDeletecl
Getting Chase working was a hot topic early in the year.
See if this helps as well...
ReplyDeletehttps://microsoftmoneyoffline.wordpress.com/2018/01/07/chase-ofx-downloads/
NxtTek, I had looked at that link, and saw it did not mention ConnectKey. I am just an observer, but I had been thinking that was tied into the Chase access.
ReplyDeleteI think you are saying that as far as you know, https://microsoftmoneyoffline.wordpress.com/2018/01/07/chase-ofx-downloads/ cover the needed Chase-specific info for credit cards and bank.
cl
cl, you didn't read the 4th bullet item. If you clear your credentials, you get a new ConnectKey. or am I missing something?
DeleteIt appears USAA Bank has made a change yesterday as I can no longer download data. The First line of the error message is: "An error occurred sending post request to service2.usaa.com". Please advise...
ReplyDeletejmf
I can confirm that USAA is working as of right now (6/9/18 12:50). Both regular checking/savings and brokerage IMCO.
DeleteAndrew,
DeleteDid you get my email?
jmf
I did not. Just saw this thread again today.
DeleteUSAA Bank
ReplyDeleteWhy is this not working any more?
SiteName : USAA Checking
AcctType : BASTMT
fiorg : USAA
fid : 24591
url : https://service2.usaa.com/ofx/OFXServlet
bankid : 314074269
brokerid :
appid : QWIN
appver : 1700
mininterval:
timeOffset :
Those of you who are successfully connecting to USAA checking, please share your site information from your sites.dat file. Thank you
DeleteSuccessfully used today:
DeleteSiteName : USAA
AcctType : BASTMT #bank
fiorg : USAA
fid : 24591
url : https://service2.usaa.com/ofx/OFXServlet
bankid : 314074269
brokerid :
appid : QWIN
appver : 1700
mininterval:
timeOffset :
What is "#Bank"?
DeleteHi Unknown,
DeleteIn sites.dat anything followed by a # is treated as a comment and is ignored in the file. #bank is simply the user indicating that the account type is a bank account.
You can enter #bank as well if you wish or omit it. It will have no effect either way.
-Kevin N.
Seems my problem is a certificate problem (Exception type : ), I have updated to version 18-May-2018, not sure what to do next. Please advise, thank you.
DeleteHi Unknown,
DeleteWhat version of python are you using?
At a command prompt type python -V (that's a capital V)
-Kevin N.
i'm using python ver 2.7.2.5, how do i update?
DeleteThanks Kevin! I updated to the latest version of Python and all is well.
Deletehttps://www.activestate.com/activepython/downloads You would want 2.7.14.2717. Make sure you don't get version 3.x
DeleteRobert: Note the "new version" link above does not work.
cl
Hi Unknown,
DeleteYou're welcome. I'm glad to hear that you were able to get this sorted.
Thank you for reporting back with your results.
-Kevin N.
Link fixed. Thanks Cal.
DeleteTry removing the appver value
ReplyDeleteI removed the appver value from sites.dat using my text editor. Do I need to do anything else to make it so as it didn't seem to make a difference when I ran getdat?
ReplyDeleteThat was a very old version of Quicken. Guess it must be something else then.
ReplyDeletejmf -- the USAA customer with a problem:
ReplyDeleteIf I access https://service2.usaa.com/ofx/OFXServlet with a web browser, such as IE or Chrome, I get error 405.
If I access https://service2.usaa.com/ I get a web page with logo and "System Error" indication.
If you don't get those, there may be something blocking your path. I am not saying this will help, but trying the two URLs is easy.
cl
I finally got around to testing the latest version. Thank you Robert for adding the skipFailedLogon option. I think that will be handy! (since I requested it, I may be biased).
ReplyDeleteTesting the new add functionality that lists accounts obtained from server I discovered an interesting "feature" that could affect people, so I'll document it here. Bank of America has multiple sites with diffent bankid for different uses. I no longer remember how I stumbled upon this, but I have one bankid for my checking, one for my money market and business accounts, and an empty bankid for my credit card.
When logging in to Bank of America under ANY of the bankid's and trying to add a new account, the server will list ALL the accounts available at the bank. However, if you are not using the correct bankid, the download will fail!
This will also affect the new skipFailedLogon. Robert's implementation only looks for failures in a site/username combo. In BoA's case, I have 3 sites so I could fail on the first site, the next two would still attempt to login.
Interesting. Do you use one username and password combo for all of these, and do all have the same connection url?
DeleteRobert,
DeleteStrange. I thought i had replied.
I have three different entries for BoA. They all use the same "url", "fid" and "fiorg". Two have different "bankid" and one has an empty "bankid". It's been too long since I figured this out to remember why this setup.
All three entries use the same exact username and password (they are all seen under the same login on the web). The empty "bankid" is used for credit cards (so it has AcctType=CCSTMT; it is used for both a personal and business cc). One of the other entries is used only for my checking account which was opened decades ago (so it may have to do with the fact that BoA used to care about what state you opened your account in). The other entry is used for a money market, a business saving, and a business checking.
Because I can log in with the same username/password and see all my accounts, when I go to set up a new account in PocketSense it will list all 6 accounts regardless of which I use. But if I'm not in the "correct" then I get an "incorrect username" error when I attempt to actually download the statement.
Let me know if you ever want me to debug further.
Carlos
I have never been able to get the Dow Jones index to download, yet I noticed it is still in the sites.template file. Am I missing something on how to get it to download? I get the error: "error reading http://finance.google.com/finance?q=INDEXDJX:.DJI"
ReplyDeleteGoogle Finance hasn't been working since they removed json quote sections from their web interface. I rewrote the Yahoo interface at about the same time, when they changed their method. Yahoo now supports a much broader quote set than previously, including foreign exchanges.
DeleteTry ^DJI for a yahoo quote for the Dow 30.
Thanks for your work on this Robert!
ReplyDeleteHas anyone been able to get Capital One credit cards to work? It seems like the OFXhome data has been erroring out for a while now, but curious if anyone has found the right combo to use.
I don't use Capital One, but check http://moneydance.com/synch/moneydance/fi2004.dict too.
DeleteTry that again: http://moneydance.com/synch/moneydance/fi2004.dict
ReplyDeleteRobert - Is there a way to get PocketSense stock/fund quotes to load directly into Moneydance without user intervention? I tried creating the Tickers investment account and included all of the stock/fund tickers that I added to the sites.dat file. Moneydance balks when trying to load the quotes.ofx file and, unfortunately, doesn't update any of the ticker prices.
ReplyDeleteHi Dava,
DeleteIt is my understanding that Moneydance garners it's price quotes via a CSV file.
Poketsense can generate the required CSV file (via sites.dat 'SaveQuoteHistory: Yes') but you would still need to incorporate Mike Bray's Security Price Loader extension to get the quotes into Moneydance.
-Kevin N.
Hi All,
ReplyDeleteWindows 10 Home 64-bit Ver. 1803
MS Money Ver. 17.0.120.3817
Pocketsense Ver. 16-May-2018
Python Ver. 2.7.14
Q. How do other MS Money users manage Certificates of Deposit (CDs) in MS Money?
As a holding in an investment account?
An asset account?
Or something else?
I recently purchase several CDs thru Fidelity.
They were all new offerings.
Their set price was $100.00.
When the scripts download the OFX data from Fidelity, they pull in a < UNITPRICE >
(which is possible the price from a secondary market for the CDs.)
The < UNITPRICE > is always equal to or a few pennies / dollars lower than the original $100.00 price.
I intend to keep the CDs to maturity so I don't want the < UNITPRICE > updated.
Q. Is there a way for the scripts to scrub or ignore the < UNITPRICE >?
OR...
Should I be managing the CDs in a manner other than as a holding in an investment account?
Thank you for any of your insights into this matter.
-Kevin N.
I buy secondary CDs thru Schwab, and have the same experience. For reports (current year, previous year, etc) that calculate income from CDs that would be thrown off by the fluctuation, I manually enter an "update" price of $100 (or the actual purchase price) for the last day of each (current) year.
ReplyDeleteThat doesn't help on the portfolio views, but in actuality, the fluctuations do reflect current value, if you needed to sell. With my method, the price will be to your liking for annual reports and the redemption price will also be real, so I would otherwise just live with it.
Hi NxtTek,
DeleteThank you for your reply.
I'm currently deleting the 'updated' price of the CDs each time that I import from Fidelity.
I run Moneydance in parallel with MS Money as something of a checks and balances. In order for the checks and balances to work, I need the two programs to balance out to-the-penny. Thus, I was hoping that the scripts could ignore the < UNITPRICE > or scrub it.
Thanks again,
-Kevin N.
Try my idea just to see if it will help you as that will then be the most current price. Enter 12/21/2018 and 100.00 in update prices / manually
DeleteI meant 12/31/2018
Delete-ameridan
Hi NxtTek,
DeleteI thought that you might be on to something there by inputting a future date with a price of $100.
The CDs in question are 6-month CDs.
I opened the 'Update Prices Manually' form and entered the maturity date and $100.00.
Alas, the Fidelity import still interjects the < UNITPRICE > value for today.
It's only 5 CDs, so I can manage by deleting the price with each import.
I was just hoping that it would be a quick-fix thing that Robert work his magic with.
Thank you again for your help.
-Kevin N.
...that Robert *could* work his magic with. :)
DeleteI still have CDs @ 5+%, so my values are over $100, but I agree it would be nice to either keep the value @ 100, or just ignore the price updates altogether. Sounds like a _scrubUnitPrice (ofx) routine would help you when FDIC is in {MEMO} that would replace the reported value with 100.00
ReplyDeleteHi NxtTek,
Delete5+'s, nice. I thought I was lucky getting 6-month 2's. :)
If writing a scrubber is involved, it's far beyond the scope of my knowledge on how to do so. :(
I don't know what string the scrub would need to hinge on. The OFX generated from Fidelity for example, makes no mention of 'FDIC'. (although, they are FDIC insured)
-Kevin N.
I'm not sure that it's wise to attempt to adjust or remove "reported" unit pricing via the scripts, as I'm not sure what it means. I'm assuming a CD is purchased with a minimum holding period, and if it's sold prior to that date, then there's a redemption fee. If so, then the cash value today is indeed less than the face value, and imho, should be tracked as such. Am I misunderstanding?
ReplyDeleteHi Robert,
DeleteThank you for your reply.
CDs purchased as new offerings, as were mine, are sold at a price of $100. They also can be bought and/or sold in secondary markets prior to their maturity for more than $100 or less than $100 based on their current market value.
In my case, the CDs have only a 6-month duration and I intend to hold them to maturity. Thus the secondary market pricing serves no purpose for me and due to my set-up of checks and balances with Moneydance, it actually creates a small hindrance.
I tend to agree with your concerns about tinkering with reported unit pricing. It has the potential of creating more problems than it solves.
I'll just delete the unit prices as I perform the import. There's only 6 CDs involved so it's no biggy.
Thanks again,
-Kevin N.
This comment has been removed by the author.
ReplyDeleteAnyone grandfathered into BofA's direct connect tried to add a new account? I have an old account that works with Bank of America's direct connect. I opened a new account recently and have been unable to get direct connect to work with it. BofA says I'm grandfathered so any new accounts are also enabled for direct connect.
ReplyDeleteI get the following error message with the new account:
"The account you have entered is incorrect. Please verify that the entire account number has been entered, including any leading zeros. Please contact 1.800.933.6262 for assistance."
Any help would be greatly appreciated.
See the text I just posted further up. I've had to set up three different entries for BoA depending on the account. All use the same "url", "fiorg", and "fid". However the "bankid" is different. "bankid" appears to be the routing number on my checking account. For the oldest account I use "052001633" for the newer accounts I use "051000017" and for the credit card accounts I leave "bankid" blank.
DeleteI last added new bank accounts from BoA to PocketSense about 3 years ago. Although technically I've added "new" credit cards as recently as a month ago when my credit card had to be changed due to fraud.
Ah awesome! I had tried everything without realizing the routing numbers for both bank accounts were different. Just added the new account with its own routing number and works like a champ. Thanks much! Finally fixed
DeleteThis comment has been removed by the author.
ReplyDeleteGbenro, did you try the new list feature?
ReplyDeleteCL
Carlos, I have the same experience at PNC. Just because you see all of your accounts listed when you are in Setup, doesn't always mean that you will be able to actually download with those credentials. I had to set up an alternate PNC sites.dat entry with a different routing number in order to have successful downloads from my newer account.
ReplyDeleteHi Robert,
ReplyDeleteI'm another one of the long time users of your scripts, ever since Microsoft stopped support for Money.
Please find below some code I use in scrubber.py to fix paid out dividends and capital gains from T. Rowe Price (TRP). They incorrectly report them as reinvested in such a way that Money won't import the transactions. Interestingly, Money doesn't even burp when digesting the OFX download to let you know there is a problem. In case this affects other folks, this is how I convert transactions to when are 0.0.
Due to posting size limitations, I will break this into two posts.
Step 1) In scrubber.py on line 55 add a comment:
#27-Jul-2018*dbc
# - Add TRowePrice scrub function to fix paid-out dividends/cap gains that are marked as reinvested
Step 2) In scrubber.py on line 85 after "if 'DISCOVERCARD' in siteURL: ofx= _scrubDiscover(ofx, accType)", add:
if 'TROWEPRICE.COM' in siteURL: ofx = _scrubTRowePrice(ofx)
Step 3) In scrubber.py on line 218 following "def _scrubDiscover_r2(r, accType):", add:
#-----------------------------------------------------------------------------
# OFX fiorg T. Rowe Price
# 1. T. Rowe Price OFX reports paid-out (non-reinvested) dividends and capital gains incorrectly
# in such a way that MS Money ignores the transaction.
# These transactions can be identified as reinvestments having 0.0 shares.
# The transaction will be bounded by and and contain 0.0.
# Furthermore, the payment is incorrectly shown as a negative value, the memo field is misleading, and
# a required field () is missing.
#
# For dividends (DIV) make these changes to the transaction:
# Change to
# Change DIVIDEND (REINVEST) to DIVIDEND PAID
# Change -#.## to #.##
# Following CASH add CASH
# Delete 0.0
# Delete #.##
# Change to
#
# For short term capital gains (CGSHORT) make these changes to the transaction:
# Change to
# Change SHORT TERM CAP GAIN REIN to SHORT TERM CAP GAIN PAID
# Change -#.## to #.##
# Following CASH add CASH
# Delete 0.0
# Delete #.##
# Change to
#
# For long term capital gains (CGLONG) make these changes to the transaction:
# Change to
# Change LONG TERM CAPITAL GAI to LONG TERM CAPITAL GAIN PAID
# Change -#.## to #.##
# Following CASH add CASH
# Delete 0.0
# Delete #.##
# Change to
#
def _scrubTRowePrice(ofx):
global stat
ofx_final = '' #new ofx message
stat = False
if Debug: print('Function _scrubTRowePrice(OFX) called')
#Process all ... transactions
#Use non-greedy quantifier .+? to avoid matching across transactions.
p = re.compile(r'.+?',re.IGNORECASE)
#re.sub() command operates on every non-overlapping occurence of pattern when passed a function for replacement
ofx_final = p.sub(lambda r: _scrubTRowePrice_r1(r), ofx)
if stat: scrubPrint("Scrubber: T Rowe Price dividends/capital gains paid out.")
return ofx_final
to be continued....
David Casada
Continued from posting above.
ReplyDeleteStep 4) In scrubber.py on line 271 following "def _scrubTRowePrice(ofx):", add:
def _scrubTRowePrice_r1(r):
#regex subsitution function: if 0.0 then convert transaction from to
global stat
#Copy the reinvested transaction for manipulation
ReinvTrans = r.group(0)
#Create variable for the paid out transaction
PaidTrans = ''
# If units are 0.0 then scrub the ofx transaction
if '0.0<' in ReinvTrans.upper():
#Flag that at least one transaction is scrubbed
stat = True
#Use regex to parse the REINVEST transaction with following format
#...erroneous memo...DIV or CGSHORT or CGLONG-#.##CASH0.033.33
#into these 10 groups:
# m.group(1) =
# m.group(2) = ...
# m.group(3) = erroneous memo
# m.group(4) = ...
# m.group(5) = type of income (eg DIV, CGSHORT, CGLONG)
# m.group(6) = -#.##
# m.group(7) = CASH
# m.group(8) = #.###
# m.group(9) = #.##
# m.group(10) =
p = re.compile(r'()(<.+?)(.+?[^<]*)(.+?)(.+?[^<]*)(.+?[^<]*)(.+?[^<]*)(.+?[^<]*)(.+?[^<]*)()',re.IGNORECASE)
m = p.match(ReinvTrans)
gr01 = '' #Change from
gr02 = m.group(2)
gr04 = m.group(4)
gr05 = m.group(5)
if gr05 == 'DIV' : gr03 = 'DIVIDEND PAID'
elif gr05 == 'CGSHORT' : gr03 = 'SHORT TERM CAP GAIN PAID'
elif gr05 == 'CGLONG' : gr03 = 'LONG TERM CAPITAL GAIN PAID'
else : gr03 = m.group(3) #Leave as reported
gr06 = m.group(6).replace('-','')
gr07 = m.group(7) + 'CASH'
#No need to capture m.group(8) since it is deleted
#No need to capture m.group(9) since it is deleted
gr10 = ''
PaidTrans = gr01+gr02+gr03+gr04+gr05+gr06+gr07+gr10
if Debug: print('Reinv Trans: '+ReinvTrans)
if Debug: print('Paid Trans: '+PaidTrans)
return PaidTrans #return the new string for regex.sub()
#-----------------------------------------------------------------------------
I personally thank you for the wonderful PocketSense OFX scripts you maintain. It was fun learning how to program python using your examples as building blocks to solve my problem.
Cheers, David Casada
This comment has been removed by the author.
DeleteDear Robert,
DeleteAfter posting the code above, I noticed that Blogger stripped out everything that looked like an OFX tag in my descriptions, comments, and code. Net result is that my posting is not very readable. Furthermore, the code above won't work as displayed. Sorry about the confusion. I am happy to send you the working code by other means. PS: I fixed my profile so I don't show up as "Unknown".
Cheers, David Casada
David Casada
Delete1. I like tinyupload.com to post a file easily. You get a URL to post. They stay until 30 days go by without an upload. While escape codes can handle the pointy brackets, Python needs the indentation to stay intact.
2. Recently a poster in the Microsoft Money forum reported using T Rowe Price. I then tried to find a T Rowe Price sites.dat descriptor for PocketSense. Could you post your successful descriptor here or there?
3. I think it might be a good idea for the distributed scrubber.py to have a described way for users to keep their FI-specific scrubbers intact even though upgrading the Pocketsense. I just integrate my Fidelity scrubber stuff right into the scrubber.py, but there may be a better system that could be thought up. Maybe the descriptor in sites.dat could include a FI-specific scrub hook.
Thanks.
CL.
Thanks for your reply and suggestions CL.
Delete1. You are right that the python code indentation and OFX tags with pointy brackets are important to preserve. Therefore I posted the instructions and python code to modify PocketSense scrubber.py routine (Version 180528) to fix non-reinvested dividend and capital gain transactions from T. Rowe Price at TinyUpload.com. The url is http://s000.tinyupload.com/?file_id=48563419858875598680
2. I typically check with ofxhome.com to get OFX configuration information. Their T. Rowe Price web page is at http://www.ofxhome.com/index.php/institution/view/466. This is my entry in sites.dat:
SiteName : T. Rowe Price
AcctType : INVSTMT #investment
fiorg : T. Rowe Price
fid :
url : https://www3.troweprice.com/ffs/ffsweb/OFXServlet
bankid :
brokerid : troweprice.com
appid :
appver :
mininterval: 15
timeOffset :
In setup.py I entered my account number in format dddddddddd-d including leading zeroes if needed.
3. Like you, I modify scrubber.py myself. I do like your idea for an FI-specific scrub hook in sites.dat, but I am not volunteering Robert to do even more work! ;) I just hope that the information I provided makes it easy for him and other users to implement this scrub function for T. Rowe Price.
Cheers, David Casada
David, thanks.
ReplyDeleteQuestion: would a new T Rowe Price user that just had a few mutual fund transactions do OK without a special scrubber in PocketSense?
CL
Should be no problem if you actually reinvest dividends and capital gains...no scrubbing needed. However, if your div/cg payments are not reinvested then MS Money will ignore the misconfigured OFX transactions from TRowePrice. You will have to enter them manually.
DeleteCheers, David
Thanks for code upload David C. Been a bit busy of late, but won't take long to add your TRowePrice handler once I have a bit of time. I considered adding a hook for custom "scrub handlers", but never got around to it. I guess I decided that issues found by users should be added to the release code, so that everyone benefits... when possible.
ReplyDelete- Robert
Has anyone else noticed that the getdata script is running much slower recently? I imagine it's a Windows 10 thing, rather than Python, but just thought I'd raise the issue in case someone knew how to get the speedy operations back (< 1 second vs. the > 5 seconds now for each account download.
ReplyDeleteHi NxtTek,
DeleteWin 10 64-bit Home
Python 2.7.14
Scripts Ver: 28-May-2018
2 accounts at Chase
4 accounts at Fidelity
4 accounts at Regions Bank
2 accounts at Discovercard
The accounts at Regions Bank take the longest to connect but nothing even close to the range of >5 seconds. I'd say roughly 2 seconds per each account.
The 4 accounts at Fidelity connect almost instantly.
Chase and Discovercard connect equally at about 1 second per account.
This behavior is not anything new though. This is consistent with how it's always been.
-Kevin N.
Mine is running normal on Windows 10 w/ latest updates, etc.
DeleteThanks guys. I'll just live with it. Today, it was so slow, I got this with Discover:
Delete** An ERROR occurred sending POST request to ofx.discovercard.com
Exception type : {class 'ssl.SSLError'}
Exception val : ('_ssl.c:645: The handshake operation timed out',)
It seems that Fidelity might be discontinuing access to data via OFX soon (at least with simple username/password authentication that the PocketSense scripts currently use):
ReplyDeletehttps://www.fidelity.com/security/fidelity-access-data-security
Basically it sounds like Fidelity doesn't like 3rd parties having access to customer account credentials and are moving towards an OAuth-type solution where customers log in with Fidelity directly, who will then provide an access token to the 3rd party.
It is promising that they mention using standards ("solutions like Fidelity Access that use open technology standards"), but concerning that they might only allow access to established financial services providers who sign a liability agreement ("third-party firms that want to connect to Fidelity Access must adhere to strict security standards [and] assume responsibility for handling Fidelity customer data they receive").
It seems they plan to shut down access via current methods by the end of the year: "once the rollout of Fidelity Access is complete, your Fidelity account information will no longer be accessible through that third-party financial site or application. We expect to complete the rollout in 2018."
Thanks for the alert. That would be detrimental to me if PocketSense could not access Fidelity Investments.
ReplyDeleteCL
People's United Bank CT http://www.ofxhome.com/index.php/institution/view/1308
ReplyDeleteI am getting an error message when using Setup to add an account at People's United.
The error -- "An error occurred requesting accounts from the site. Please check username and password."
I used Moneydance to check the user id and password (and used Moneydance to change from temp password to my password). So I am confident that info is correct.
Are you aware of any items that could cause a problem?
Regards, Mike
Mike, regarding Peoples....
DeleteMoneydance can access your account?
http://pocketsense.blogspot.com/2018/05/new-version-for-testing.html#comment-form says you need a special credential. If Moneydance works for you, then you apparently did that already.
CL
yes, I have the special credentials and verified them using Moneydance. The settings I used in sites.dat are from http://www.ofxhome.com/index.php/institution/view/1308, I guess it is possible they are incorrect but then I would have expected a different error message
DeleteYou used the correct Routing #?
ReplyDeletewhich field in sites.dat takes the routing number?
Deletebankid
DeleteI entered the routing number into bankid in sites.dat and I received the same error message - "An error occurred requesting accounts from the site. Please check username and password.".
DeleteHere are my settings in sites.dat (based on bankid=routing num + http://www.ofxhome.com/index.php/institution/view/1308)
SiteName : People’s United Bank
AcctType : BASTMT #bank
fiorg : 136
fid : 5534
url : https://pfm.metavante.com/ofx/OFXServlet
bankid : 221172186
After the error message Setup still let me continue by adding account number, then choosing account type, then getting test transactions. After requesting test transactions, Setup then gave me error message "Invalid OFX statement received" and in looking at the file in the xfr folder it said "INVALID/BLANK REQUEST"
I don't use the bank, so can't test.
DeleteA couple thoughts:
1. Make sure your running a recent Python 2.7 release. I use 2.7.14. Verify by running python from a command prompt, and checking the version. Multiple instances of python are supported on a single computer, but only one is the default.
2. If that looks good, try adding: ofxVer: 103 (to the site entry)
Moneydance has a console window that logs the software's activity so I was able to use that to see the log info for the connection to Peoples United and the settings used by Moneydance to start an OFX download, so I pretty confident those setting work. I used the same setting in sites.dat but still got same error message - "An error occurred requesting accounts from the site. Please check username and password.".
DeleteUserId is a 6 digit number, could that impact something?
Below is the output from Moneydance where I think it is starting an OFX download from Peoples. Note, for 2 fields I changed to *some text* to change personal info. Please take a look and share if you see anything different from scripts, thanks.
From Moneydance (removed brackets for message posting purposes)
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
OFX
SIGNONMSGSRQV1
SONRQ
DTCLIENT 20180819202841.361
USERID *6 digit number*
USERPASS *
GENUSERKEY N
LANGUAGE ENG
FI
ORG 136
FID 5534
/FI
APPID QWIN
APPVER 2400
CLIENTUID *very long hex number*
/SONRQ
/SIGNONMSGSRQV1
SIGNUPMSGSRQV1
ACCTINFOTRNRQ
TRNUID 1534710521361-0
ACCTINFORQ
DTACCTUP 19900101
/ACCTINFORQ
/ACCTINFOTRNRQ
/SIGNUPMSGSRQV1
/OFX
Michael: I suspect that the ClientUID generated by MoneyDance has locked connections to require that specific value. PocketSense generates it's own key on first connect, as did MoneyDance, but they won't be the same, as they are unique UUIDs. Try the following:
Delete1. Run Setup
2. List accounts w/ "Show connection keys" = Yes, and find the ConnectKey for the account.
3. Using Notepad++, or similar, edit connect.key.
The file is partially encrypted, but NOT the ConnectKey string.
4. Replace the key above with the CLIENTUID value being used by MoneyDance
5. Test
- Robert
To clarify #3 above: connect.key is a file in your script folder.
DeleteI replaced the CLIENTUID value to the one being used by MoneyDance and unfortunately still no luck. I noticed pocketsense uses "-" in a few places in its CLIENTUID but MoneyDance log output did not. I tried it both ways but still didn't work. After I replaced the CLIENTUID I listed accounts with keys and saw that it was updated to match MoneyDance, so good there. Here is what happened when testing after changing CLIENTUID:
Deletefrom SetUp:
Invalid OFX statement received
** Review .\xfr\PEOPLESUNITEDBANK20180820101906911109.ofx for possible clues...
An online error occurred while testing the new account.
Here is what file in xfr folder said:
INVALID/BLANK REQUEST.
I missed it before, but the MoneyDance request uses OFX 102, but includes clientUID, which is odd. Did you retry w/ ofxVer: 103 in sites.dat after updating clientUID in connect.key? May not matter, but worth checking.
DeleteThe PS script does not currently include clientUID when ofxVer = 102, as it wasn't a supported field for that version. I can add the option to test, but curious if it works w/ ofxVer:103 first.
Thank you for your continued suggestions, but again unfortunately ofxVer: 103 in sites.dat did not help. Same setup message(Invalid OFX statement received), same line from file in xfr folder (INVALID/BLANK REQUEST.)
DeleteLets try replicating the MoneyDance settings:
Delete1. Replace your ofx.py file with this one: ofx.py .
2. Edit sites.dat, and use ofxVer:102B for the site entry
3. Test.
Just an idea if other things don't work... any chance that they did not implement the account listing thing, and entering the account number the old way would work?
DeleteCL
Still no luck with new ofx.py and ofxVer:102B in sites.dat. Same error messages. After adding the account Setup says, "An error occurred requesting accounts from the site. Please check username and password." Then Setup allows user to continue on and enter account number and account type and then test. Test returns the error, then I tried changing clientUID to match Moneydance and test again but same error message (Invalid OFX statement received), same line from file in xfr folder (INVALID/BLANK REQUEST.)
DeleteI have been successfully using the PS scripts for years with several other accounts and periodically I try to tackle this last bank account, but without success. Thank you for all your suggestions.
After sending initial OFX request, Moneydance then logs:
connecting to: https://pfm.metavante.com/ofx/OFXServlet with method: POST
Connecting to pfm.metavante.com
acceptable protocols: TLSv1 TLSv1.1 TLSv1.2
Saving certificate
Then some cookie and header stuff
Then:
Reading message from https://pfm.metavante.com/ofx/OFXServlet
>>>>>>>>
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
… with account info, balance, etc
Grab ofx.zip, reset the ofxVer to 102 or 103, and test. I added some output, to show response STATUS messages, if they exist. The script makes multiple attempts, and the INVALID/BLANK result is just the last one.
DeleteError remains, but Setup had the following message:
DeleteResponse STATUS:
---------------
Try 1: Status = 15511 SEVERITY ERROR MESSAGE There was a problem with your online session. If the problem continues, contact your financial institution to resolve it. A new security feature requires you to perform an update that only customer support can help you with.
An error occurred requesting accounts from the site. Please check username and password.
Try again: ofx.zip
DeleteError remain but Setup message status code changed
DeleteResponse STATUS:
---------------
Try 1: Status = CODE 15510 SEVERITY ERROR MESSAGE There was a problem with your online session. If the problem continues, contact your financial institution to resolve it. Or, perform a one-step update to receive the latest version of your software.
An error occurred requesting accounts from the site. Please check username and password.
To clarify: you tested with both ofxVer=102 and 103?
Deleteyes, I checked again and now realized--
Deleteusing ofxVer=102 Setup gets 15510 message:
Try 1: Status = CODE 15510 SEVERITY ERROR MESSAGE There was a problem with your online session. If the problem continues, contact your financial institution to resolve it. Or, perform a one-step update to receive the latest version of your software.
using ofxVer=103 Setup gets 15511 message:
Try 1: Status = 15511 SEVERITY ERROR MESSAGE There was a problem with your online session. If the problem continues, contact your financial institution to resolve it. A new security feature requires you to perform an update that only customer support can help you with.
I'm not quite ready to give up, as this may apply to other sites, but there's not much more I can do w/ testing "blind". In the Moneydance reply above, you put "Then some cookie and header stuff". That info is important, as there may be a need to reply w/ session tokens before requesting info. If you can provide that part, it may help.
DeleteYou are a true programmer.
DeleteFrom Moneydance (removed brackets for message posting purposes)
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
OFX
SIGNONMSGSRQV1
SONRQ
DTCLIENT 20180819202841.361
USERID *6 digit number*
USERPASS *
GENUSERKEY N
LANGUAGE ENG
FI
ORG 136
FID 5534
/FI
APPID QWIN
APPVER 2400
CLIENTUID *very long hex number*
/SONRQ
/SIGNONMSGSRQV1
SIGNUPMSGSRQV1
ACCTINFOTRNRQ
TRNUID 1534710521361-0
ACCTINFORQ
DTACCTUP 19900101
/ACCTINFORQ
/ACCTINFOTRNRQ
/SIGNUPMSGSRQV1
/OFX
<<<<77<<<<
connecting to: https://pfm.metavante.com/ofx/OFXServlet with method: POST
Connecting to pfm.metavante.com
acceptable protocols: TLSv1 TLSv1.1 TLSv1.2
Saving certificate: 0
subject: CN=pfm.metavante.com, OU=Enterprise SSL Pro, OU=Hosted by Fidelity National Information Services, OU=Corporate Account, O="Fidelity National Information Services, Inc.", STREET=601 Riverside Ave, L=Jacksonville, ST=Florida, OID.2.5.4.17=32204, C=US
issuer: CN=COMODO RSA Organization Validation Secure Server CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB
not after: Tue Apr 14 19:59:59 EDT 2020
not before: Sat Apr 14 20:00:00 EDT 2018
filename: unknown_cert_0.der
Saving file to C:\Program Files\Moneydance\unknown_cert_0.der
Saving certificate: 1
subject: CN=COMODO RSA Organization Validation Secure Server CA, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB
issuer: CN=COMODO RSA Certification Authority, O=COMODO CA Limited, L=Salford, ST=Greater Manchester, C=GB
not after: Sun Feb 11 18:59:59 EST 2029
not before: Tue Feb 11 19:00:00 EST 2014
filename: unknown_cert_1.der
Saving file to C:\Program Files\Moneydance\unknown_cert_1.der
Connecting with https headers:
POST /ofx/OFXServlet HTTP/1.1
Content-Type: application/x-ofx
Host: pfm.metavante.com
Content-Length: 564
Connection: close
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
Accept: application/x-ofx, */*
Accept-Language: en
Cache-Control: no-cache
---end headers
HTTP/1.1 200 OK
Date: Sun, 19 Aug 2018 20:28:43 GMT
Set-Cookie: JSESSIONID=8179155975331090537; HttpOnly
Content-Length: 927
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-Control: no-cache="set-cookie, set-cookie2"
Connection: close
Content-Type: application/x-ofx
Content-Language: en
Unrecognized cookie parameter: HttpOnly ->
HTTP response headers:
date: [Sun, 19 Aug 2018 20:28:43 GMT]
set-cookie: [JSESSIONID=8179155975331090537; HttpOnly]
content-length: [927]
expires: [Thu, 01 Dec 1994 16:00:00 GMT]
connection: [close]
content-type: [application/x-ofx]
cache-control: [no-cache="set-cookie, set-cookie2"]
content-language: [en]
Reading message from https://pfm.metavante.com/ofx/OFXServlet
>>>>>>>>
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
… with account info, balance, etc
I don't see anything special about the request/response, except extra fields and slightly different settings in the request. I modified the request to match almost exactly to what you have above. Grab the ofx.zip file again (above link), and test. This (test) copy should not be used for other sites... as it would certainly fail w/ Discover and probably others.
Deletestill errors, and in the big picture no big deal, as manual download from bank website will go to msmoney.
DeleteIn an effort to look around, can you point me to the script location that handles the 2 ssl certificates provided by the bank?
The scripts don't explicitly manage certificates, but instead use the python httplib and urllib2 libraries. The scripts currently use the default settings, which on windows means that it uses the windows certificate authority. As the scripts are written, certificates must be valid & current. The errors above didn't look like typical ssl errors, so I didn't pull that thread.
DeleteI have great news and a little bad news (for me anyway). The great news is I got a download from the bank to work, yea! The bad news is I didn't take myself serious and just kept adding print commands to the OFX script file to find differences from what I saw from Moneydance and then just changed stuff to try without keeping track.
DeleteMy best guess (that I am going to try and replicate) -- I noticed 2 request differences from Moneydance, in the header PS put a NewFileUID while Moneydance put "NONE". The second is PS included optional field CLTCookie while Moneydance excluded (so I changed newfileuid to none and commented out cltcookie). Lastly I think I do have to match the ClientUID to that setup by Moneydance in Connect.key (which I changed to match Moneydance)
I am going to start fresh with the ofx.zip files you provided August 21, 2018 at 11:13 AM and then make those changes and try again.
I will let you know how it goes.
YEA, making those 2 code changes (and having ClientUID match Moneydance) results in Setup saying:
DeletePEOPLES UNITED BANK : *my acct num* : Getting records since: 20180723
+Scrubber: Null time values updated.
Download completed successfully
Send the results to Money (y/n)?
I went back to the script files of May 28, 2018 and made those 2 changes in the OFX script (newfileuid=none, exclude cltcookie). In Sites.dat I excluded the 2 fields Moneydance used for appid and appver and had ofxVer=103. Connect.key has the Moneydance ClientUID. In this version the Peoples account was not added yet, so I added and all worked well.
DeleteQuestion now is, will those 2 changes impact accounts at other institutions?
That's great news. Were both changes required?
DeleteI will check and reply back
Deletegood call, the problem was only tied to the cltcookie field (newfileuid did not have an impact)
DeleteI did a little checking, and see that CLTCOOKIE is a hold-over from Money-2004, and isn't used by Quicken. I'm going to set aside a little time soon to add a new scrub routine for T. Rowe Price, and will remove CLTCOOKIE from requests. In the unlikely event it breaks another site, I'll add it as an optional field.
DeleteThanks Micheal!
I made a bad error when opening the Sites.dat file with notepad. I changed the default program for .dat files to Notepad. Not sure how I can reverse this. The result is that Setup will not fire up. Thanks for help.
ReplyDeleteSeveral regedit options available to fix this. https://answers.microsoft.com/en-us/windows/forum/windows_10-other_settings/how-to-remove-a-default-file-association-app-from/3e498ed3-016d-4acd-847f-09c2470b711c
DeleteSetup is setup.py. If you are fixing file association, do it for *.py.
DeleteFor whatever reason, python.exe or python are not in my command path. I created a batch file to launch python.exe. You could make a batch file to do the commands.
In a pinch, you could launch setup like this (using whatever path your python.exe is in:
c:\python27\python.exe setup.py
CL
Chase Credit card is posing problems at this time. I have already installed 2.7.14 and the error still occurs:
ReplyDeleteJPMORGAN CHASE AND CO. : XXXXXXXXXXXXXXXXXXXX (CC number) : Getting records since: 20180802
** An ERROR occurred sending POST request to ofx.chase.com
Exception type :
There is no message in the Chase site under Secure messages. Have enabled QB1/2 downloads on the site.
This has been a problem in just the last 3 weeks.
Hi Anonymous,
DeleteI can not reproduce this behavior with Chase Credit Card.
I tested using Setup.py this morning (10:15 AM EST) and the scripts connected as expected.
Did you set ofxVer:103 in site.dat?
-Kevin N.
Thx Kevin...Yes, I did set it to ofxVer:103.
DeleteThis is the actual error I am getting (sorry for the truncated post last night):
JPMORGAN CHASE AND CO. : <> : Getting records since: 20180718
** An ERROR occurred sending POST request to ofx.chase.com
Exception type :
Exception val : [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
An online error occurred while testing the new account.
Kevin - I also noticed that the Validation at the bottom of the page at http://www.ofxhome.com/index.php/institution/view/636 shows "Fail: Did not return valid OFX! Last validated on June 30th, 2018". Not sure what this means.
DeleteThanks for answering all these questions (and for the outstanding work here - love MS Money!).
First, make sure Python 2.7.14 is the *active* install, by running python at a command prompt. I've seen cases where multiple versions were installed, but an earlier copy was the "default" If it looks ok, try completely uninstalling and reinstalling python. The error above has been reported before, but it "self corrected" when the python install got refreshed. Could have just been timing, but worth trying.
DeleteThanks Robert - will try it. Can you help me understand how I run this from Command prompt? I am not as computer literate as I should be on this front.
DeleteAlso - does the display at the bottom ofxhome page (see my earlier comment) have anything to do with this - or does that also get fixed with the uninstall and reinstall of 2.7.14?
Start -> run -> cmd
DeleteAt the prompt, type: python
As for ofxHome, I'm not sure, as I don't really use it. I suggest posting your sites.dat parameters here, and see if another user can help. I don't use Chase myself. There's a number of different entries for Chase in the Moneydance dict @ http://moneydance.com/synch/moneydance/fi2004.dict
These are the site parameters I am using:
DeleteSiteName : JPMorgan Chase and Co.
AcctType : CCSTMT
fiorg : B1
fid : 10898
url : https://ofx.chase.com
bankid :
brokerid :
ofxVer : 103
appid : QWIN
appver : 2400
mininterval:
timeOffset :
I uninstalled Python, rebooted and re-installed Python 2.7.14 and still facing the same issue.
HI Anonymous,
DeleteMy entry for Chase Credit Card in sites.dat is the same as yours except for appid and appver. Both of those are blank in mine.
-Kevin N.
You mentioned "new in the last 3 weeks". Anything else "new in the last 3 weeks"?
DeleteWell...the good news is that Chase works now. I made another attempt with PocketSense earlier today and it displayed a different error directing me to the Chase site...went there and lo and behold! saw the verify ID message under Secure Messages and it all worked fine. I think the issue may have been that some update on their prevented OFX access over the weekend and they set it right on Sunday night.
DeleteWhat was different in the past 3 weeks is that I had to do a factory reset of my laptop (thank you, HP, for a less than a year old laptop with minimal use). Once done, I re-installed everything, including PocketSense, Python etc.
Hi Anonymous,
DeleteThe factory reset explains it.
The way I understand it is by doing so you inadvertently changed the UUID used to connect to Chase.
Hence, the lock-out and the message to verify your identity.
-Kevin N.