Quick Bootstrap - Loading Data

One of the first things you will want to do when starting out is to create your accounts to store your transactions.

When first loaded the account tree will be empty except for four basic categoryies Bank, Liability, Expense, and Income. Also at the top will be a place holder for future budgets that you will create.

To set up accounts quickly, you can select from a default set of accounts integrated into the application. To bring up this list, you can right click on one of the categories in the tree and select option Add Accounts From List.

Once you have your accounts set up you can import your transactions into Infinity PFM by selecting File | Import followed by either QIF, QFX, or OFX formats. This will bring up a file loader where you can select the file provided by your bank. The banks data will be loaded into a form where you can assign accounts to store transactions.

Importing Transactions

Importing files you downloaded from your Bank

Infinity PFM supports formats QFX, OFX, and QIF. Most bank websites will offer one or more of these. Once you have download from your bank's online banking site you can select FILE -> IMPORT from Infinity PFM's file menu followed by the format you are interested in.

Infinity PFM will prompt you fro the location of the file to import and once selected, the below dialog will load.

Once loaded you can now start assigning the transactions to accounts. To start you must select an import account to load the transactions into. (#1 in screenshot) This will be the Infinity PFM account you have created to track transactions from your bank.

Infinity PFM will try to automatically match transactions to accounts based on prior import history. For those not matched, you must manually assign an offset account to the transaction (#2 in screenshot)

If you are using accounts with different currencies (#3 in screenshot). Infinity PFM will provide an exchange rate if you're are using an offset that is in a different currency than your import account. You can override this value and type in your own rate if the provided value is not accurate for the transaction date you are interested in.

Finally, once all transactions have been assigned offset accounts and exchange rates (if necessary), you are ready to commit. (#4 in screenshot). After selecting commit, you will be prompted to confirm that you want to commit. Select Yes to commit the transactions and they will be added to the proper accounts you assigned.

Importing from the official Bitcoin client

If you are using Bitcoin you can import transactions from the official client from bitcoin.org. The actual process is identical to the process described above with the exception that you will be prompted to enter credentials to access the client. (see below)

You must frist configure the Bitcoin client to allow access to it's RPC functions and have the client running before you try to import. If you are not sure how to set up the Bitcoin client then go here for instructions.

Importing Comma Separated Files (CSV)

When importing a CSV file you need to first define how the columns are laid out. The import definition dialog below will display allowing you to select an existing definition or define a new definition. Clicking continue will load the transactions ad take you to the standard import screen for account assignment.

For the memo field you can also use the "+" characters between field names to combine multiple columns into the memo field.

Below is a working example for BitPay's CSV export

You must also define the format of date values using the Java 8 Patterns and Formatting as defined here .

Keeping your data safe

Your data is stored in your home directory in folder .infinitypfm. You backup your data as follows:

  • Select menu option: File -> Database -> Backup
  • Choose a folder to save the backup to.
  • A tarball of your data will be created at the chosen location with a date stamp on it.

Recurring Transactions

Setting up recurring transactions.

To set up recurring transactions, first open then recurring transactions view from the tool bar and enter information about your transaction at the top of the page.

Enter values for memo, the frequency of the transaction, the account you want to apply the amount to, the offset account you wish to use, and finally the amount.

Once this information entered and you are ready click the add button. Once clicked the recurring transaction will be added to the recurring transactions table just below the input header. At this point Infinity PFM will begin to track the recurring transaction by keeping an eye on the next run date column. Once a recurring transaction is due, Infinity PFM will automatically generate a pending transaction in pending transactions table at the bottom of the page.

At this point you can either commit the transaction or delete it. Note that transactions are not automatically committed.

Here is an example for a bi-weekly charge for a life insurance policy.

Currency Setup

Under View -> Options menu you select your default currency. The defualt is USD when first installed as shown below.

You can also set currency precision here which sets the number of decimal places to use when displaying numbers. As some currencies require very small denominations you can set this up to eight decimal places. The defualt is two decimal places.

By default two currencies, Bitcoin and US Dollar, are set up for you automatically and Bitcoin is set up with one update method for MTGox.com

Below is an example with the Rupee currency added along with an update method for it called re_rupee3

Clicking the refresh button on a currency will cause Infinitpfm to attempt to pull the latest currency exchange rate for your default currency.

The last update column shows the last time the currencies were refreshed via an update method. The Refresh All button will update all currency using the currently active update method.

You can have as many update methods as you want for each currency but only one can be active at a time.

If we wanted to add a second update method for Bitcoin to the Bitstamp exchange for example we can use this url from the Bitstamp site as a source for our update method.


An update method URL must return a JSON payload. If we load the ticker url into our browser for the above URL we get something like below

{"high": "421.97", "last": "415.75", "timestamp": "1384486524", "bid": "415.74", "volume": "28694.30332482", "low": "381.00", "ask": "415.77"}

To reference values from the payload to use for our currency we use a JSONPath like expression. For example if we wanted to use the "last" value from Bitstamp as the exchange rate for our Bitcoin currency we would use a path expresion like below.


Please note that full JSONPath functionality is not supported and only basic path expressions can be used.

Putting it all together we end up with a update method like below.

Choose the currency you want to assign the method to and click the Add button

Once added, the Bitcoin currency will look like below and clicking the refresh button will update the exchange rate using Bitstamp as the source.