SiMoney is under GNU GENERAL PUBLIC LICENSE. It is written by Simone Pernice from scratch.
Version 2.1.6, 21st January 2007 Turin, Italy. Build 143.
SiMoney needs a MIDP 2.0 phone. The synchronize function was tested on Motorola phones only. See synchronization paragraph below for further details.
I began SiMoney as a basic account manager for my own needs. Currently hundreds of people download it every day and a lot of them send me emails about bugs to fix and features to add. It takes longer and longer time to debug and improve SiMoney. So if you like SiMoney and you want I continue to develop it please send me a donation/postcard. To ask questions, suggest improvements or changes, fix bugs contact Simone.
Greetings to: Stefania Giaconia for improvement suggestions, Billy Boyle for spelling and grammar corrections.


SiMoney is given AS IT IS, WITHOUT ANY warranty. In order to shrink SiMoney code there is ONLY one way to do one thing, so be patient and read the help. At first execution SiMoney creates a basic standard set of lists of elements: accounts, categories (and main categories), payees and currencies. Every account has its own currency. For each account it is possible to add transaction with date, amount, category and payee. Transaction can have an alarm and be recurrent. Lists share some basic commands: ADD to add elements, CLONE is to add but the screen values are pre filled with current element data, DEL to delete elements, select an element to show it or modify it, REPORT to get graphical or textual report on the list, SEARCH to search for an element name forward PREVIOUS or backward NEXT, HELP (if available) to get specific list help. The elements of some list are linked to elements of other lists, to link write a string in the text field to go to the element with closer name in the required list where it is possible to: ADD if the element does not exists, select the element to link, UNLINK to remove the existing link. DEFAULT (if available) to set an element as default choice for linked elements. Other functions are: Synchronize to backup/restore/manage lists with an USB cable, infrared and a terminal program in Unicode format (readable for spreadsheet) or backup/restore on phone file system (if JSR75 is supported); Calculator to evaluate expressions; Password to set a password. It is possible to pause SiMoney without data lost to short SiMoney begin and end time.
Some more detailed help follows:

Main Category List

List of the main categories. Main Categories should be a small set of elements to collect all the categories in order to get simpler reports.

Main Category Form

It is the form to fill for Main Categories. For every main category write its name and chose if it and all its categories are expenses or incomes.

Category List

List of categories where transactions are charged. Every category can be linked to a main category and sharing its type (expense or income). Use MCAT to show main category list. Use RESETAMOUNT to set every category previewed amount to the current monthly amount.

Category Form

It is the form to fill in for categories. Set category name and its previewed monthly amount. It is possible to specify different frequency for the previewed amount; it will be converted automatically in monthly. The previewed amount is compared with actual expenses in some report. Subcategories are linked to a set (preferably small to get simpler report) of main category. Main categories previewed amount are the sum of their subcategories. The residual previewed amount (income - debit) is showed in this form.

Payee List

List of payees where transactions are charged.

Payee Form

It is the form to fill in for payee. Here you can set the payee name, address, and telephone number.

Accounts List

List of the accounts. The total account amounts is showed in the screen title. Use SETUP to modify accounts initial settings and CLEAR to delete transactions older than a given date in order to save memory.

Clear Form

This is to delete the transactions older then the given date from all the accounts to save memory. There are two gauges showing the percentage of volatile and permanent memory used. Use this feature if one of them is full for more than half. Note all the transactions balances will be preserved updating the initial amount.

Accounts Form

Account form. Set account name, initial balance, currency and optionally a reference person and its phone number. If currency is different from default every amount will be showed in both that currency and default.

Transaction List

List of transactions for the selected account. Every transaction is shown with its date, amount and payee. The amount is Void, Reco(nciled), Alar(med) for those type of transactions. Use RECONCILIE command to reconcile a void, alarmed or recurrent transaction. For recurrent ones a new one will be built as specified in the recurrent period.

Transaction Form

Transaction property form. Set transaction date, amount (withdrawal for negative, deposit for positive), option and status. The amount is charged on transaction account. Status can be reconciled, void, alarmed and recurrent (with a period). While reconciled transaction has a standard amount; void, alarmed and recurrent behaves as a zero amount. Alarmed and recurrent transactions are automatically showed when they expire in the expiration screen. Recurrent transaction are automatically duplicated when reconciled from their transaction list with RECONCILIE command. There are three options for transaction: NONE is charged on a category and a payee; SPLIT is charged on a payee and on a set of categories, TRANSFER makes transactions between two accounts with equal but opposite amounts, they are charged on a CATEGORY. Changes to a transfer are automatically reflected on the other. If the currency of the account is not the default one it is possible to link its exchange rate to the currency list or to fix it. Selecting a payee in an empty transaction will fill other fields as first transaction with same payee, if found.

