12.2. Account Setup

Your default account currency is set in the Account tab under EditPreferences (GnuCashPreferences on MacOS).

Similarly, GnuCash offers an option to set your preferred currency for displaying reports (like the balance sheet and income statement). The option is called Default Report Currency, and is in the Reports tab of the GnuCash Preferences screen. You’ll want to set both options when you start using GnuCash because if (for example) your accounts are all in Canadian Dollars but the generated reports are all in US Dollars, the reports will just say that there are no data/transactions (or only zeroes) for the selected time period.

When you create a new account, you have the option to define the commodity in which that account is denominated. For accounts denominated in a currency, you can specify any of the currencies supported by GnuCash by simply selecting it from the currency commodity list. You will notice that the default currency is the currency that is defined for the parent account of the new account.

As an example, let’s set up a bank account scenario where you mostly work in US Dollars, but do also have a European bank account using the Euro currency, as well as one bank account in Hong Kong using Hong Kong Dollars. So, set up 3 bank accounts, one denominated in US Dollars, one using Euros, and the third in Hong Kong Dollars. One possible account structure for this would be:


-Assets (USD)
   -Current Assets (USD)
      -US Bank (USD)
      -European Bank (EUR)
      -HK Bank (HKD)
-Equity (USD)
   -Opening Balances (USD)
      -USD (USD)
      -EUR (EUR)
      -HKD (HKD)
 

Note

The currency of each account is shown in parenthesis.

Since in this example you mostly work in USD, all of the parent accounts are set to USD. Of course, if you mostly work in Euros, you could change the currency of these parent accounts to EUR. The totals shown in the account tree window will always be converted to the currency of each particular account. Notice, we also set up 3 Starting Balances equity accounts, used to initially populate the 3 banks.

Note

You could also set up just a single Starting Balance account and use a currency transfer to populate the different currency accounts. However, this is more advanced option, which is explained in a later section (Section 12.4.1, “Purchase of an Asset with Foreign Currency”).

Below you see the result of this example, in which you start with USD 10,000, EUR 10,000 as well as HKD 10,000 in the three bank accounts. Notice that the total of the parent accounts only shows the value of the currency of sub-accounts with matching currencies. In other words, the Total Assets and Total Equity values only reflect USD amounts, because GnuCash has no way of evaluating the value of EUR or HKD yet. Once you set up exchange rates between the currencies, the parent accounts will calculate the converted value of all sub-accounts. See the later section (Section 12.3, “Recording and Updating Currency Exchange Rates”) on ways to do this.

Initial multi currency Account Bank Setup

Initial setup of 3 bank accounts with different currencies.

Notice that the "Total (Report)" column is being displayed. This is configured in the column header row, select Arrow down and select Total(USD).

12.2.1. User-Defined Currencies

Usually when we talk about currencies, we mean government-backed currencies (or more precisely, currencies defined in ISO 4217). GnuCash does not allow you to create your own currencies. If you want to track non-ISO currencies, you can use either of two workarounds, depending on which fits your needs better.

The first method is to treat these as if they were a security—that is, like a stock or mutual fund. The second method is to use one of the dummy currencies for them.

Let’s say for example that you want to track loyalty points you’ve earned by buying from a certain group of businesses. The account which tracks your loyalty points will be Assets:Other:LoyaltyGroupRewardMiles.

In the first method, you define a new security, of type FUND, called RewardMiles. This is pretty straightforward—when you create the new LoyaltyGroupRewardMiles account, just set the account type to Stock or Mutual Fund, click the Select... button next to the Security/currency: box, and click New to define a new security of type FUND.

This is not really what the stock and mutual fund account types are meant for, but GnuCash will allow it. The downside is that you’ll have to enter a price for every transaction involving this account, because GnuCash needs the prices to figure out the monetary value of the points and treat them as one of your assets.

In the second method, you use one of the dummy currencies to track the loyalty points. These currencies are XTS (Code for testing purposes) and XXX (No currency). If you use one of these for your LoyaltyGroupRewardMiles account, you can enter transactions into the account without having to enter share prices for every transaction. And, you can keep using the same two dummy currencies to track all sorts of amounts—vacation dollars earned and used so far this year, vacation hours earned and used, health insurance benefits allowance used and remaining, and so on.

The drawback with this second method is that you cannot define exchange rates for the dummy currencies to convert them to ISO currencies. If you want to do that, you really should use the first method.