## Introduction

Money Manager Ex (MMEX) is a free/libre, open-source, cross-platform, easy-to-use personal finance software. It helps organize finances and track cash flow.

MMEX includes all the basic features that 90% of users would want to see in a personal finance application. The design goals are to concentrate on simplicity and user-friendliness – an application that can be used everyday.

MMEX is financial management system for anyone to track money, currency, capital assets, spending habits. MMEX is based on simple principles, to allow anyone with little, to no knowledge of finance and general bookkeeping to successfully manage their finances. MMEX does this by modeling the real financial world, to help the user maintain personal finances. MMEX is gratis (without payment or charge) and open-source software.

The primary goal of MMEX is to simplify the process of tracking financial information, in an easy to use program that can be used as regularly as necessary, to help track where money comes from and more importantly, where money goes, in order to make better informed financial decisions.

MMEX could be thought of as a computer checkbook which enables the balancing of accounts and to organize, manage and generate reports for finances.

MMEX also helps keep abreast of financial worth.

The purpose of this manual is to give the reader some basic instructions for using MMEX. This instruction manual will evolve as the program evolves. So check the help system with each update and see what’s new and how to better utilize MMEX.

## Features

- Fast, intuitive and functional
- Checking, credit card, savings, stock investment and asset accounts
- Unlimited nested multi-level subcategory support
- Multiple tags per split transaction support
- Reminders for scheduled bills and deposits
- Budgeting and cash flow forecasting
- Simple one-click reporting with graphs and charts
- Import data from Comma-Separated Values (CSV) and Quicken Interchange Format (QIF) files
- Custom Reports
- Installation not required: portable versions run from a USB or a flash drive
- Nonproprietary SQLite database with optional Advanced Encryption Standard (AES)
- Cross-platform, available for desktop (GNU/Linux, macOS, Windows) and mobile (Android) operating systems
- International language support: Crowdin, Desktop icon, AppData, Filetype associations, User interface language

## Working towards better Financial Health

Becoming financially organized requires a certain amount of discipline. Financial management can quickly become complicated when there is no clear understanding of how much money we receive as income versus how much money we spend as expenses.

Debt usually occurs when our cash flow becomes limited because expenses exceed income. In these situations, we are often forced to borrow money in order to maintain sufficient cash flow to purchase essential goods.

The first step toward better financial health is maintaining accurate and up-to-date financial records. Only when we clearly understand where our money goes can we make informed decisions about where to reduce expenses during periods of financial strain. And if borrowing becomes necessary, we will also be better equipped to manage our debts.

Did you realize you spent $600 on DVD movies last year? How many times did you actually watch them? Looking back, would that $600 have been better spent on the unexpected car maintenance that came up yesterday? There is no right or wrong answer when it comes to how you choose to spend your money. After all, you earned it and have every right to spend it as you see fit. However, it is always possible to make your money work more efficiently and get the most value out of every dollar spent.

This is where personal finance software comes into play. Such tools help organize and analyze financial data, providing clearer insight into what is really happening. Always remember that software is only as good as the data it processes: incorrect data will inevitably produce incorrect results. But if you have already started considering the use of personal finance software, you are well on your way to making every dollar count.

Let’s now move on and see how to work with Money Manager Ex.

## MMEX Concepts

Money Manager Ex models the real world in order to help users manage their personal finances.

In everyday life, we usually receive money from someone in exchange for services we provide or products we sell. In MMEX, this is considered an Income or a Deposit. When we purchase goods or use services, the money we spend is considered an Expense or a Withdrawal. In MMEX, the people or organizations that give us money or receive our money are referred to as Payees.

Since we generally do not spend all the money we receive, we obviously need a place to store it. This may be a financial institution, several institutions, or simply cash in our pocket. MMEX refers to these places as Accounts.

Whenever we spend or receive money, this is recorded as a Transaction, and the reason for the income or expense is represented by a Category. In some situations, money needs to be moved from one place to another, such as withdrawing cash from an ATM (from a bank account to cash). This type of transaction is known as a Transfer.

This situation can be simplified as shown in the following diagram:

Another important aspect to consider is the currency used to perform transactions.

With all these elements to keep track of, MMEX uses a database to store and link all this information together.

### Recommendations

When encrypting your database, remember your password.

The database generated by MMEX, known as the `.mmb` file, becomes an important file that must be protected. Depending on your needs, encryption can be used as a security measure, resulting in an encrypted `.emb` database. This allows a password to be attached to the database, which will be required every time MMEX is opened.

As with any computer system, the data we generate is important and must be protected against system failures. MMEX includes a backup system that can automatically create dated backup copies when the database is opened and/or when changes are detected. Up to four backup copies are retained for each database.

- Always back up your `.mmb` or `.emb` database file regularly.
- Always keep backup copies on separate devices to protect against hardware failure.
- When upgrading to a new version of MMEX, make sure to back up your database file before performing the update.
- Use the menu ``Tools` → `Settings` → `Other`` to configure the desired backup level.

## Create and Manage a New Database

In MMEX, all financial information (Accounts, Transactions, Categories, Currencies, Tags, Attachments, Settings, and more) is stored inside a single Database. This chapter explains how to create a new database, how to manage it properly, how to use encryption, how to open it on other devices, and how to perform reliable backups.

### Introduction to MMEX Databases

An MMEX database is a SQLite file and can use two different extensions:

- `.mmb` – standard, unencrypted format;
- `.emb` – encrypted format protected by a password.

MMEX allows the use of multiple databases (personal, family, business, testing, etc.). The name of the currently open database is always visible in the application’s title bar.

At startup, MMEX automatically attempts to load the last database that was used. If no database is found, the user is prompted to open an existing database or create a new one.

If you use multiple databases, adopt a clear naming convention (e.g. `Personal_2025.mmb`, `Business.emb`).

This is especially useful when working with multiple databases: the title bar makes it easy to immediately identify which database is currently open, reducing the risk of entering or modifying data in the wrong file.

### Create a New Database (.mmb)

To create a new database, choose:

``File` → `New Database…``

You will be asked to specify:

- the folder where the file will be saved;
- the file name (e.g. `Finances.mmb`).

Once the file is saved, the New Database Wizard will start.

The wizard guides the user through the initial setup steps, helping not only to configure the database, but also to create the first account, which is required before transactions can be recorded.

#### Initial Settings: Base Currency and User Name

The wizard requires two key pieces of information:

- Base Currency → the default currency for all new accounts;
- User Name (optional) → displayed on the Home Page and in some reports.

MMEX includes a set of predefined currencies, usually aligned with the user’s country settings. The Base Currency represents the main reference currency for the database: all reports and overall totals are calculated using this currency.

It is possible to create accounts in different currencies from the Base Currency. MMEX automatically manages exchange rates, allowing amounts expressed in different currencies to be compared correctly.

A complete explanation of currency management, exchange rates, and conversions is provided in the dedicated Currencies section.

The Base Currency affects reports and exchange rate conversions.

The Base Currency also allows accounts in different currencies to be managed while maintaining a consistent overall view of the total value.

These settings can be changed later via:

``Tools` → `Settings…``

### Unencrypted Databases (.mmb)

Because `.mmb` files are not protected, anyone who obtains the file can read its data.

`.mmb` files are standard SQLite databases without encryption. They can be opened by any MMEX installation and even by third-party tools.

- Ideal for personal use on secure private computers;
- No password required;
- Slightly faster compared to encrypted files.

### Encrypted Databases (.emb)

`.emb` files use AES encryption and require a password to open. They are strongly recommended when storing the database in the cloud, transferring it between devices, or storing it on shared computers.

- Full protection of financial information;
- Access requires entering the correct password;
- Fully compatible with all MMEX features.

If the password is lost, the encrypted database cannot be recovered.

#### Convert from .mmb to .emb

To convert an existing unencrypted database:

``File` → `Save Database As…``

After conversion, the original `.mmb` file remains on disk: delete it manually if it is no longer required.

Choose Encrypted Database (.emb).

#### Convert from .emb to .mmb

Open the encrypted file, enter the password, then save it as:

``File` → `Save Database As…``

### Opening a Database on Another Device