Setting Form

Input amount setting form. Amount input format is: 0,01=$0,01; 1=$1,00. It is possible to set the character used as decimal point and thousands separator in Currency Menu. SETUP.

Currency List

List of currencies used by the accounts. Every entered amount will be converted to default currency. If the account is not in default currency, transaction amount will be shown twice: its currency and default currency. Use SETUP to set SiMoney number format options.

Currency Form

It is the form to fill in for currencies. The exchange ratio means how many unit of entered currency are required for 1 unit of DEFAULT currency. Note if the DEFAULT currency is changed all the other currency are changed to keep same ratio, while default became 1. If a currency is changed all the transactions of the accounts with that currency will be updated unless they are fixed.

Graphical Report

Graphical representation of the selected report. Use Keys 2/8 or up/down arrows to scroll up/down, 6/4 or left/right arrows to zoom/un-zoom or rotate a pie graph, 5 to set default zoom, 0 to view data in standard/increasing order, # to change graph type and to set up/down step to row or page, * to view a complete pie, 1/3 to scroll labels.

Textual Report

Report list. Here you can chose one of the possible report. Select it to see a graphical report and use LIST command to see a textual report. Use RANGE to set the range of elements to analyze.


Calculator form to make simple computations. Note the following functions are available in ALL the numeric fields (like the amounts). Press * several time quickly to insert decimal point and the currency available, # to insert the operators available, move the focus from input field to result field to see the computation. Right arrow at the end of a text and left arrow at its begin will delete the char closer to the cursor. It is possible to use expressions with numbers and - + * / () operators. A currency symbol after an amount will convert it into current currency. There are 10 numeric memories slots available used with operators rMx (store result r in memory x (0..9)), rAx (add result r in memory x (0..9)), rSx (subtract result r in memory x (0..9)) and # to start a new computation.

Split List

List of categories in which is split the current transaction. Add here all the transaction categories with their amounts. When everything is added UNASSIGNED amount should be zero.

Split Form

It is the form to fill in for Splits. Set the category and the amount of this part of the split. Use ALLMONEY to set automatically all unassigned money on the current category.

Synchronization Form

Synchronization form. The first time this form is opened SiMoney looks for serial, USB, infrared, Bluetooth connections and file system. All connections found are showed, to look again select CONNECT. Select the required one and push OK, you will be asked to connect the phone to the PC after a saving session, then start a terminal program on PC using standard settings.

Synchronization Procedure

I usually receive a lot of questions about the synchronization. It is based upon J2ME Serial Connection interface, which let the phone links to the PC thru USB/Serial/IrDA protocol. On the PC a simple terminal emulator will receive the data in text format and save it. Unfortunately the link procedure is not standardized by J2ME, therefore every manufacturer needs its own steps and phone settings. Here I will describe the procedure for Motorola phones.
In order to save SiMoney databases on your PC select synchronize option and then choose the first serial port of the list (I see COM0 on Motorola). The phone will ask you if SiMoney is allowed to use your phone com port. Answer yes and (only then) plug an USB cable from your PC to your phone. Then start HyperTerminal (you can find it in start -> programs -> accessories -> communication). It will ask for a connection name (write whatever you want) and then a port: select the same com port of the phone (which you can find in device manager after your phone is linked to the pc). At this point in Hyper Terminal select transfer -> capture text and chose a file name. Optionally push the key h (lower case) to see the help on the available options. Push the key b (lower case) in Hyper Terminal to get all your database in text format. Eventually push transfer -> capture text -> stop. In your text file will be stored all your databases. The backup files are simple text which you can easily manipulate in order to add, delete or modify records.
The restore procedure is exactly the opposite of backup: in SiMoney select synchronize option and then choose the first serial port of the list (I see COM0 on Motorola). The phone will ask you if SiMoney is allowed to use your phone com port. Answer yes and (only then) plug an USB cable from your PC to your phone. Then start HyperTerminal (you can find it in start -> programs -> accessories -> communication). It will ask for a connection name (write whatever you want) and then a port: select the same com port of the phone (which you can find in device manager after your phone is linked to the pc) and set the lowest baud rate available. Optionally push the key h (lower case) to see the help on the available options. Push the key r (lower case) in Hyper Terminal to send a backup of all your database. Eventually in Hyper Terminal select transfer -> send text and choose an old backup file that you want to restore on your phone.

Screen shot

Download SiMoney with standard money field

Executable Code
Source Code

Download SiMoney with custom money field

Although this is a new standard feature of MIDP 2.0, it does not work well on all mobile phones. I tested it only on Motorola phones. Try it, if it works on your phone, it is a great improvement for amount input.

Executable Code
Source Code