Welcome to my site for Moneydance Extensions and Scripts written in Python
Author: Stuart Beesley - StuWareSoftSystems
NOTE: I AM JUST A USER - I HAVE NO COMMERCIAL AFFILIATION WITH MONEYDANCE
DISCLAIMER: ALWAYS BACKUP YOUR DATA BEFORE MAKING ANY CHANGES - I cannot accept any responsibility from the use of my code
Moneydance allows you to run Python scripts and access its functions via their API. This allows you to perform all sorts of ‘wonderful’ things based on your own financial data.
Python version is actually Jython 2.7 and accesses the Moneydance Java codebase.
My scripts and extensions are identical(ish). The extension version(s) are simply a ‘packaged’ script version. InfiniteKind (the creators of Moneydance) have signed my Extensions.
NOTE: The signed versions hosted at the IK/MD site may be a few builds behind my latest versions. If you require a signed version, then download links are towards the bottom of this page (these also appear in the Extensions>Manage Extensions menu))
The Extensions will only run properly on Moneydance version 2021.1 (build 3056 onwards)… The minimum version to run as standalone scripts is 2019.4 (build 1904)… (if you have installed the extension, but nothing happens when you click the menu, then check your MD version/build) (if you see ‘outdated extension:’ in Moneydance’s console log, then look for an update, or perhaps I have obsoleted the extension)
NOTE: All extensions listed below (except marked with ^^) are listed within the Moneydance Manage Extensions menu - Check there first for updates
ANY NEWER VERSIONS LISTED HERE SHOULD BE CONSIDERED PREVIEW (LATEST) VERSIONS (FULLY WORKING, WITH ENHANCEMENTS, FIXES, AND PREVIEW FEATURES)
Click a link below to download a ZIP file. The ZIP file contains both the Extension (if available) and Script version for you to choose from….
- Extensions have a file extension of *.mxt
- Scripts have a file extension of *.py
To install/run Extensions:
1) Launch Moneydance
2) Double-click the .mxt file (this may not work if you do not have .mxt extensions associated with Moneydance)
- or drag and drop the .mxt file onto the Moneydance left side bar;
- or Extensions, Manage Extensions, add from file to install.
- or Menu>Extensions>add from file>choose <extension_name>.mxt file, then click open/install;
- (Note: The .mxt file must not be renamed. Sometimes downloading/unzipping adds a number to the end of the filename - example: it must be named extensionid.mxt NOT extensionid_2.mxt)
3) Accept any warning(s) that the extension is unsigned (this simply means that Moneydance have not signed / verified my extension). Click Install Extension.
4) Once its installed, restart Moneydance.
5) From now on, just click Menu>Extensions and the name of the Extension
To run Scripts:
1) Load Moneydance. Menu>Window>Show Moneybot Console
2) Open Script>choose <scriptname>.py file
3) Click RUN (and not run snippet)
4) That’s it…. Repeat these steps each time.
^^^Refer to “Script Notes:” at the bottom of this page for details on the new .pyc and $py.class files….
Extension ONLY format (contains only *.mxt file) - Very latest PREVIEW (unsigned) build
- Toolbox: View Moneydance settings, diagnostics, fix issues, change settings and much more…
NOTE: Toolbox has the ability to update your dataset/settings in Update and Advanced mode(s). In the default Basic mode it’s READONLY and VERY useful!
NOTE: Also installs three new Extensions Menu options:
- Move Investment Transactions: Allows you to move the txns you have selected in the visible Investment Register.
- Total Selected Transactions: Will total up the txns you have selected in the visible register.
-
Zap md+/ofx/qif (default) memo fields: Will search for and zap memo fields on downloaded txns when memo matches the downloaded data.
Extension (and Scripts formats) (*.mxt and *.py format) - Very latest PREVIEW (unsigned) builds
- Extract Data: Extract Data: Extract various data to screen / or csv.. (also auto-extract mode): Includes:
- StockGlance2020: Securities/stocks, total by security across investment accounts;
- Reminders; Account register transaction (attachments optional);
- Investment transactions (attachments optional); Security Balances; Currency price history;
- Decrypt / extract raw ‘Trunk’ file; Extract raw data as JSON file; All attachments;
- extension_tester: Demo extension/scripts for coders wanting to build Moneydance Python extensions.
Signed Versions (hosted by Moneydance at InfiniteKind - These builds appear in the Extensions/Manage Extensions… menu)
- Toolbox (signed)
- Extract Data (signed)
- List Future Reminders (signed)
- Custom Balances (net_account_balances) (signed)
VERY LATEST signed Versions (hosted on this site - i.e. NOT InfiniteKind’s site - may be newer than appear (or not available) in Moneydance’s Extensions menu)
- Directory listing of all current and previously official (IK) signed builds
- Toolbox (signed)
- Extract Data (signed)
- List Future Reminders (signed)
- Custom Balances (signed)
- Accounts Categories Mega Search Window (signed) - NOT SUPPORTED POST MD2023.3(5064)
- Security Performance Graph (signed)
Other useful ad-hoc scripts (*.py format only) - Very latest code versions
Useful_Scripts: A zip collection of ad-hoc scripts that can be run individually. Including:
- calculate_moneydance_objs_and_datasetsize.py: Analyse your Moneydance dataset, report on objects, internal file size(s), and list other known datasets…
- extract_all_attachments.py: extract all your attachments out of Moneydance to a folder of your choice
- orphan_attachments.py: scans your attachments and detects if any are orphaned (and other related errors)
- demo_account_currency_rates.py: demo script for beginner coders with some simple Moneydance API calls etc
- demo_calling_import_functions.py: demo script to show how to call deep API importFile() method and bypass UI popups (for headless running)
- ofx_create_new_usaa_bank_custom_profile.py: script that creates a new custom USAA bank logon profile so that it can connect within Moneydance (also built into Toolbox)
- ofx_populate_multiple_userids.py: script that allows you to modify a working OFX profile and populate with multiple UserIDs (also built into Toolbox)
- import_categories.py: script that allows you to import from a CSV file to create new Categories
My Python Extension and coding tips:
- Extension tips: A readme.txt file that contains my tips on creating Python extensions and some coding tips….
- Moneydance Mac Launch Shell Script: A MacOS shell script that launches Moneydance replicating the standard App launch sequence…. But without Apple sandboxing restrictions… You can also therefore change much of the underlying ‘environment’ and java libraries…
- Moneydance basic Windows Launch Shell Script: A basic Windows batch file that launches Moneydance - update with the relevant bits you need from the more complete Mac sh version…
- Moneydance Mac Apple Script Launch Script: A basic Applescript to launch Moneydance…
Experimental / advanced:
It’s possible to load Moneydance components externally. This would not be supported by IK and you do so at your own risk.
As of MD2021.2(3088) you can set an environment variable ‘md_passphrase=’ or ‘md_passphrase_<lowercase_filename>’ and this will bypass the popup ‘Enter your password’ prompt. This means that the headless methods, to access MD data externally will work much more seamlessly. There are examples below on how to do this (with ‘environment_passphrase’ in filename):_
Method 1: Using Jython (for true Java integration) (with a launch script to set up the JVM properly) - See folder contents:
Method 2: Using Python and JPype (sets up the JVM as part of the script) - See folder contents:
- open-mdheadless-jpype: Folder containing Python script using JPype to access Moneydance externally….
########################################################################################################################
^^^Script Notes: *.pyc files are CPython byte code files generated from the .py script. These are “helpers” to the Jython interpreter. Within the .mxt file you may also find a *$py.class file. This is a compiled version of the script for faster launch times. Some of my scripts are large and these “helpers” prevent a “method too large” RuntimeException. You don’t normally need to worry about all this, but if you want to run the .py script manually (e.g. in Moneybot), then please ensure the .pyc file is placed in the same location as the .py script you are running.
You may also find a ‘StuWareSoftSystems_CommonCode.java’ file along with similar named .class files. These are where I have bundled a java class file to deal with .print() type java methods which Jython cannot handle due to name conflicts.
As of Feb 2023 the precompiled versions (*$py.class files) are included with a bootstrap.py loader for faster load times (avoids initial compile on launch). If the bootstrap fails to load this, then it will just run the script…
########################################################################################################################
########################################################################################################################
DEVELOPERS - There is a mini api inside the Custom Balances extension whereby you can retrieve the results of the calculations by row to use in your own extensions. Contact me for details…
########################################################################################################################
Source Code sites - you can freely read / review all my code
Author’s code site: https://github.com/yogi1967/MoneydancePythonScripts
Moneydance’s site for code: https://github.com/TheInfiniteKind/moneydance_open/tree/main/python_scripts/
If you like my tools you can donate to support my work via PayPal (completely optional)
Or perhaps just buy me a “beer” (also via PayPal)
If you would like me to code a Moneydance extension, report, script, or fix for you, (for a fee) then contact me: written_drizzle_0v @ icloud.com (no spaces)
(site last updated 31st July 2024)