`.mmb` and `.emb` files are not device-locked. You can copy them to any computer, cloud service, NAS, or USB drive and open them normally.

Use the same or a newer version of MMEX across devices to avoid compatibility issues.

- Copy the file to the new device;
- Open it via `File → Open Database…`;
- Enter the password if it is encrypted.

### Common Problems and Solutions

Issue | Cause | Solution
--- | --- | ---
Password not accepted | Incorrect case or keyboard layout | Check Caps Lock and keyboard language
Corrupted file | Application interrupted while saving | Restore from a backup
Version mismatch | Older version of MMEX cannot read new DB format | Update MMEX

### Differences Between .mmb and .emb

Characteristic | .mmb | .emb
--- | --- | ---
Security | Low | High (encrypted)
Password required | No | Yes
Performance | Faster | Slight overhead
External access | Possible via SQLite tools | Not possible

### Managing Multiple Databases

You can switch between recently used databases via:

``File` → `Recent Files…``

### Database Backup

MMEX generates backup copies (`.bak` files) to protect your data from errors, unexpected shutdowns, corruption, or incompatibilities with older database formats.

#### Backup Settings

Backup options are located under:

``Tools` → `Settings` → `Other``

The available options are:

- Backup database on startup: creates a backup only if changes were made since the previous session.
- Backup database on exit: creates a backup only if changes were made during the current session.
- Max Files: maximum number of backup files to keep.
- Days to retain deleted transactions: number of days before permanently removing deleted transactions.

Backup files are always stored in the same folder as the main database. MMEX does not currently allow selecting a different backup location.

#### How Backup Files Are Generated

The backup filename is always based on the name of the main database (`dbname.mmb`), with a suffix added automatically by MMEX:

- On startup: `dbname_start_YYYY-MM-DD.bak`
- On exit: `dbname_update_YYYY-MM-DD.bak`

A backup is created only when the database has been modified.

#### Backups Created on the Same Day

During a single day, MMEX may create up to:

- one `_start_YYYY-MM-DD.bak` file (backup on startup), and
- one `_update_YYYY-MM-DD.bak` file (backup on exit).

Once a backup for that day has been created, MMEX does not update or overwrite it. Backup files are static snapshots of the database at the time they were created.

If additional changes are made during the same day:

- only the main database file (`.mmb`) is updated,
- the existing `.bak` files remain unchanged,
- MMEX does not create further backups on the same date.

This behavior prevents the folder from filling with redundant backups while keeping a single daily snapshot.

#### .bak Files

A `.bak` file is a static copy of the database as it existed at a specific moment. MMEX never modifies or overwrites existing backup files.

MMEX cannot open `.bak` files directly. To restore one, rename it to `dbname.mmb`.

#### How to Restore a Backup Safely

1. Close MMEX.
2. Locate the folder containing the database and its backups.
3. Rename the main database (`dbname.mmb`) to something like:
   `Last_dbname.mmb` to avoid filename conflicts.
4. Make a copy of the backup you want to restore (right-click → copy → paste).
5. Rename the copied backup from:
   `dbname_start_YYYY-MM-DD.bak` or `dbname_update_YYYY-MM-DD.bak`
   to:
   `dbname.mmb`
6. Open the renamed file using `File → Open Database…`.

This process ensures that your active database is preserved and prevents accidental overwriting.

#### Backups as Historical Snapshots

Opening an older backup may cause MMEX to automatically apply scheduled transactions that fall between the backup date and the current date.

To keep a historical snapshot unchanged, enable “Ask user to enter the payment” in all scheduled transactions.

- Restore the backup into a separate file.
- Allow scheduled transactions to be applied.
- Sort All Transactions by Last Updated.
- Delete the automatically added scheduled transactions.

#### Immutable Backups

MMEX cannot mark a database file as read-only, but operating systems can.

To preserve a backup permanently, store the `.bak` file in a read-only location such as a write-protected USB drive.

#### Common Backup Issues

Issue | Cause | Solution
--- | --- | ---
No .bak files created | Backups disabled or no database changes made | Check Tools → Settings → Other
Very long filenames | A backup file was mistakenly opened as the main database | Always use the `.mmb` file as your active database
Too many .bak files | Max Files set too high | Reduce the limit or clean older backups manually

#### Best Practices

- Keep 5–10 rotating backups.
- Verify periodically that backups are generated correctly.
- Create a manual backup before major changes.
- Store backups on another drive or cloud service for safety.

Consider your `.mmb`/`.emb` file as your active workspace and your `.bak` files as your insurance.

## Creating New Accounts

When creating a new database file, you will automatically be requested to create a new account.

Use the toolbar icon for quick access to the Add Account Wizard.

To manually create a new account, from the menu, select ``Accounts` → `New Account…``.

This will bring up the Add Account Wizard. The wizard will assist in collecting the important information of the Name and Type of Account. The Account Type cannot be changed once it has been created, but the account name can be modified later when editing the account information.

The wizard guides the user through the initial setup steps required to start working with MMEX and ensures that at least one account is properly created before transactions can be recorded.

Name of the Account: This is a required field. The recommendation is to name your accounts uniquely and in relation to real-world accounts. Example: With CitiBank, we have a Savings account and a credit card Visa account. You could name your accounts as CitiBank Savings and Citibank Visa.

Type of Account: MMEX supports several types of accounts.

Checking Account
  This is the most common type of account used in MMEX and represents standard bank accounts. It can handle most everyday account types, such as checking accounts, savings accounts, and credit card accounts. Also known as a Bank Account, it supports three kinds of transactions: withdrawals, deposits, and transfers.
Term Accounts
  Term Accounts are similar to Checking Accounts, with the difference that they appear in a separate section on the Dashboard and can be shown or hidden during normal daily use.
  These accounts are intended for specialized financial products such as cash term accounts, mortgage loans, personal loans, or other accounts with regular income or expenses that need to be tracked over time. They have their own balance section on the Dashboard and also support withdrawals, deposits, and transfers.
Investment Account
  Investment Accounts allow you to track investments such as stocks, bonds, mutual funds, and other financial instruments you may own. This account type is designed specifically for monitoring investment holdings and performance over time.

To properly set up accounts, you should have balance information for the accounts you want to add to MMEX. You can get this information from your most recent bank, investment and credit card statements. To track additional information about this account, optionally you can enter your account details such as account number, institution, website, contact information, and access details. You can enter additional notes about the account in the notes field.

Most accounts have some kind of balance in them, for example say in a credit card account, you have a current balance of $2,304.67, you could put that value in the initial balance field. From that point forward, you only need to add transactions that occurred after that date.

The Account Status can be set to Open or Closed. Closed accounts are just that. They are no longer active. Setting this status is just a way to declutter your view in the Navigator. Permanent settings are made by changing the View on the Menu, ``Tools` → `Settings…``, you can hide the closed accounts. See Navigator Tips.

Currency: This is initially set to the database Base Currency setting which was initially set when creating the database. You can set the currency that is associated with this account and can be different to the base currency.

The exchange rate for the currency can be changed using the menu: ``Tools` → `Currency Manager…``.

Example: You live in the USA using US Dollars, and have an Italian bank account using the Euro. Most of your accounts are in USD. What is the real value of your Italian bank account? By changing the exchange rate for the Italian Euro, you can get the correct value of your accounts.

You can also mark accounts as a Favorite Account. This again is used to change the accounts that are visible in the Navigator. See Navigator Tips.

#### Account Setup Example

We have a savings account with $1,250, a check account with $500, a MasterCard owing $250, a Visa Card owing $475, a home mortgage loan of $230,965 and an education fund to send the children to college in the future currently at $5,000 earning interest.

We would set up the following accounts:

Account Type | Account Name | Initial Balance
--- | --- | ---
Check/Savings | Savings | $1,250.00
Check | $500.00
MasterCard | -$250.00
Visa Card | -$475.00
Term | Home Mortgage | -$230,965.00
Education Fund | $5,000.00

On the Dashboard the balances would be $1,025 for Bank accounts, and $-225,965 for Term Accounts

When a payment is made from your Savings Account to your MasterCard with a Transfer Transaction the balance on the Dashboard remains the same. When a payment is made from your savings to your home mortgage, the balance on the Dashboard will reflect the payment. Now you can determine the amount of money you have on a day to day basis. Regular payments can also be set up from your savings account to your mortgage account using Scheduled Transactions.

