Your default account currency is set in the Account tab under → ( → on Mac OS X). You should set this parameter correctly, as it will save you much time when building your account structure.
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 is “no
data/transactions (or only zeroes) for the selected time
When you create a new account, you have the option to define the
commodity. For currency accounts, you can specify any one of the hundreds
of currencies supported by
GnuCash by simply selecting it from the
currency commodity list. You will notice that the default currency is
always whatever you have defined in the preferences. So, if you mostly
work with Euros, but have the occasional Ethiopian Birr account, be sure
to set your preferences to Euro.
As an example, let’s set up a typical 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, setup 3 bank accounts, one using the Euro currency, one in US Dollars, and another in Hong Kong Dollars. One possible account structure for this would be:
-Current Assets (USD)
-US Bank (USD)
-European Bank (EUR)
-HK Bank (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. To totals shown in the account tree window will always be converted to the currency of each particular account. Notice, we also setup 3 Starting Balances equity accounts, used to initially populate the 3 banks.
You could also setup 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 10.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 show the value of the currency of sub-accounts with matching currencies. In the future you can setup the exchange rates between the currencies, and the parent accounts will calculate the converted value of all sub-accounts. See the later section (Section 10.3, “Recording/Updating Currency Exchange (How-To)”) on how 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 the international standard called 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.
Let’s say for example that you want to track RewardMiles, which count how many loyalty points you’ve earned by buying from a certain group of businesses. The account which tracks your RewardMiles will be Assets:Other:LoyaltyGroupRewardMiles.
The first method is to 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 usually lets you
decide how you want to use it, instead of dictating. The downside is
that you’ll have to enter a “price” for every
transaction involving RewardMiles, because
GnuCash needs the prices to figure out the
monetary value of RewardMiles and treat them as one of your
The second method is to use one of the “dummy”
currencies to track the RewardMiles. The dummy 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. You can well imagine that
GnuCash can be used as a hub for all sorts
of personal metrics, in addition to finances.
The drawback here 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.