MennÄ“ Software Solutions Mennē Software Solutions, LLC
Software that helps

Moneydance Find and Replace Extension

General Information

This handy extension to Moneydance™ allows you to find particular transactions, then replace data. This allows you to consolidate categories, add tags, and fix up the text in transactions. Find and Replace is also helpful for ad hoc reporting. It allows you to rapidly find specific transactions and include or exclude individuals while updating a total amount.


This extension is licensed as freeware, and the source code is also released as open source. Please read the license for the extension. This extension can change your data when Replace is used, so it is important to understand there is no warranty supplied for this extension.

The source code is released under the Apache 2.0 License


In Moneydance, select Extensions -> Manage Extensions... From the resulting list of extensions, click Install next to Find and Replace and continue through the installation process.

Click here to go to the Google Code website hosting source code (in Java) for this and some of the other Moneydance extensions.

Release Notes

Release notes can be read here.


Installation is automatic using the download from within Moneydance process described above.

Note - Prerequisites: This extension requires Java 6 to be installed and be the default version. For the Mac, that means you need to be running OSX 10.5 Update 2 or later. Additionally, you may need to edit your Java Preferences (it is in /Applications/Utilities/) and under the General tab, the "Java Applications" list, drag up the "Java SE 6" version to the top of the list.

For Windows and Linux, please download and install the latest Java SE 6 Runtime from Oracle.

The extension supports U.S. English, U.K. English, French, Italian, German, Spanish, Greek, Norwegian and Brazilian Portuguese locales. You can change locales in Moneydance File -> Preferences (Ctrl+,)


Being freeware software, support is a bit limited. You may report bugs by sending an e-mail to 'bugs at mennesoft dot com'.


The Find and Replace extension allows you to quickly locate transactions and to replace data systematically. It has much of the same functionality as the built-in Find feature or the built-in Advanced Search feature, with the additional power to perform numerous tasks such as merging multiple categories into a single category, marking certain transactions with tags, and many more. Most operations can be done with just a few clicks after you have located the transactions you wish to change.

Another handy feature is ad hoc reporting. After finding transactions, the Additions, Subtractions and Total summary located above the table is updated. If you deselect individual transactions in the table, the summary is updated. In this way you can quickly find particular summary amounts even for complex situations.

Home Page View

Home Page View

The optional home page view offers a convenient way to enter a free text search across all accounts and categories for the given text. Entering any text and pressing Enter (or clicking the Find button) will launch the extension and immediately perform the search. You can also launch the extension by just clicking the Find button without entering any text. A third way to open the extension is by selecting Find and Replace from the Extensions menu. You may open as many Find and Replace windows as you would like.

Main Window

Click here for a screenshot of the extension on a Windows PC.

There are three major parts to the interface: the Find panel, the Replace panel, and the Find Results panel.

Find Panel

The Find panel offers multiple criteria to search on which can be combined or used independently of each other. For example, a broad Free Text search can be done without utilizing any additional options in the panel. If one or more Accounts are selected, the Free Text search can be restricted to just those accounts.

At the upper right of this panel is the Memorized Searches list. This is a list of names associated with both Find settings and Replace settings. Clicking on it brings up a menu:

Save As...
Allows you to save your current find and replace settings as a unique set, with a name you provide. The name must not be blank and must be unique. A list of the current saved search names is given to help you remember. Clicking on a name will put that in the name field, be sure to change it to be unique before clicking OK.
Either clicking on the name or on the Load option will restore all the Find and Replace settings that were saved with the name.
Select Update to save the current settings under the respective name, updating any settings previously saved under that name.
Select Delete to remove the saved settings from your file. There is no "undo" for this action, so be sure that is what you'd like to do.


The remainder of the settings in the Find panel allow you to specify the search criteria to look for transactions.

Combine Criteria
Select And to require that all the selected criteria must be met for each transaction to be matched; or select Or to allow any criteria to match to include a transaction in the results.
Select one or more accounts to use in the search. Moneydance is a double-entry accounting system, which means each split transaction has two sides, with an "account" on each side. This "account" can either be an Account (such as banking or checking) or a Category, it doesn't matter. (Accounts and Categories are very nearly the same thing, but they are treated slightly differently for reporting purposes.) Note that even a transaction in your register that does not say "- # splits-" (and instead shows a Category account) still has a split transaction. When a parent transaction has only one split, Moneydance displays the split information in the register for convenience.