#### Navigator Tips

As more accounts are created the Navigator and Dashboard can become very large.

- Expand/Contract any account branches using the +/- nodes on the Navigator.
- Using a mouse right-click on any account name in the Navigator, will allow all accounts or only favorite accounts to be shown, temporarily changing the permanent settings, as well as other useful settings.
- These views can be temporarily changed to show or hide the appropriate section. To make the change permanent, change the setting using the menu: ``Tools` → `Settings…` → `View``.

### Editing Account Information

Once you have created an account, you can edit any of the account information fields in the following ways:

- Using menu ``Accounts` → `Edit Account…``: The list of accounts will be displayed where the required account is selected.
- Selecting the account name in the Navigator: Right-click to bring up the contextual menu and select ``Edit Account…``.

This will bring up the account information dialog where the required fields can be changed.

Edit the account details then use the ``OK`` button to save the account information.

## Creating New Transactions

Once you have created a new account, and selected the required account from the Navigator, or the Dashboard, the displayed account can have new transactions added as follows:

- Using the ``New`` button at the bottom of the Account View screen
- By selecting an existing transaction and using the mouse right-click, and select the appropriate action in the contextual menu.

### New/Edit Transaction dialog

A dialog will appear for new transactions. Use this dialog to enter the following details:

Date
  This is generally the date of the transaction. Defaults to current day and can be changed.
Status
  The default is None, but can be changed to Reconciled by the options settings.
Type
  Transaction Types:
  Withdrawal
    is one where one makes a payment and is an expense.
  Deposit
    is one where money is received and is an income.
  Transfer
    is one where a withdrawal is made from one account and is deposited into another account. This type of transaction is not included in Income/Expense calculations.
Amount
  Enter the amount for the transaction. The second amount field is associated with the Advanced Checkbox and will be activated only for Transfer transactions.
Advanced
  For a transfer transaction, when the amount in the From Account is different to the To Account, the difference is recorded in the separate fields. This can be used to allow for currency rate changes.
Transaction Status
  Unreconciled
    When you enter a transaction, it initially is in the state of Unreconciled. Which means the transaction has not been reconciled with your bank/credit card company’s balance.
  Reconciled
    Once the transaction is checked and verified with a credit card company’s balance information, it can be marked as reconciled.
  Void
    If you entered a transaction that later became invalid or you canceled the transaction, instead of deleting the transaction you can also mark it as void so you have a record of the transaction.
  Flag For Follow Up
    This status marks transactions as needing more action. For example, you receive a balance statement from the financial institution and you notice that the transaction amount is different between what you recorded and what is in the statement. You can mark it as flag for follow up so that you can followup with the financial institution.
  Duplicate
    The status will be automatically be changed to duplicate if it is recognized as such.
Payee
  This is a person or an organization to whom the money goes or comes from.
  Clicking the payee button opens up the payee drop-down list. You can select the payee from the list or create a new payee for immediate use.
Category
  Do not use the same category for Deposit and Withdrawal transactions.
  Category selects the kind of expense/income for the transaction.
  Clicking the category button opens up the category drop-down list. You can select the category from the list or create a new category for immediate use.
Split
  This checkbox will activate the Split Transaction dialog
  Split Transaction allows multiple categories to be recorded for a single transaction.
  Can allow a transaction to have Income and Expense categories recorded as deposit and withdrawals, provided the overall transaction type is observed and remains positive, for Deposit and Withdrawal transactions.
Transaction number
  This field to enter any kind of number associated with the transaction like check number.
Notes
  This field can be used to record any special notes with regards to the transaction. The button under Notes can be used to select commonly used field notes.

### Editing and Updating Transactions

Editing existing transactions can be achieved in a number of ways:

- By selecting the transaction and then clicking the ``Edit`` button.
- Double-clicking the selected transaction.
- Pressing ``Enter`` on the selection.

Any of these actions will open the transaction dialog box containing the details of the selected transaction. Make the changes and click ``OK`` to save the changes.

### Transaction Filtering in Accounts

Caution is advised when deleting transactions.

Transactions can be filtered by either fixed filters or, by using the Transaction Filter in the Account View. This will allow the user to limit the visible transactions to those defined by the appropriate filter. These filtered transactions can then be easily selected and individually modified.

These visible transactions can also be deleted in bulk if so desired.

### Reconciling and Balancing Transactions

To mark a transaction as reconciled in the account view, just select the transaction and press the ``R`` key. To mark a transaction as unreconciled, just select the transaction and press the ``U`` key.

Unreconciled Transactions
  This means that they have not been verified with the statement from the financial institution.
Reconciled Transactions
  A transaction can be considered reconciled when the details of the transaction match that from the financial institution.

In MMEX, reconciled and unreconciled transactions are shown by different icons. When bank details are not checked against a bank statement, the user can select to set the default as Reconciled when creating transactions in the Settings.

#### Reconcile dialog

For a convinient reconcile, a reconcile dialog is provided.

##### Opening the dialog

It can be either openend from the navigator right-click contextual menu of the account:

Or directly in the account view with the provided button:

##### Dialog window

The dialog displays all pending transactions up to the current date sorted in two columns: one for withdrawels (payments and including transfers) and one for deposits including incoming transfers:

A transaction can also be selected and deselected for reconcile with `SPACE`.
With the `↓` and `↑` keys the list items can be selected,
With the `→` and `←` the lists will be changed.

- In the field `Statement ending` the final amount of the last statement can be entered.
- The field `difference` shows the difference between the cleared balance and the `Statement ending` value.
- Incoming transfers are prefixed with `'<'`, outging transfers with `'>'`.
- An unchecked transaction is selected with a left mouse click and included in the reconcile. A mouse click on a checked transaction will deselect the transaction from the reconcile.
- With ``Toggle all`` all not marked transactions are checked, or if all are checked, all transactions are unchecked.
- With ``Edit`` (or a right mouse click) the selected transaction can be modified without interrupting the reconcile.
- With ``New`` (or a right mouse click in the empty list area) missing transactions can be added.
- With ``Reconcile`` all marked transactions will be set into the state "Reconciled" and the dialog is closed.
- With ``Reconcile later`` all marked transactions will be set into the state "Follow-Up" and the dialog is closed.

##### Dialog settings

With the settings button in top right corner, the display of the reconcile dialog can be configured:

These options are stored and reapplied with the next invokement.

Per default "void" transactions are not shown in the dialog.

### Flagging transactions for followup

To mark a transaction as requiring followup, just select the transaction and press the `F` key.

Some transactions might have some issues that you want to follow up on. Mark these as with status of flag for followup. This is indicated in MMEX with a different icon.

### Custom Colors

The user can specify 7 custom colors in under the Transaction Colors heading in the View section of the Settings. In the checking/term panel, pressing ``Ctrl`+`1`` through ``Ctrl`+`7`` sets the transaction entry color to the user specified custom color. Pressing ``Ctrl`+`0`` will change it back to the MMEX default transaction color.

## Custom Fields

Custom Fields are user-defined advanced fields that add structured extra data to transactions (and, depending on the MMEX version, to other objects). They become especially powerful when combined with CSV/XML Import/Export and Reports: you can preserve “extra columns” coming from banks/Excel/other finance apps and turn them into data you can filter, display, and reuse consistently over time.

In MMEX, a transaction already has standard fields (Date, Payee, Category, Amount, Notes, etc.). In real life, however, information is often needed that does not have a natural place in these fields: a case ID, a payment method, an internal code, a project, a contract, a due date, a tag-based classification, a bank balance reported in the CSV, or the transaction type used by the bank (DD, CHQ, BGC…). Custom Fields are designed for exactly this purpose: they turn “informal” columns into consistent data, so you can import them, filter them, display them as columns, and use them in reports.

### Why Custom Fields were introduced

If you are currently “overusing” Notes to store codes, IDs, references, or pseudo-tags, Custom Fields are often the cleaner long-term solution: Notes remain free text, while Custom Fields become proper extra columns.

