Fidelity Access

ioweejun's Avatar

ioweejun

01 Dec, 2025 08:00 PM

If I understand correctly Fidelity is replacing use of direct connect / OFX protocol with a new protocol referred to as "Fidelity Access". From what I can see Moneydance (and Quicken) do not (yet?) support this new protocol.

This is important in that Fidelity has indicated the continued use of MoneyDance then violates their lost funds replacement guarantee due to use of nonapproved 3rd party. Note that their use of term "3rd Party" seems different than infinitekind.

I note that Vanguard has also stopped use of OFX and does not seem to have a replacement intent. Have to use downloads by account.

Can anyone at Moneydance provide current status of this? Will Moneydance be updated to support Fidelity Access?

Showing page 5 out of 15. View the first page

  1. 121 Posted by mmd on 12 Dec, 2025 10:05 PM

    mmd's Avatar

    For fidelity.py online is now the default and checks for duplicates automatically which is nice if I'm just downloading the past 10 days as a CSV for all my Fidelity accounts and don't have to worry about deleting anything. Hope it helps someone! I did incorporate the Long Term Capital Gains transaction and Stuart's helpful advice regarding converting floating point amounts to long values. Thanks!!!

    P.S. Open Script in Developer Console doesn't work for me, just loads a blank script, not sure why

    https://infinitekind.tenderapp.com/discussions/general-questions/24...

  2. 122 Posted by zxkivyx75em8 on 13 Dec, 2025 03:02 PM

    zxkivyx75em8's Avatar

    mmd thank you so much for working on this. It looks very good. And best of all it works

    Because I am lazy I got tired to navigating to my downloads folder which is where my fidelity CSV file always goes to. At added the following so the dialog would open in my downloads folder. So far it seems to work on Windows. I don't know on a MAC.

    I tried to put "user.home" into a variable, but the System.getProperty would not resolve the string correctly.

    from java.io import File # I added
    from java.lang import System # I added

    downloadDir = "Downloads" # I added

    home = System.getProperty("user.home") # I added
    downloads = File(home, downloadDir) # I added
    fileChooser = JFileChooser(downloads) # I changed

  3. 123 Posted by Stuart Beesley ... on 13 Dec, 2025 03:05 PM

    Stuart Beesley (Mr Toolbox)'s Avatar

    .. FYI - I've suggested improvements to the file chooser and location detection/saving to @mmd

  4. 124 Posted by mmd on 13 Dec, 2025 03:13 PM

    mmd's Avatar

    Can you send them again? I think I missed that message…

    On Sat, Dec 13, 2025 at 9:05 AM, Stuart Beesley < [email blocked] > wrote:

  5. 125 Posted by zxkivyx75em8 on 13 Dec, 2025 03:32 PM

    zxkivyx75em8's Avatar

    Stuart, I am sure yours are better. I have not coded anything for about 17 years. It has been fun do get back to it a little. Thank you to you too for your help on this.

  6. 126 Posted by Stuart Beesley ... on 13 Dec, 2025 04:23 PM

    Stuart Beesley (Mr Toolbox)'s Avatar

    DM me on Slack - or email me:
    ...

  7. 127 Posted by -Kevin N. on 13 Dec, 2025 04:45 PM

    -Kevin N.'s Avatar

    Hi All,
    For anyone still using Pocketsense

    Pocketsense stopped working for me yesterday however if I add 'userAgent' to the Fidelity < site > parameters in sites.dat then it starts to work again. For how long, is anyone's guess.

    You can obtain your userAgent from here:
    https://whatmyuseragent.com/

    -Kevin N. (not a member of Moneydance support)

  8. 128 Posted by MikeB on 13 Dec, 2025 07:02 PM

    MikeB's Avatar

    I just noticed today that my Fidelity accounts were no longer downloading. Looked back and it was end of November. I moved most of my accounts from Schwab to Fidelity because they did the same bs and still down't have anything other than csv downloads. I can understand the security concern but not offering anything other than csv for downloads is not acceptable. At least my banks and cc allowed qif/osx format downloads since they turned off direct connect. I plan on calling them on Monday and adding my complaint to the list.

  9. 129 Posted by mmd on 13 Dec, 2025 08:22 PM

    mmd's Avatar

    Thanks! Your solution works on Mac too so I added it to the main code base, as well as removing some annoying warnings:

    https://drive.google.com/file/d/1pYgdgEUYrGJtlm_-JI5PezfSphh2UzNW/view?usp=drive_link

    Thanks, Stuart, for all your past help with this as well and for the awesome Toolbox!

    On Sat, Dec 13, 2025 at 9:02 AM, zxkivyx75em8 < [email blocked] > wrote:

  10. 130 Posted by Stuart Beesley ... on 13 Dec, 2025 09:50 PM

    Stuart Beesley (Mr Toolbox)'s Avatar

    @mmd - have you seen my new code via DM on Slack?

  11. 131 Posted by mmd on 13 Dec, 2025 10:37 PM

    mmd's Avatar

    Thanks I see it now (sorry maybe second time for me using Slack and I didn’t get notification for some reason). Will take a look.

    On Sat, Dec 13, 2025 at 3:50 PM, Stuart Beesley < [email blocked] > wrote:

  12. 132 Posted by zxkivyx75em8 on 14 Dec, 2025 02:23 PM

    zxkivyx75em8's Avatar

    mmd

    Not sure if you care, but, I have been testing your code on an OLD version of MD (2021.1) as well as current version.
    When you added "DateUtil.getUniqueCurrentTimeMillis()" that broke the old version as that method did not exist in the old version.

    Doing a little research the old System.currentTimeMillis() was prone to not always give unique time stamps.
    I 'think' the following would be safe. Stuart will most likely know for sure and have a more elegant solution.

    lastTs = 0
    
    def getUniqueTimeMillis():
        global lastTs
        ts = System.currentTimeMillis()
        if ts <= lastTs:
            ts = lastTs + 1
        lastTs = ts
        return ts
    
  13. 133 Posted by Stuart Beesley ... on 14 Dec, 2025 03:38 PM

    Stuart Beesley (Mr Toolbox)'s Avatar

    I’m sure your version is ok. This is what the MD code does.

    synchronized(lock) {
          newTime = java.lang.Long.max(System.currentTimeMillis(), uniqueTimeMillis)
          uniqueTimeMillis = newTime + 1
          return newTime
    

    So basically it maintains a lock so that any code calling this will have to wait and then get a time that no one else has used.

  14. 134 Posted by Stuart Beesley ... on 14 Dec, 2025 07:33 PM

    Stuart Beesley (Mr Toolbox)'s Avatar

    OK, so it used to just call the std java System.currentTimeMillis() before the new method was invented. You can use something like this code below:

    from java.lang import System
    if moneydance.getBuild() >= 4097: from com.infinitekind.util import DateUtil
    
    def uniqueTime():
        if moneydance.getBuild() >= 4097:
            from com.infinitekind.util import DateUtil
            return DateUtil.getUniqueCurrentTimeMillis()
        else:
            return System.currentTimeMillis()
    
    print uniqueTime()
    
  15. 135 Posted by zxkivyx75em8 on 14 Dec, 2025 09:25 PM

    zxkivyx75em8's Avatar

    Stuart

    MUCH more elegant! Thanks for showing me that.

  16. 136 Posted by mmd on 14 Dec, 2025 09:36 PM

    mmd's Avatar

    Ok, here's the version with Stuart's modifications plus:

    (i) the time modification above (ii) some extra code in case there are two identical transactions in the CSV file to import them both (this could conceivably happen for me as I use the CMA as primary checking account and have been known to, say, accidentally make a CC payment twice, although I'm not sure in the same day)

    Also, Stuart has a different key mapping which I turned off for now with useStuartsKey = 0. First, I feel that if I change key mapping would have to provide a conversion script. Second, I'm not convinced we need to change it (my goal is to prevent it from accidentally assigning two different transactions as unique, and I think including more fields is better from this standpoint). Finally, if we do have a new uniqueness key mapping, Stuart's may be too simple - my main example is when I same the CSV file in Excel, it changes date from mm/dd/yyyy to mm/dd/yy. This makes each transaction a new one (no longer unique) with both my AND Stuart's mapping. If we really want to implement something smart, I would assume it wouldn't do this.

    Also, I don't know how to change the MD file chooser to the Downloads folder by default (@Stuart?), as the new code uses the MoneyDanceUI class which seems completely undocumented in the public docs at, e.g., https://infinitekind.com/dev/apidoc/com/moneydance/awt/DatePicker.h...

    Here's the code:
    https://drive.google.com/file/d/1pYgdgEUYrGJtlm_-JI5PezfSphh2UzNW/v...

    EDITED TO ADD: code at above location now remembers last directory you used thanks to @Stuart!

  17. 137 Posted by dwg on 14 Dec, 2025 09:44 PM

    dwg's Avatar

    I suspect people may have wondered about trying to eliminate duplicates by creating their own transaction IDs.

    Alas to do this with any guarantee the downloaded data would have to be more granular. The fact is two transactions cannot be posted at exactly the same time, but that time would have to be down to factions of a second given the speed the systems work at. I do not expect the CSV downloaded data to be at that granularity.

  18. 138 Posted by mmd on 14 Dec, 2025 10:04 PM

    mmd's Avatar

    Yes, idea is to at least not keep creating same transactions over and over if downloading CSV file every day or few days for past 10 days and that seems to work. I did add something so that if there are two seemingly identical transactions in the CSV file it will import both. Also online = 0 would import everything and not check for duplicates if one wants to change that setting (but then the transactions would not be marked as online and apparently aren't merge-able if your fidelity account is listed as a Bank account in MD rather than an Investment account, as the latter doesn't allow merge anyway)

    On Sun, Dec 14, 2025 at 3:44 PM, dwg < [email blocked] > wrote:

  19. 139 Posted by zxkivyx75em8 on 14 Dec, 2025 10:21 PM

    zxkivyx75em8's Avatar

    This seems to work to specify the default Directory

    Did not neaten it up, just put in some values

    downloadsDir = File(System.getProperty("user.home"), "Documents")

    prefs = mdGUI.getPreferences()
    prefs.setSetting(UserPreferences.IMPORT_DIR, downloadsDir.getAbsolutePath())

  20. 140 Posted by mmd on 14 Dec, 2025 10:48 PM

    mmd's Avatar

    Thanks, I added a fancy solution from @Stuart that makes a new internal MD setting to remember the import directory for this script

    https://drive.google.com/file/d/1pYgdgEUYrGJtlm_-JI5PezfSphh2UzNW/v...

  21. 141 Posted by mhoggie on 15 Dec, 2025 12:31 AM

    mhoggie's Avatar

    just a user,

    Are you guys going make this script into an Extension at some point? I don't think Fidelity is going to cooperate.

  22. 142 Posted by mmd on 15 Dec, 2025 12:37 AM

    mmd's Avatar

    What about "Fidelity is actively collaborating with our development team to enable automatic downloads through Moneydance + instead.
    We’re also setting up a direct connection via Akoya as a backup. It might take a bit more time, but it looks like the better long‑term option.
    We appreciate your patience and apologize for any inconvenience.
    Updates will continue to be shared on this public thread.
    I hope this information is helpful. Please let us know if you have further questions or need more assistance.
    --
    Maddy, Infinite Kind Support
    "
    ?

    Sounds like Fidelity was working with Moneydance?

    I just don’t know about the timeline. I hope it is weeks to few months and not longer…

    On Sun, Dec 14, 2025 at 6:31 PM, mhoggie < [email blocked] > wrote:

  23. 143 Posted by mmd on 15 Dec, 2025 12:48 AM

    mmd's Avatar

    I mean I’m not opposed to it becoming an extension but I have four Fidelity workplace retirement accounts that have active contributions to download and as far as I can tell there is no way to link my workplace retirement accounts to one login as there is with non workplace accounts (or maybe those at other workplaces that allow this). So I would hope that Fidelity and Moneydance come to a solution and am taking the comments at face value about active collaboration between Fidelity and Moneydance.

    On Sun, Dec 14, 2025 at 6:31 PM, mhoggie < [email blocked] > wrote:

  24. 144 Posted by dwg on 15 Dec, 2025 01:09 AM

    dwg's Avatar

    To make it into an extension I would suggest you ideally need something more generic and not Fidelity specific.

    The code to parse the CSV file and to write to the data file should be the same each time, it comes down to the fields that are in the CSV file and how you map them and importantly what text you look for in the fields and mapping them to Moneydance action types etc. Hence there would need to be some type of specific Institution layout files or like for the CSV Importer extension reader files. This the user would have to configure on a per-institution basis, I would think a separate file for each institution would be better, than all embedded in one file.

    You could then conceivably have a CSV importer for investment accounts that can handle a variety of institutions CSV files, and institutions added by creating a specific reader file for them.

    You are hoping the institution is putting enough data in the file to identify how each transaction should be processed.

  25. 145 Posted by David Greene on 15 Dec, 2025 03:03 PM

    David Greene's Avatar

    I really like using my CSV Importer Extension for Fidelity Cash
    Management Account and Fidelity Credit Card. To keep things simple for
    a 'non-techie' like me, sure would be nice if MD would just add a new
    extension called 'CSV Fidelity Investment Importer'. That is all I
    would need.

    On 12/14/25 7:09 PM, dwg wrote:

  26. 146 Posted by mmd on 15 Dec, 2025 03:48 PM

    mmd's Avatar

    If you want to use it now as a script, it is pretty straightforward FWIW.

    Download fidelity.py ( http://fidelity.py/ )

    Moneydance

    Window → Show Developer Console

    Open Script

    Pick fidelity.py ( http://fidelity.py/ )

    Now click Run button on top right hand side of Developer Console window (NOT the Run Snippet button)

    On Mon, Dec 15, 2025 at 9:03 AM, David Greene < [email blocked] > wrote:

  27. 147 Posted by Tom on 15 Dec, 2025 04:26 PM

    Tom's Avatar

    I guess I am done with MD after many years. All my credit card transactions no longer download, and now Fidelity? Without those, I have no reason to use MD. Fidelity Full View will give me a similar overview. I am not going to manually download transactions for ten accounts. Sorry, I know it's not MD's fault.

  28. 148 Posted by dan.tappan on 15 Dec, 2025 05:18 PM

    dan.tappan's Avatar

    The current script doesn't handle short term capital gains. I believe
    the required change is

    incStrings = ['LONG-TERM']

    --->

    incStrings = ['LONG-TERM', 'SHORT-TERM']

    On 12/15/25 10:48 AM, mmd wrote:

  29. 149 Posted by David Greene on 15 Dec, 2025 05:42 PM

    David Greene's Avatar

    Did not see that as an option. Perhaps because I am running Mac
    and/or never downloaded any python scripts before... Really, not a big
    deal, I can wait. I am doing summary postings by using excel pivot
    tables to summarize. Hopefully MD has a future builtin option on the
    way soon. Thanks for the work you folks are doing, extension of MD Support.

    On 12/15/25 9:48 AM, mmd wrote:

  30. 150 Posted by -Kevin N. on 15 Dec, 2025 06:40 PM

    -Kevin N.'s Avatar

    @mmd, @Stuart B and @anyone else involved,

    First off, thank you for your work on the fidelity.py script.

    After clearing some initial hurdles (unrelated to the scripts) I am able to import txns from all Fidelity Investments accounts.

    I noticed that Buy / Reinvestments are displayed as negative values in the Fidelity CSV file. In turn, they are imported as negative values into the Amount column of the register. (see Negative_Values.jpg screenshot)

    The desired behavior would be for the values to be imported / displayed in MD as positive values.
    (see Positive_Values.jpg screenshot)

    Q. Is it possible to include in the scripts a means of reversing the signage for those txns that display negative values?

    I suppose I should also ask if anyone else is observing this behavior?
    And / or maybe if it is the intended behavior.

    -Kevin N.

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

19 Apr, 2026 05:21 PM
19 Apr, 2026 04:24 PM
19 Apr, 2026 03:50 PM
19 Apr, 2026 03:33 PM
19 Apr, 2026 03:30 PM