The Find and Replace extension will match split transactions to an Account no matter which side of the split transaction the account resides. For example, let's say you are searching for purchases made at Walgreens. (Click here for a screenshot of a search.) We have selected both an Account and a Category as our search criteria, as well as "walg" in the Free Text field. As you can see in the results, the first transaction in the list was actually entered in the Household category account register. The parent transaction for that split was entered in the Household account register, whereas the parent transactions for the other three matching splits were entered in the Anchor Checking account register.

The Find and Replace extension will match splits to the Accounts no matter which side of the split transaction the account resides.

Press Ctrl+Shift-S or ⇧⌘S to activate the account select window.
Select one or more categories to which the split transaction must be assigned in order to include the transaction. To include all accounts along with the categories select Include Transfers (located at the lower left of the Replace panel). See the description above under Accounts for a description of how categories and accounts are treated nearly the same. In effect, they are kept as separate criteria in order to keep the list of accounts smaller, which makes it easier to choose the ones you want. Otherwise they are completely interchangeable.

Press Ctrl+Shift-T or ⇧⌘T to activate the category select window.
Select a minimum and maximum amount for the transaction to match. There is also now a currency selector to allow you to specify which currency the amount search should be in. Transaction amounts are converted to this currency and then it is decided whether the transaction matches. For example, if you put in search amounts 15.00 to 17.00 and select euro for the currency, the system will still locate a $22.40 USD transaction (with a $1.40 per euro exchange rate), because it first converts $22.40 USD to €16.00, which meets the search criteria.

There is a special "currency" you can select called "Shares". This setting will work only in security accounts, and will not perform any sort of conversion on the transaction amount. Instead, it will look for investment transactions (any kind of security) that have a share quantity that matches the amount criteria.

It does not matter if you enter negative or positive values in the amounts, either one will locate both deposits and payments in the amount range. In other words, the absolute value of the amounts are used.
Set a date range for the transaction to match. You can use pre-set options such as Year to Date, Last Year, etc. from the drop-down box or enter your own date range. Search is available on the tax date field by selecting Use Tax Date. (The default searches on the transaction date field.)
Free Text
Enter the text you would like to find. By default the extension will automatically create a case-insensitive search for the text you enter. You can also use Regular Expressions. Start your text with an equals sign (=) and enter a Regular Expression that will be used with the Matcher.find() method to locate transactions.

You can search for blank fields as well. Just enter an equals sign ('=') only in the free text field, and transactions that contain a blank for the selected fields will be matched.

The Description, Memo and Check# checkboxes allow you to choose whether the search will include the Description field which is used by both parent transactions and splits, or the Memo or Check# field, which is used by parent transactions only. You may search any or all fields.

The Include Splits option allows the search to look within parent transactions, and if a match is found, to include all of the split transactions for that parent as well. For example, let's say you are searching for splits with the category Salary for parent transactions from Acme, Inc. Since the name "Acme" may not be in the Description field for all the splits, searching for transactions with free text "Acme" and category Salary won't find all the pertinent transactions. By selecting Include Splits, however, the system will find splits with the category Salary, as well as check the parent transaction and match to the word "Acme," so the split transaction will be included in the results. The split transaction is included even if its description does not contain the word "Acme".
Select the tags to require for the transaction to match. You may select a list of tags, any of which will match (Or) or a list of tags all of which must match (And). You may also select that the list must list exactly (Exact), which will allow you to screen out other tags. For example, let's say you have 3 tags defined as "One", "Two" and "Three". If you enter "One, Two" in the tags list and click Find, the system will match transactions as follows: Or will match any transaction with either "One" or "Two" or both, And will match any transaction that contains both "One" and "Two", including transactions that have all three tags. Activating Exact will only match transactions that have "One" and "Two" and no other tags.

If the list of tags to require is empty, but this criterion is still in use, then all transactions will match if Or is selected. If And is selected and the list is blank, then only transactions that have no tags will be matched.

Clicking All will select all defined tags, None will remove all tags from the selected list.
Select whether Uncleared, Reconciling, or Cleared transactions should be matched.

Replace Panel

The Replace panel allows you to easily modify multiple variables for a single or group of transactions.

Select a category to apply to the matched transactions. This is applied only to the matching split transactions.
Enter an amount to apply to the matched transactions. This is applied only to the matching split transactions. A currency selector is provided here as well. The value you enter will be considered to be in that currency. If the split transaction that has this amount applied to it is in a different currency, a conversion is made to the split account's currency (on both sides of the transaction).