Many users import years of history from other finance apps or from bank/Excel exports. Those files frequently include extra columns (tags, comments, transaction type, references, balances, custom flags) that are extremely valuable for analysis and reconciliation, but cannot be reliably stored inside standard fields without losing meaning (for example, forcing a bank “transaction type” into Category is a compromise). Custom Fields were introduced to:

- preserve extra columns during imports (CSV/XML) without stuffing everything into Notes;
- separate different concepts (Category ≠ Payment method ≠ Project ≠ Bank transaction type);
- enable advanced filters and reporting based on consistent structured data;
- adapt MMEX to personal or semi-professional workflows (projects, cases, cost centers).

### Key concepts (before you start)

A good Custom Fields design starts with: “What report do I want in 6 months?” If you need reliable filters, pick types and rules that prevent inconsistent input.

Before creating dozens of fields, it is advisable to define three key concepts:

- Definition: the field exists because you create it in the Custom Fields Manager (name/description, type, options, validation, tooltip…).
- Value: what you enter for each transaction (e.g. “Card”, “CASE-2025-0142”, “Me”, “Warranty 24 months”).
- Consistency: data is useful only if it stays consistent (choice lists, boolean, dates, RegEx rules). Otherwise, it just becomes “another note”.

### Managing fields: Custom Fields Manager

Open it from: ``Tools` → `Custom Fields Manager…``

In the Custom Fields Manager you create, edit, and remove field definitions. A definition typically includes:

- Description/Name – the label shown in the transaction editor;
- Type – drives controls and validation (String, Integer, Decimal, Boolean, Date, Time, Single choice, Multi choice);
- Default value – helps manual entry when the value is often the same;
- RegEx – optional validation pattern (IDs, codes, internal formats);
- Tooltip – short guidance shown on hover;
- Panel’s column (UDFC01…UDFC05) – map the field to a visible transaction-panel column;
- Massive content update – bulk find/replace to normalize existing values.

Overview of the Custom Fields Manager with three example fields: Payment method (Single choice), Reference (Text with RegEx) and Warranty end (Date), with panel columns assigned to UDFC01 and UDFC02.
Renaming a field’s Description usually does not break existing data: internally, values are linked using a field identifier (FIELDID), not the visible text label. This matters for import presets too: you can rename fields without rebuilding mappings.
Configuration details of the custom field “Reference”. The Tooltip guides the user, the regular expression enforces the PRAT-YYYY-NNNN format, and the panel column allows the value to be displayed in UDFC02.

### Field types and validation (with practical examples)

The choice of field type is not cosmetic: it determines what MMEX considers valid, how values are imported from CSV/XML, and how reliable it will be to filter and report that data.

During CSV/XML import, if a value does not match the expected type (e.g. text in a Date field, or a choice not present in the list), MMEX reports an error. This is intentional: MMEX aims to avoid silently importing “dirty” data. This is an advantage, because you immediately realize that the CSV needs to be corrected or normalized.

String
  Free text. Great for IDs and structured short text. Can be validated by RegEx.
  Example: “Case reference” with `CASE-\d{4}-\d{4}` forces values like `CASE-2025-0142`.
Integer
  Whole numbers only. Useful for counters/quantities.
  Example: “Loyalty points”, “Receipt number”.
Decimal
  Numbers with decimals. Precision (“Digits Scale”) can normalize imported data.
  Example: “VAT %”, “FX rate”, “Discount %”.
Boolean
  True/False flags for quick filtering.
  Example: “Tax-deductible”, “Reimbursable”, “Company card”.
Date
  Calendar dates.
  Example: “Subscription renewal”, “Warranty end”.
Time
  Time-of-day (hh, hh:mm, hh:mm:ss). Helpful when multiple transactions share the same date.
  Example: “Payment time”.
Single choice
  Dropdown list. The best way to keep consistent classification.
  Example: “Payment method” = Card;Cash;Transfer;PayPal.
Multi choice
  Multiple selections (often separated by `;`). This is the closest “tag-like” approach, but controlled.
  Example: “Tags” = Home;Car;Health;Work.

### When to use them (useful scenarios)

Custom Fields are useful whenever you want to separate accounting(Categories, accounts, transfers) from operational classification (projects, people, methods, codes, reconciliations). Typical scenarios include:

#### 1) Payment method (Card/Cash/Bank transfer…)

Categories describe “what you bought”. Payment method describes “how you paid”. With a “Payment method” custom field you can answer: “How much did I spend in cash last quarter?” without polluting categories.

#### 2) Projects / cases / cost centers

Add a “Project” field to track cross-category initiatives: Category = “Home:Materials”, Project = “Bathroom renovation”. You keep both category reporting and project-based reporting.

#### 3) Lossless historical import from other software

When importing data from apps or banks that provide extra columns (tags, comments, bank transaction type, daily balances), Custom Fields are the correct way to bring everything into MMEX without compressing information into the Notes field. This is exactly one of the reasons why this feature is considered “powerful”: it allows faithful and verifiable migrations.

#### 4) Controls and deadlines (warranties, renewals, contracts)

Using Date and Boolean fields, you can build a simple system to track deadlines such as “Warranty end” and “Renewed (Yes/No)”. Even though MMEX is not a full management system, this helps filter and locate related transactions and documents.

### Assigning values in transactions

Once at least one Custom Field is defined for transactions, the New/Edit Transaction dialog displays a (usually expandable) Custom Fields section, where you can enter values specific to that transaction.

Important exception (Split): Custom Fields are associated with the parent transaction, not with individual split lines. In practice, all split lines share the same Custom Field values. If you need a different value for each split line, you must use separate transactions or model the information differently (e.g. distinct categories, notes, or payees).
Entering Custom Field values while creating a new transaction: expanding the dedicated section, filling in the values, and saving the transaction.

### Showing fields in the transaction panel (UDFC01–UDFC05)

To see values directly in the account view, you can map up to 5 custom fields to the special columns `UDFC01…UDFC05`.

1. In Custom Fields Manager, set Panel’s column to `UDFC01…UDFC05` for the fields you want.
2. Open an account and right-click the column header area.
3. Use ``Hide/Show Columns`` and enable the UDFC columns you need.

You can choose different UDFC combinations for different accounts. Example: in a “Card” account you may show Payment method and Circuit; in a “Bank” account you may show Reference and Project.
Custom Fields displayed as columns in the transaction panel using UDFC01 (Payment method) and UDFC02 (Reference).

### Custom Fields in CSV/XML import (the most powerful use case)

When importing from Excel or a bank, design your Custom Fields first and then adapt the CSV: this reduces errors and results in a cleaner import.

In the CSV import dialog (and similarly for XML), MMEX displays the list of assignable fields. After the standard fields, you will also find the Custom Fields, typically identified by entries such as `UDF: FIELDID` next to the field description. This allows you to map any extra column in your CSV to an existing Custom Field.

CSV import dialog showing file columns mapped to Custom Fields, displayed alongside standard fields.
Important behavior (default values): the “Default value” defined in the Custom Fields Manager is intended for manual entry. During CSV/XML import, an empty cell is not automatically filled with the custom field’s default value: it remains empty in order to faithfully match the source data. If you need a default value during import, you must prefill the CSV (e.g. using Excel) or provide an explicit “default” column.

Recommended procedure (robust and repeatable):

1. Create the fields in the Custom Fields Manager (correct type, choices, RegEx, tooltip).
2. Prepare the CSV with one column per Custom Field (clear header names, consistent values).
3. Map the columns in the import dialog, assigning each column to the correct field (standard or custom).
4. Run the import and review the log: validation errors point to rows or columns that need correction.
5. Save an import preset (if available in your version) so the mapping can be reused.

### Export and sharing: what to expect

When exporting to CSV/XML, the behavior depends on the version and the type of export selected. In general, if the goal is to “transfer data” from one MMEX database to another or to create an interoperable backup, it is advisable to verify that the export also includes Custom Fields and to always test with a small file first.

If you need to migrate data between two MMEX databases, first export/import a small sample (20–50 transactions), verify that Custom Fields have been transferred correctly, and only then proceed with the full historical data.

### Using Custom Fields in reports & filters

Custom Fields can be used in three main ways:

