## 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 organized financially requires some amount of discipline. Financial management can become complicated when there is no clear understanding of how much money we are getting, regarded as income as opposed to our expenses which is how much money we spend.

Debt usually results when our cash flow is restricted because our expenses exceed our income. Then we need to borrow money to maintain our cash flow to enable us to purchase our necessary items.

The first step towards better Financial Health, is to maintain good financial records. It is only when we have a clear understanding of where our money goes, that we can make an informed decision of where to cut back on our expenses when our cash flow becomes tight. If we do need to borrow money, we can then better manage our debts as well.

Did you realize you spent $600 in buying DVD movies last year? How many times did you watch them? Do you think now that the $600 would have been better spent on the unexpected maintenance on the auto that came up yesterday? Of course there is no right or wrong answer to how you should spend your money. After all, it is you who earned that money and the right to spend it whichever way you see fit. But you can always make your money work harder for you.

Here’s where personal finance software comes in. They help you slice/dice the financial data to give you better insight into what is going on. Always remember the software can only be as good as the data it has to process. Garbage In Garbage Out. But if you have started thinking of even using Personal finance software, you are well on your way to making every dollar count.

Read on how to work with MMEX.

## MMEX Concepts

MMEX models the real world to help us maintain our personal finances.

Generally we receive money from someone for a service we provide, or a product that we sell. This is regarded as a Income or as a Deposit to our system. When we purchase an item or use a service, the money that we spend is regarded as an expense or Withdrawal to our system. In MMEX, the people that give us money or receive our money are regarded as the Payees of the system.

As we hopefully do not spend all the money we receive, we would obviously need a place to keep our money. This is generally, some financial institution, or several institutions or in our pocket. MMEX tags these places as Accounts.

When we spend or receive money, we see this as a transaction, and the reason for our income or expense is our category. There will be times where we need to transfer money from one place to another, such as a withdrawal from an ATM, and this type of transaction is known as a transfer.

This can be simplified as shown in the following diagram:

One other important thing to consider is the currency we use to perform the transactions.

With all of these things to keep track of, MMEX uses a database to store and connect all these entities together.

### Recommendations

When encrypting your database, remember your password.

The database that MMEX generates, known as the `.mmb` file, becomes an important file for you to maintain. Depending on circumstances, security features such as encryption can be employed, which is recognized as a `.emb` file. This is where we can attach a password to the database, and will require a password every time MMEX is opened.

As with any computer system, the data we produce is important to us, and therefore need to safeguard against system malfunction. MMEX has a backup system where it can produce a dated copy when the database is opened, and/or produce a dated copy of the database when changes have been detected. Up to 4 backups are maintained for each database when the system is initialized and/or when system changes have been detected, and the system shuts down.

- Always backup your `.mmb` or `.emb` database file regularly.
- Always keep backup copies on other devices to protect against hardware failure.
- When upgrading to a new version of MMEX, make sure you backup your `.mmb` or `.emb` database file before doing so.
- Use the Menu ``Tools` → `Settings…`` to set up the level of backup required.

## Creating a New Database

When MMEX initially starts up, it will attempt to load the last database that was opened. If no database existed, the user is presented with the option to either open an existing database, or create a new one.

If you need to create a new database file, from the Menu, select ``File` → `New Database…``.

This will prompt you to specify a new name for your `.mmb` database file, at the location you specify. Your new database file is now created and the New Database Wizard will be displayed to help you initialize the new database and assist in creating your first account.

The New Database Wizard will request you to set the Base Currency and a User Name.

MMEX comes with a default set of currencies which you can use, to correspond to your countries currency settings. New accounts will then use this Base Currency setting as the default. This allows accounts from different countries to reflect the value in the base currency.

To help identify the purpose of the database, a User Name is requested. This is optional, as it is only used as a title on the Dashboard, and in reports.

Both these settings can later be changed if required by selecting the menu: ``Tools` → `Settings…``.

The database name will be displayed on the title bar which helps remind you which database file is open. The new `.mmb` database file is not encrypted.

To encrypt the database open in MMEX, use the ``File` → `Save Database As…`` menu, enter the file name and select the type `Encrypted MMEX Database (.emb)`. It is possible to revert to an unencrypted database by using the same menu and selecting the type "MMEX Database (.mmb)".

## Creating New Accounts

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

Use the toolbar icon to quickly open 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 Type of Account is not changeable, but the name can changed when editing account information.

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 for MMEX, and can handle most common account types, such as checking accounts, savings accounts, and credit card accounts. Also known as Bank Account, and supports three kinds of transactions. These are withdrawal, deposit and transfers.
Term Accounts
  Similar to Checking Accounts with the exception that they appear in their own section on the Dashboard and can be shown or hidden for normal day usage. For a better explanation see the account setup example.
  These kinds of accounts cover specialized accounts such as Cash Term Accounts, Bank Mortgage accounts, Loan accounts, or investment accounts with regular income or expenditure that you need to keep track of. These accounts have their own balance section on the Dashboard. These accounts also, supports three kinds of transactions.
Investment Account
  The other type of account that MMEX supports is an Investment Account. This type of account allows you to track stock/bonds/mutual funds investments and possibly other investments you may own.

To properly setup 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, Held At, Website, Contact info and Access Info. 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. Going forward you only need to add transactions beyond that date when you had the balance.

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 de-clutter 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 also can 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.
- This 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 account 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, 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.

### 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.

## Searching for Information

### Finding Transactions

The most powerful tools for finding particular transaction information are the Transaction Reports.

The MMEX provides several utilities to help users find specific transactions. The Notes field of transactions can be searched from the account view. At the bottom of the transaction listing in the account view, input your search query in the text box to the right of the magnifying glass. Click the magnifying glass or press the ``Enter`` key to search the transactions in that account. The search is case sensitive.

### Finding Payees

In order to find particular payees, open Payee Manager using the menu item: ``Tools` → `Payee Manager…``.

In the payee management window, use the search field at the bottom to type your query. The search is not case-sensitive, and as you type the payee list will be filtered with any matches.

If you do not know the exact name or spelling of a payee, you can use the ``?`` (question mark) wildcard as a substitute for a single character, or the ``*`` (asterisk) wildcard as a substitute for one or more characters.

#### Examples:

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

## 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

TODO, some information is available here: Addition of "classes" or "tags" #5439.

To update information about Tags, update https://github.com/moneymanagerex/moneymanagerex/blob/master/docs/en_US/index.html.

## 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.

### 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.

#### 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

TODO

### 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 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.