If you enter a negative value as the replacement amount, the sign of the replaced transaction will change. For example, if you replace a payment of $20.00 with the replacement amount of -$35.00, it will change that transaction into a deposit of $35.
Enter a description to apply to the matched transactions.

The Found Text Only checkbox controls whether or not the entire description is replaced. If not selected, the entire description is replaced with the given text. If selected, only the portion of the description that matches the Free Text find criterion will be replaced.
Modify Tags
You may add tags, remove tags, and replace the tag set for the matched transactions with these controls. This is applied only to the matching split transactions.
Enter a memo to apply to the matched transactions. This is applied only to the matching parent transactions.

The Found Text Only checkbox controls whether or not the entire memo is replaced. If not selected, the entire memo is replaced with the given text. If selected, only the portion of the memo that matches the Free Text find criterion will be replaced.
Enter text to apply to the check number field of the matched transactions. This is applied only to the matching parent transactions.

The Found Text Only checkbox controls whether or not the entire check number is replaced. If not selected, the entire check number is replaced with the given text. If selected, only the portion of the check number that matches the Free Text find criterion will be replaced.
Include Transfers
This setting applies to both Find and Replace panels. If selected, then the Find category list and the Replace category lists will include all accounts and categories in the file. This allows you to search for transfer transactions as well as replace categories with accounts.

Press Ctrl+Shift-I or ⇧⌘I to toggle.

Results Table

The matching transactions are listed in the Find Results table. There are several features of note for this table:

Consolidate Splits
Shows either individual split transactions or the parent transactions. When selected or on, splits are combined together by the parent transactions. When not selected or off (the default), split transactions are shown individually. Note that this also affects the Additions, Subtractions and Total amounts above the table. If the search criteria match only one of several splits in a parent transaction, the entire parent amount is included in the amounts if Consolidate splits is selected. Only the matching split amount is included if it is not selected.

When Consolidate Splits is selected, the Splits As Memos mode cannot be used.
Splits as Memos
Displays the split transaction description as if it were a memo instead of a description, for those transactions with two or more splits. The description for those transactions is taken from the parent transaction. This applies to the Results table as well as the tooltip and the export to Clipboard feature.

When Splits As Memos is selected, the Consolidate Splits mode cannot be used.


Locates transactions that match the settings in the Find Panel and lists them in the results table. If no matches are found, the table will have a single entry with "None" in the Description field.

Press Ctrl+F or ⌘F to activate.
Replaces the data in the currently selected transaction according to the settings in the Replace Panel. If there are additional transactions, the selection is moved to the next transaction.

Press Ctrl+Shift-R or ⇧⌘R to activate.
Replace All
Replaces the data in all matched transactions listed in the Results Table according to the settings in the Replace Panel.

Press Ctrl+Shift-P or ⇧⌘P to activate.
Mark All
All checkboxes in the Find Results table are set to selected, meaning the transaction will be included in the Replace command.
Mark None
All checkboxes in the Find Results table are set to deselected, meaning none of the transactions will be included in the Replace command.
Go To Transaction
Performs the same function as the Moneydance Go To Transaction function in the Find window.

Double click a transaction or select a transaction and press Ctrl+O or ⌘O to activate.
Copies the summary and the contents of the table as tab-delimited text to the system Clipboard. This adds "hidden" columns such as Check# and Memo. It also adds another "amount" column (in English, "Amount 2") that does not convert the amount to the base currency. This is useful for investment transactions as it shows the number of shares, or if the category/destination account uses a different currency. Additionally it adds a third column (in English, "Amount 3") with the value in the parent transaction account's currency. This means you have access to the value in the base currency as well as the currency used in the accounts on both sides of the transaction.

Finally, it adds a column with a '✓' character if the row is selected / marked / checked, or a blank if it is not.

Press Ctrl+C or ⌘C to activate.
User Guide
Brings up this page.
The results and all search criteria are reverted back to the defaults. This allows you to start over with a new search without leaving the dialog.
All changes made by Replace or Replace All are committed and recorded in the data, and the Find and Replace window refreshes as if you ran the same Find again. The window will not exit. This button is disabled until you have made at least one replacement operation.
No additional changes are made to the data and the Find and Replace window closes.