- Transaction filters / Transaction reports: if supported by your version, you can also filter by Custom Field.
- UDFC columns: for quick visual analysis directly in the account view.
- SQL reports (General Report Manager): the most powerful and flexible option, allowing joins and aggregations.

For advanced users (or those who want a “professional” manual): Custom Field values are stored in a dedicated table and linked to transactions via the transaction ID (REFID). This makes it possible to create SQL reports that also extract and aggregate Custom Field data.

This example is intentionally “simple”: in practice, you will also want to filter by FIELDID (that is, “which field”), because CUSTOMFIELDDATA_V1 contains values from multiple fields. The idea, however, is clear: once the data is structured, you can build highly targeted reports.

    SELECT
    		a.TRANSDATE,
    		a.TRANSAMOUNT,
    		p.PAYEENAME,
    		c.CONTENT AS CustomValue
    	FROM CHECKINGACCOUNT_V1 a
    	LEFT JOIN PAYEE_V1 p ON p.PAYEEID = a.PAYEEID
    	LEFT JOIN CUSTOMFIELDDATA_V1 c ON c.REFID = a.TRANSID
    	WHERE c.CONTENT = 'Card'
    	ORDER BY a.TRANSDATE;

### Current limitations and exceptions to be aware of

- Split transactions: Custom Fields apply to the parent transaction, not to individual split lines (all split lines share the same values).
- Limited visible columns: in the account view you can display up to 5 fields using UDFC01–UDFC05. This does not limit the total number of Custom Fields, only those shown as columns in the grid.
- Import validation: when using choices or RegEx, “dirty” CSV files will generate errors. This is expected behavior, but it requires normalizing the source data (e.g. Excel cleanup, simple regexes, controlled values).
- Deletion: removing a field definition may result in loss of the associated values. Always make a database backup before performing structural changes.
- Version compatibility: if you rely on Custom Field import/export features, make sure you are using a version that properly supports them. If you notice unexpected behavior (e.g. mapping works but data is not imported), the first check should often be updating MMEX.

### Best practices (recommended workflow)

If you need a “tag-like” behavior, the most practical solution is to create a Multi choice field named “Tag” with a controlled vocabulary (e.g. Home;Car;Health;Work). This gives you consistent, filterable, and importable tags, avoiding typing errors (e.g. “Car” vs “car” vs “CAR0”).

A robust workflow (especially for historical imports) is:

1. Design a small number of well-defined fields (method, project, reference, controlled tags).
2. Prefer Single/Multi choice when you need consistency and reliable reports (instead of free text).
3. Add Tooltips to remind yourself (or others) of the input rules.
4. Test with a small CSV (10–20 rows) and verify import, filters, and columns.
5. Only then import the full history and evaluate any normalization using Massive content update.

## Searching for Information

### Finding Transactions

The most powerful tools for finding specific transaction data are the Transaction Reports.

MMEX provides several tools to help users locate specific transactions within the database.

The quickest way to search transactions is by using the quick search field available in the account view. This search operates primarily on the Notes field and other visible transaction fields.

At the bottom of the transaction list in the account view, enter your search text in the field to the right of the magnifying glass icon. Click the magnifying glass or press the ``Enter`` key to start the search.

The quick search is case-sensitive.

The search is applied only to the currently displayed account and processes all visible transactions. When working with large datasets (thousands of transactions), search operations may take a few seconds to complete.

To improve performance, narrow the scope first by selecting a single account or limiting the date range.

For advanced searches based on amount, date, category, payee, custom fields, or complex criteria, it is recommended to use Transaction Filters or Transaction Reports, which provide far more detailed control.

### Finding Payees

To locate a specific payee, open the Payee Manager using:

``Tools` → `Payee Manager…``

In the payee management window, use the search field at the bottom of the dialog. This search is not case-sensitive, and the payee list is filtered dynamically as you type.

If you do not know the exact name or spelling of a payee, you can use wildcards:

- ``?`` (question mark) to substitute a single character
- ``*`` (asterisk) to substitute one or more characters

#### Examples

- Searching for `Cit?` will match `Citi` but not `Citizens`
- Searching for `Mar*` will match both `Mary` and `Margaret`

For more details about managing payees, see the Payee Manager section.

### Important Notes About Search Behavior

Search behavior may vary depending on the context (Account View, Transaction Filters, Category Manager, Reports).

Some fields, such as Categories and Subcategories, follow different search and selection rules depending on where they are used.

For example:

- In the Category Manager, searches can match both categories and subcategories.
- In the New/Edit Transaction dialog, category selection uses hierarchical auto-completion based on the `:` separator.

When selecting categories, you can type: `B : T : H` to quickly select `Bills:Telephone:Home` (example).

Searching within Custom Fields also has some limitations:

- Filtering by exact field value is supported.
- Filtering simply by the presence or absence of a custom field is not always available.
- For advanced analysis, sorting transactions by column and reviewing results manually may be required.

MMEX is under active development, and search behavior and performance may evolve between releases.

## Working with Payees

Payees are the people or institutions that give us money, or the people or institutions who we pay, for our goods and services.

Use the `↑`/`↓` keys to navigate the payee selection.
Use the toolbar icon to quickly open the Payee Manager.

You can manage Payees by using the menu item: ``Tools` → `Payee Manager…``.

Once the Payee Manager opens you can add new payees, edit or delete existing payees.

To Add a new Payee:

1. Enter the name of the payee in the Filter Payees box
2. Use the ``Add`` button

Use the ``*`` as a wildcard to match many characters in the filter. Use ``?`` to match a single character in the filter.

You can also select the payee in the list, then use the ``Edit`` or ``Delete`` button to perform the required action.

You cannot delete payees which are being used by any transactions.

To delete a payee, ensure that no transactions use this payee. This can be done by:

- Editing the transaction and changing the payee.
- Deleting the transaction using this payee.
- By using the menu item: ``Tools` → `Merge` → `Payees…``, where you can move all payees of a particular name to an alternate name.

This would then make the payee free so it can then be deleted.

## Working with Categories

Categories indicate the reason an expenditure is made or an income is received.

A Category is generally used to record Income or Expenses. Because MMEX allows us to transfer money between accounts, it is also recommended to use categories to record transfers. This will allow us to determine what money is being transferred for a specific reason, such as a repayment to a loan. This will not be seen as an income or expense in the overall picture. Using the same category for an income and an expense will upset balance figures.

Example: If we want to record the value of running a car, we would set up the following:

- Category: Car
- Subcategories:
  - Fuel
  - Maintenance
  - Registration
  - Insurance
  - Fuel Reimbursed

The first 4 subcategories are used to record expenses. If we are reimbursed for fuel costs for any reason, we would need to use Fuel Reimbursed as an Income subcategory. This would then allow us to determine the correct amount we are spending on fuel to run the car. This will become clearer when we are using Budgets.

### Split Categories

Withdrawal Screen: Deposits are displayed as negative.
Deposit Screen: Withdrawals are displayed as negative.

When adding a new transaction, we can use more that one category to record a transaction. This is known as a split category.

The overall split category transaction is either a withdrawal or a deposit. Although the categories within the split, need to reflect the overall transaction type, each category can be classified as a withdrawal or deposit within the split.

Split categories can easily be viewed for a transaction by using a contextual menu selection when a split category entry exists.

### Managing Our Categories

Use the `↑`/`↓` keys to navigate the tree selection.
Use the toolbar icon to quickly open the Category Manager.

You can manage Categories by using the menu item: ``Tools` → `Category Manager…``. Once the category dialog opens, you can add new categories and subcategories.

To Add a new Category:

1. Select Categories at the root of the tree (At the top)
2. Use the ``Add`` button
3. Type the new category name into the text box
4. Press the ``OK`` button
5. The new category will appear at its alphabetical place.

Don’t use the same category for Income and Expense, as this will cause incorrect balance calculations. Workarounds include:
CategoryName and (CategoryName) or
+CategoryName and -CategoryName.

To Add a new Subcategory:

1. Select the category that you wish the subcategory to belong to
2. Press the ``Add`` button
3. Type the new subcategory name into the text box
4. Press the ``OK`` button

You cannot delete categories which are being used by any transactions.

