User:Paul Martinsen

From GnuCash
Jump to: navigation, search

Tracking Revenue in Foreign Currencies

Suppose you live in New Zealand and use NZD as your default currency. You have an website where you sell software to people from all over the world. Your website payment processor, PayPal for example, collects funds from your customers in USD. Sales accumulate in a US account until you transfer them into your New Zealand account.

Typically, you need to reconize the value of the sale in your local currency (NZD here) at the time of sale but you might also want to track revenue and the commisions in USD to reconcile with the payment processor's reports.

You might also track realised or unrealised gains in your US-account as the exchange rate flutuates so you can generate reports in your local (NZD) currency.


You can use the following set of accounts to track this with GnuCash. The account currency (set in the security/currency drop down on the account properties page) is shown in brackets for each account.

  • Income [NZD]
    • Sales [NZD]
    • Forex Gains [NZD]
  • Assets [NZD]
    • Current
      • US in NZD [NZD]
      • PayPal [NZD]
  • Expenses [NZD]
    • Commissions [NZD]
  • US Income [USD]
    • Sales [USD]
  • US Assets [USD]
    • Current
      • PayPal [USD]
  • US Expense [USD]
    • Commissions [USD]

Enter a Revenue Transaction

Suppose you sell a copy of your software for $USD50, the payment processor takes a commision of 10% ($USD5) and $NZ1 = $US2. Then you can record the sale (in your Income:Sales a/c) as follows:

Date Description A/c Charge Income
6/12/2008 Websale
US Income:Sales 50.00
US Expenses:Commissions 5.00
US Assets:Current:PayPal 45.00
Income:Sales 25.00
Expenses:Commissions 2.50
Assets:Current:US in NZD:PayPal 22.50

Essentially you've made entries for a US transaction and a corresponding NZ transaction. However, if GnuCash prompts you for an exchange rate, enter 1 as we are doing the exchange rate calculation manually. If your income for each sale remains the same, you can easily create new transactions by selecting "Duplicate Transaction" from the context menu in the account register then just update the local currency amounts.

Reconciling Forex Changes

Suppose some time later the exchange rate changes so that $NZ1 = $US1.50. The revenue earned hasn't changed; that's in the past and remains at the old rate. However, the USD and NZD balance in the PayPal account do not reflect the correct exchange rate. At 1/1.50, the NZ balance should be $NZ30.

To reconcile the NZD and USD balance of the PayPal account, add a foreign exchange adjustment in the Assets:Current:US in NZD:PayPal account as follows:

Date Description A/c Charge Income
1/1/2009 Forex adjustment
Assets:Current:US in NZD:PayPal 7.50
Income:Forex Gains 7.50


When you run a income or balance report, you need to exclude the US Income, US Assets and US Expense accounts from the report (Options on the toolbar). If you forget to do this, GnuCash may try to convert the US balance into a local currency for you. This will give a different result because GnuCash does the calculation for Sales (for example) based on a current or average exchange rate, not the rate applicable when the sale was made.

More Information

Peter Selinger has a very helpful discussion on multiple currency accounting here: