Moneydance Developer Resources

Extending Moneydance

Moneydance enables advanced users to develop extensions using a free Extension Developer's Kit that is easy to download and use. The developer's kit includes sample code, the necessary libraries to package and sign your extension, and an ANT build file for compiling, packaging, and signing your extension.

The Moneydance API that can be used from your extension code is available here:

Moneydance Core API

Download a copy of the developer's kit version 5.1 now:

Download Developer's Kit

Developer Support

An additional resource is the Extension Development section of The Infinite Kind's support forum. This forum can be used for questions about writing extensions, scripts, and code that works with Moneydance.

Common Issues

Some of the facts to consider when developing Moneydance extensions:

Each extension is self-contained in a single MXT file. A correctly packaged extension is completely contained within an MXT file. Moneydance can add extensions from MXT files stored at moneydance.com or directly from the users hard drive. The Extension Developer's Kit can be used to package and sign your extension.

Every extension includes a digital signature that is verified each time the extension is loaded Every extension must be audited and signed by The Infinite Kind before users will be able to load it into Moneydance. Extensions with invalid or missing signatures will generate an error and will not be loaded unless the user forces the extension to load.

Extensions can access the financial data objects within Moneydance. Extensions have full access to the financial data in Moneydance. They can analyze, edit, and modify the data. Extensions are also notified when application events happen such as opening or closing a file, or modifying a transaction.

Extensions can integrate with the Moneydance user interface to provide a seamless user experience. Extensions can register "features" with the program which create icons on the main toolbar. When the user clicks a toolbar icon, the associated extension is invoked. Extensions can also be notified when the user opens or closes a file, or whenever any part of the data model is modified. In future versions of Moneydance, extensions will be able to register interface components that can be displayed on the Moneydance startup screen.

Extensions can also invoke other features and extensions in Moneydance using Uniform Resource Identifiers (URIs) that identify different resources and services. For example, an extension could call the following to display a net worth report:

    getContext().showURL("moneydance:showreport:NetWorthReport");
or the following to display the edit-reminders window:
    getContext().showURL("moneydance:editreminders");

The URI concept provides the ability to invoke almost any function that is available within Moneydance while maintaining a loose coupling between extensions and the application.

For a list of URIs that can be invoked from within Moneydance see our URI Scheme page.

In addition, extensions can add an item to the home/start page. Basically, to do this you can call:

    getContext().registerHomePageView(this, view)
where 'view' is an object implementing the com.moneydance.apps.md.view.HomePageView interface.

Extensions can receive notifications when certain events occur. To receive these event notifications, override the following method:

    public void handleEvent(String eventURI)

Because events are identified by simple strings, new ones can be added. Some of the events that are fired now include:

  • md:file:opening (file will be opened)
  • md:account:root (homepage was selected)
  • md:file:opened (file was opened)
  • md:file:closing (file will be closed)
  • md:account:select (acount was selected)
  • md:viewreminders (reminders were selected/viewed)