You can also change the names by selecting the category/subcategory in the list, use the ``Edit`` button, modify the name in the text box, then use the ``OK`` button. Use a similar action to delete the category/subcategory in the list.

Ensure that no transactions use this category/subcategory combination. This can be done by:

- Editing the transaction and changing the category/subcategory.
- Deleting the transaction using this category/subcategory.
- Using the menu item: ``Tools` → `Merge` → `Categories…``, where you can move all categories of a particular name to an alternate category/subcategory combination.

This would then make the category free so it can then be deleted.

You can nest subcategories, with information available here: nested categories #1477.

- There is no known limit on the number of characters in a Category name.
- There is no known limit on the depth of nested subcategories.

## Working with Tags

A single transaction can contain multiple Tags. This makes Tags ideal for cross-category and multi-context analysis.

Tags are an advanced classification tool that allow you to assign contextual information to transactions, independently of Categories, Accounts, or Payees. While Categories describe the nature of an expense or income, Tags describe the purpose, project, person, event, or context related to that transaction.

### Why Tags exist and when to use them

Tags were introduced to provide a more flexible classification system than Categories alone. A Category defines “what type” of transaction was made; a Tag defines “why” the transaction was made or “in which context” it belongs.

Tags are especially useful when:

- An event involves many different expenses (trips, parties, celebrations, home projects).
- You need to split expenses between people (partners, family members, roommates).
- You want to track a project over time (renovation, work activities, hobbies).
- You manage multiple properties and want to separate costs without duplicating Categories.
- A transaction belongs to more than one logical context.

Using Tags keeps your Category structure clean while allowing deep and flexible analysis.

### Adding Tags to a Transaction

The Tags field is available in the New/Edit Transaction window. You can:

- Type a Tag name and press `Enter` to create it
- Select an existing Tag from the dropdown list
- Add multiple Tags by typing them sequentially

If you enter a Tag that does not exist, MMEX will prompt you to create it.

Tags also work with split transactions, allowing you to classify complex entries with multiple Categories.

### Organizing and Managing Tags

All Tags can be viewed and modified using:

``Tools` → `Tag Manager…``

From this window you can:

- Create new Tags
- Rename existing Tags
- Disable Tags that are no longer in use
- Delete Tags not assigned to any transaction

#### Rules and limitations for Tag names

Tag names must follow specific rules to ensure correct behavior within MMEX reports, search filters, the database, and import/export systems:

- Spaces are not allowed in Tag names.
  To represent multiple words, use:
  - Underscore (`_`) → Trip_New_York
  - Or write everything together → TripNewYork
- Do not use the characters “:” or “/”.
  These characters interfere with QIF/CSV import formats.
- Avoid complex special characters such as `[ ] { } ( ) % $ # @ ! ? *`.
- Tags are case-insensitive.
  holiday2025, Holiday2025 and HOLIDAY2025 are considered identical.
- Each Tag must be unique.
Recommended naming styles: `WordWord` or `Word_Word` (avoid spaces and special characters).
- Numbers are allowed in Tag names.
  Examples: BBQ2025, Renovation2024, Trip_2023.
- Keep Tag names short and meaningful.
  Very long names reduce readability in reports.

### Using Tags in Reports

The Transaction Report fully supports Tag-based filtering.

``Reports` → `Transactions``

Grouping by Tags is not yet available in official MMEX reports.

Filter options include:

- TagA → Filters transactions that contain this Tag.
  Result: all transactions that include TagA will be displayed, whether the Tag appears alone or together with other Tags.
- TagA | TagB → OR logic.
  Result: all transactions that contain at least one of the specified Tags will be shown. A transaction will be included if it contains TagA, or TagB, or both.
- TagA TagB → AND logic.
  Result: only transactions that contain both TagA and TagB at the same time will be displayed. Transactions that contain only one of the two Tags will be excluded.

### Examples and Real-life Scenarios

#### • Travel

Hotels, taxis, restaurants → Tag: Vacation2025

#### • Renovation

Materials, labor, tools → Tag: BathroomRenovation

#### • Shared expenses

Groceries, utilities → Tags: Marco, Angela

#### • Property management

Bills, maintenance, taxes → Tag: CityCenterHouse

## Working with Currencies

MMEX can be used in many countries, MMEX need to consider the currency for the country of use. When creating a new database, the Base Currency is set to the currency used in the user’s country. If the user’s currency setting is not listed in the default currencies, the user can create their own currency Listing.

MMEX allows us to work with more than one currency. Each account has its own currency setting, and will default to the base currency. When we set accounts with different currencies, the transactions we create in these accounts will reflect the currency of the account.

Use the toolbar icon to quickly open the Currency Manager.
Use the `↑`/`↓` keys to navigate the currency selection.

You can manage Currencies by using the menu item: ``Tools` → `Currency Manager…``.

Add a new Currency:

1. Use the ``Add`` button in the Currency Manager dialog
2. Provide a suitable name for your new currency.
   Note: This name is not changeable, but the currency can be deleted if not being used.
3. Adjust the currency values in the Currency Manager.
4. Use the ``Update`` button to save the changes before closing.

When more than one currency is being used, the Conversion to Base Rate needs to be set. This will allow the value of the currency to properly reflect the value at the base rate.

To allow Automatic Currency update, the Currency Symbol needs to be set for the particular currency being used.

## Importing financial data

### Importing from CSV Files

To alleviate the problem of users having to pre-format their bank transaction CSV files into the fixed format MMEX requires, MMEX also allows users to import CSV files where the order of fields is completely freeform.

The transactions from a CSV file can only be imported into a single MMEX account.

To use this importer, select the account you want to import into and then select the order of fields in the CSV file by picking and choosing from the list of possible fields. MMEX will now import the CSV file using the format information specified by the user.

You do not need to include balance values in your CSV file.

MMEX can import from a wide variety of formats. One of them is a fixed format CSV file. This file format exactly matches the CSV format that MMEX can export. So it can be useful to move data from one `.mmb` database file to another `.mmb` database file. To easily see the format of the CSV file, you can try exporting an account to a CSV file and then analyzing the format created.

The CSV field options are as follows:

The date format option has to match that of the date format in the CSV file, otherwise, date parsing by MMEX will fail and will result in transactions having incorrect dates.

Date
  Date of the transaction (in the format specified in ``Tools` → `Settings…` → `General``)
Payee
  To whom the transaction was made. In the case of a transfer transaction, this indicates the name of the account from which the transfer was made or to the account the transfer was made.
Amount (+/-)
  The transaction amount. If it is a positive value it is a deposit, negative value is a withdrawal (there is an option to reverse this)
Category
  The category of the transaction
SubCategory
  The subcategory of the transaction
Notes
  Transaction Notes
Number
  Transaction number
Withdrawal
  A positive amount that is considered as a withdrawal. Do not use if specifying Amount (+/-)
Deposit
  A positive amount that is considered as a deposit. Do not use if specifying Amount (+/-)
Don’t Care
  Ignore this field

Or you can change the delimiter to be used by MMEX by choosing ``Tools` → `Settings…` → `Other``.

When creating your CSV file be sure that you remove the commas from your deposits and withdrawals. This can be done easily using a spreadsheet program such as LibreOffice Calc.

After importing from CSV, all transactions will have a Follow Flag as it its status. You can mark all transactions with this flag using the bulk status setting commands using the right-click contextual menu in the account view.

When importing CSV files that contain extra columns (such as payment methods, references, project codes, or bank-specific transaction types), consider using Custom Fields to preserve this information as structured data instead of placing everything into Notes.

### Importing from XML Files

Import is done from the first worksheet in the workbook.

Importing from XML files recognizes XML files in Excel format named XML Spreadsheet 2003 in Excel. This is the recommended import method if required to import transactions from Excel. Method of import and field selection is same as importing from CSV files.

### Importing from QIF Files

Quicken Interchange Format (QIF) is an open specification for reading and writing financial data to media (i.e. files). A QIF file typically has the following structure:

    !Type:type identifier string
    [single character line code]Literal String Data
    ...
    ^
    [single character line code]Literal String Data
    ...
    ^

Each record ends with a `^` (caret).

The date format option has to match that of the date format in the QIF file, otherwise, date parsing by MMEX will fail and will result in transactions having incorrect dates.

