Your default account currency is set in the Account tab under → ( → on Mac OS X).
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
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
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:
-Current Assets (USD)
-US Bank (USD)
-European Bank (EUR)
-HK Bank (HKD)
-Opening Balances (USD)
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.
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
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.
Notice that the "Total (Report)" column is being displayed. This is configured in the column header row, select “Total(USD)”.and select
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 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 button next to the Security/currency: box, and click 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
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.