See example QIF transaction:

    !Type:Bank Header
    D6/ 1/94 Date
    T-1,000.00 Amount
    N1005 number
    PBank Of Mortgage Payee
    ^ End of transaction

QIF is older than Open Financial Exchange (OFX). The inability to reconcile imported transactions against the current account information is one of the primary shortcomings of QIF. It is commonly supported by financial institutions to supply downloadable information to account holders.

MMEX can import transactions from specific types of QIF formats into an account (you can find the type of QIF by opening in a text editor)

!Type:Bank
  Bank account transactions
!Type:Cash
  Cash account transactions
!Type:CCard
  Credit card account transactions

After importing from QIF files, all transactions will have a Follow Flag as it its status. You can mark all transactions with this flag using the bulk status setting commands using the right-click contextual menu in the account view.

### Importing from WebApp

MMEX has a light WebApp that can be installed on every PHP webserver like NAS, shared hosting or other PHP local installation.

You can download all needed files from WebApp project page.

To obtain more information about set-up and installation see WebApp wiki.

To start-up WebApp you only have to:

1. unzip file in a folder on your webserver or upload files through FTP
2. rename `htaccess.txt` in `.htaccess` (on Windows you need to do it from `CMD` and `rename` command)
3. enable `PDO_SQLite` if needed

Then simply open your browser to the folder URL, fill first settings and insert correct URL and GUID in MMEX settings (import/export tab).

Now at every start-up MMEX will contact WebApp for new transaction that will be downloaded and imported in desktop database.

All main transaction linked settings will be automatically synced to WebApp, in this way you can have all your account and payees ready to use inserting new transaction.

## Exporting data

### Exporting as CSV Files

The transactions from an account can be exported to a single CSV file.

MMEX can export as a fixed format CSV file. This file format exactly matches the CSV format that MMEX can import. So it can be useful to move data from one `.mmb` database file to another `.mmb` database file. To easily see the format of the CSV file, you can try exporting an account to a CSV file and then analyzing the format created.

The general format is as follows:

Date
  Date of the transaction (displayed in the format specified in ``Tools` → `Settings…` → `General``)
Payee
  To whom the transaction was made. In the case of a transfer transaction, this indicates the name of the account from which the transfer was made or to the account the transfer was made.
Transaction Type
  This can either be Withdrawal or Deposit
Amount
  The transaction amount as a positive value
Category
  The category of the transaction
SubCategory
  The subcategory of the transaction if any (otherwise blank)
Notes
  Transaction Notes

### Exporting as XML Files

The transactions from an account can be exported to a single XML file.

MMEX can export as an XML file. The XML format is compliant with, and can be read by, spreadsheet programs such as LibreOffice Calc. The general format is the same as CSV.

### Exporting as QIF Files

Although Transfer transactions will be reloaded into a single account, they will not function correctly.

MMEX can export an account to a file of the QIF format. This format can also be used by MMEX to reload into an account.

## Scheduled Transactions

Scheduled Transactions are special transactions that we set up in order to have the transaction entered into the database at some future date. These transactions generally occur at regular intervals, such as the payment of a bill.

To use the Cash Flow Reports you need to set up scheduled transactions.

These transactions:

- Are displayed as Upcoming Transactions on the Dashboard within 15 days of the due date.
- Can be set up to activate automatically on the due date.
- Can be set up to activate manually - allowing the user to adjust the amount, payee, category, status and date on the due date if required.

Scheduled Transactions can be accessed from the Navigator or from the menu item ``Tools` → `Scheduled Transactions``. This will display the Scheduled Transactions page.

To create a new transaction, use the ``New`` button:

Entering a transaction before it is due will gray out the transaction in the associated account until the day it becomes active.

1. Set up the Scheduled Transactions Details, defining which account the transaction will go to when the transaction is entered.
   1. Select the Repeats as daily, weekly etc.
   2. Schedule transaction
      - Repeats: In (n) Days/Months
        1. Set the Start date of the activity.
        2. Set the period in days or months depending on the selection.
        3. Changes to the period will reactivate the ``Next`` button. Once the transaction has been entered, the activity becomes inactive.
        4. Use the ``Next`` button to advance the date to the occurrence Date.
      - Repeats: Every (n) Days/Months
        1. Set the date of the Next Occurrence.
        2. Enter the number of times this will occur into Payments Left. No number means: repeat indefinitely.
2. Define if user will be prompted to confirm entering transaction on the due date.
3. Set up the Transaction Details section, similar to creating new transactions.

To create a scheduled transaction from an existing transaction, select and right-click on the transaction to bring up the contextual menu and select ``Create Scheduled Transaction…``.

## Stocks and Shares

MMEX allows you to track Stocks and Shares. The total Stocks are added to your total financial worth.

Further details refer to Stocks, Shares and Share Dividend Management in MMEX

## Asset Management

MMEX allows you to track fixed assets like cars, houses, land and others. Each asset can have its value appreciate by a certain rate per year, depreciate by a certain rate per year, or not change in value.

The total assets are added to your total financial worth.

Assets are accessed via the ``Tools` → `Assets`` or via the Navigator.

Assets are created in the Asset Management window.

- A new asset will allow the creation of an asset account.
- A new asset will also create a new transaction to the Asset Account or any other account.

Asset transactions are added to an asset and tied to an account.

- New Asset Transactions are achieved by selecting the Asset and adding a transaction.
- Editing an Asset transaction is achieved by editing the transaction from the account the Asset transaction resides.
- Normal transactions can be associated with an asset when an Asset Account is created.
- Asset Transactions can be treated as Income/expense or as transfers depending on the state of the “Transfer” checkbox.

## Budgeting

Budgeting in MMEX

## Reports

MMEX allows a variety of reports. Select the appropriate report under the Reports node in the Navigator. Some reports require some user input, some do not.

### Financial Year Reports

The financial year is a time period of 12 months used for tax purposes. By default, the financial year starts on 1 July and ends the next year on 30 June.

These reports are generally used for tax purposes which do not necessarily start at the beginning of the calendar year. These reports cover:

1. Previous Financial Year.
2. Current Financial Year.

The start date can be changed by the user to start on any day of any month, within a 12 month period by using the menu ``Tools` → `Settings…` → `General``.

### Transaction Reports

Transaction Report can use the same criteria set as the Transaction Filter.

This allows the user to generate specific reports based on user selected criteria.

A Transaction Report is generally used to locate specific transactions made within Bank or Term type accounts. This report can also be used to display specific details for a particular account.

For a Transaction Report, the resulting list of transactions can be printed or saved as a HTML file.

If your transactions use Custom Fields, these can also be leveraged in filters and reports (depending on the version), or more extensively through SQL-based reports in the General Report Manager.

#### Transfer transactions in Transaction Reports

Since a transfer transaction is a withdrawal from one account and a deposit to another account, a transaction report done on multiple accounts loses the reference point for determining whether the transaction is a deposit or withdrawal.

When a transaction report is used for a specific account, it will generate a report that will match the account details. The reference point for transfers in known for this report, which will reflect in the report having correct balances displayed.

### Cash flow Reports

To use the Cash Flow Reports you need to set up scheduled transactions.

This report projects the amount of funds available, based on future commitments.

The report will use the Scheduled Transactions for the various accounts, and reflect forward 10 years on a monthly basis. This becomes a prediction of the amount of money that may be available each month based on current payments.

### General Report Manager

General Report Manager

### Printing reports

Use the page setup option to reformat the page if necessary.

MMEX supports printing of all reports that can be viewed.

Once you view a report, you can print the report using the ``File` → `Print…`` menu.

## Settings

Some settings require after a change a restart of the program to be effective.

You can modify some runtime behavior of MMEX by changing the options in the Settings dialog.

It is accessed from the menu with ``Tools` → `Settings…`` or from the tool bar.

The dialog window is divided in panels, which structure the settings and can be invoked by the symbols on the left side.

### General Panel

#### Display Heading

User Name
  This field is used as a title on the Dashboard, and on Reports.
  Leaving this field blank, will remove the Dashboard and Report titles.

#### User Interface Language

Allows the selection of the user interface language, requires a restart of the program!

#### Date Format

The date format setting is used to control how dates are displayed.

#### Currency

Base Currency
  The base currency setting is used to set the currency of the database. Individual accounts will use this as the default, but can be changed if different currencies as required.

#### Financial Year

Sets the start Day and Month for a Financial Year period, as opposed to a calendar year. This is used in Budgets and Reports.

### View Panel

These settings control the appearance of the MMEX. It is subdivided in several sections:

#### View

Accounts Visible
  This determines which accounts depending on their states are visible in the navigator.
Category delimiter
  Determines how subcategories are delimited.
Do not use colors for future transactions
  Disables the use of transaction specific colors, which have a date in the future.
Emphasize not reconciled transactions
  All transactions which are not in the reconciled state are emphasized. This allows a faster overview.
Show Tooltips
  Enables tooltips in all the controls.
Show money tips
  Enables randomly selected money tips in the transaction view.

#### User Interface

Style template
  Calls the theme manager to select a theme for MMEX.
Theme
  Allows to change between light and dark thems.
HTML scale factor
  This will set the font scaling used in the dashboard and reports.
Font size
  This will set the font size used in the dashboard and reports.
Toolbar/Navigator/Others Icon Size
  Fine tuning of the icon sizes used.

### Dashboard Panel

These settings control the dashboard display.

#### Income vs. Expenses

Date range
  Sets the date range used for the income vs. expense overview.

#### Miscellaneous

Ignore Future Transactions
  If this checkbox is enabled, the account value corresponds with the value of the current day, future transactions are not included.
  If this checkbox is disabled all transactions are included in the calculation of the account value.
  Important:
  This checkbox only controls the handling of future transactions on the dashboard, the display of future transactions in the account overviews is controlled by the corresponding checkbox in the transaction panel under Transaction/Budget

### Transactions Panel

Contains all transaction related settings.

#### New Transaction

Changes the default settings for the New/Edit Transactions Dialog.

#### Transaction

Use Original date…
  Activate the related setting to use the original transaction date, when pasting or duplicating a transaction in the account view.
Use Original state when Duplicating or Pasting Transactions
  Per default the state of a duplicated or pasted transaction is set to the Default Status defined in the settings panel for new transactions. If this option is active the original state is kept (e.g. Reconciled)
Transaction Sound…
  Activate to play a sound when a transaction is entered.

#### Transaction/Budget

These settings control the transaction display and budget handling.

#### Transaction Colors

Allows the definition of individual colors, which can mark transactions. The `Default` button resets the colors to original ones.

### Attachments Panel

Define the location of the attachments folder.

### Network Panel

#### WebApp

  Set URL and GUID of your WebApp installation to allow data sync. Parameters can be found in WebApp Guide page.

### Other Panel

Miscelleanous settings

#### Stocks

Stock Quote Web Page
  This URL is used by the Refresh button on the Stock Investments page. This URL is also used by the New/Edit Stock dialog, to display the web page for the listed stock. The default is yahoo finance. Alternatively other sites can be used if necessary.

#### Assets

TBD.

#### Database

Sets the way backups of the MMEX database are performed

Backup database on start up
  This copies the database to a new file with today’s date, when MMEX Starts.
  The file will not be over written when MMEX starts up again. When there are more than "Max Files" backup files, the oldest file is deleted.
Backup database on exit
  When MMEX shuts down, the existing database will be copied to a backup database file for that day when changes to the database have been detected. When changes are made on the same day, the existing backup is over written. When there are more than "Max Files" backup files, the oldest file is deleted.
Max Files
  Maximum number of backup files to retain.
Days to retain deleted transactions
  The number of days deleted transactions are retained and can be restored before they are finally deleted.

#### CSV

Delimiter
  This is used as the delimiting character when parsing CSV files. This is useful to modify from the default `,` when dealing with currencies that use `,` to denote decimal points in amounts.

#### Filter

Enable date range filter per account or report
  If deactivated (default), all accounts and reports use the same date range. If the date range is changed in one account or report the new range is also applied to all other accounts or reports. This allows a quick comparision of time periods between accounts and reports.
  If activated, the selected date range for each account or report will be stored seperately for an individual view of the accounts or reports

## Frequently Asked Questions

### How can I contribute?

You can contribute by:

- Reporting (bug and enhancement) issues at GitHub
- Adding new, or contributing to existing, MMEX translations on Crowdin
- Helping spread the word
- Adding to, or improving, the MMEX source code at GitHub
- If you are really very happy because you saved a lot of money by using MMEX, you can donate to the MMEX project

### What’s the reason for the EX in the name of the software?

MMEX was originally developed as a personal finance software called Money Manager. It was written in .NET and was more of a learning exercise than serious software development. It grew far beyond the original design. The software was frozen and work began on a new version which had a similar user interface and features, but written in C++.

Usually Microsoft names their second version of their improved software APIs with an Ex extension as in `doSomething()` and `doSomethingEx()`. This convention was followed so an ‘Ex’ was appended.

### Is the MMEX database structure documented somewhere?

The database structure is documented at https://github.com/moneymanagerex/database, the diagram is up-to-date for the current MMEX database version (v19). Clicking on it leads to the interactive version.

### Is the `.mmb` format proprietary?

No, `.mmb` file is not proprietary.

MMEX uses SQLite databases to store user data. That means that the `.mmb` file is a regular SQLite database. SQLite is one of the smallest, free relational database systems around and there are tons of tools to open and access SQLite databases. SQLiteSpy, SQLite Browser , and wxSQLitePlus are such utilities. Once you open the database using these tools, you can do anything you want with the data.

### Is my data safe?

Yes. Your data is completely safe.

The data is self contained on your PC, (or USB stick if you have made it portable). To further protect your data, encryption can now be added. This applies a password to your database file, and can only be opened by MMEX or any other software if you have the correct password.

### Can MMEX run from a USB Key?

Yes.

MMEX is a portable application which means ability to run without installation, for example, from USB flash drive. If MMEX finds `mmexini.db3` in its folder, it assumes portable mode. Copy MMEX’s files to USB Key and copy yours `mmexini.db3` to MMEX’s folder on that drive.

To make MMEX portable:

- on Windows (assume `F:\` is USB flash drive)
  1. Copy `C:\Program Files\MoneyManagerEx` to `F:\`
  2. Copy `%APPDATA%\MoneyManagerEx\mmexini.db3` to `F:\MoneyManagerEx`
  3. Copy your database file to any folder on `F:\`
- on Unix (assume `/media/disk` is mounted USB flash drive)
  - Compile MMEX from sources as usually, and run the following commands:

        make install prefix=/media/disk
        cp ~/.mmex/mmexini.db3 /media/disk/mmex/share/mmex

  - or copy MMEX which has already installed in `/usr`:

        cp /usr/bin/mmex /media/disk/mmex/bin
        cp /usr/share/mmex /media/disk/mmex/share
        cp /usr/share/doc/mmex /media/disk/mmex/share/doc
        cp ~/.mmex/mmexini.db3 /media/disk/mmex/share/mmex

### How do I know MMEX is not trying to steal my sensitive financial information?

Generally, with any closed-source program, you have to depend upon the vendor’s word regarding safety of the data. But with MMEX being open-source, you can verify this claim yourself.

Even if you are not a C++ expert, you can rest assured that anyone can access the source code at any time and verify the legitimacy of MMEX’s intentions.

You can disable sending anonymous usage statistics in ``Tools` → `Settings…` → `Network``.

MMEX does connect to the internet only to send anonymous usage statistics or when checking for an update. Here is a sample of data that MMEX will send:

Version | Operating System | Language | Country | Resolution | Start Time | End Time
--- | --- | --- | --- | --- | --- | ---
1.3.0 Portable | Windows 8 (build 9200), 64-bit edition | english | United States | 1366x768 | 2014-05-01 09:00:00 | 2014-05-01 09:01:30

### How do I print account statements using MMEX?

To print a statement with transactions from any arbitrary set of criteria, use the Transaction Filter to select the transactions you want and then do a print from the ``File` → `Print…`` menu.

The Transaction Filter is accessed from ``Reports` → `Cash Flow` → `Transactions`` in the Navigator.