I'm looking to use GnuCash for investment tracking and while I evaluate the software, I am specifically interested in how to get it to properly calculate the ACB of foreign investments in CAD.

For Canadian tax rules (as far as I understand them), reporting capital gains or losses on foreign stock (e.g. US) must take into account the exchange rates on the dates the transactions occurred.

For example, if I wanted to purchase US$100 in XYZ Corp, and the CAD/USD is 1.1, then my cost basis should be CA$110. Later on, XYZ Corp shares increase to $120, but the CAD/USD falls to 1.05, my proceeds from the sale are CA$126. Therefore, my capital gain is CA$16.

Is it possible to get GnuCash to record the exchange rates to be used for calculating cost basis and proceeds? It appears that the reports only use the most recent prevailing exchange rate.

  • If you designate the CAD as the account currency, doesn't it not use the exchange rate for each transaction based on its date?
    – littleadv
    Commented Jun 9, 2013 at 4:24
  • I suppose I could use CAD as the account currency for all accounts, but then it's wouldn't be completely accurate in cases where CAD was not actually used to purchase the stock. In those cases, cost basis must still be converted to CAD on the day of purchase even if the actual currency was exchanged on a different date.
    – fideli
    Commented Jun 9, 2013 at 16:54
  • Why for all accounts? You can chose currency per account
    – littleadv
    Commented Jun 9, 2013 at 20:12
  • I wasn't clear. Let's say this is for a USD account I own. If I set the currency to USD as it should be, I cannot properly keep track of the ACB in CAD, as is required by the CRA. That is the problem. It is undesirable to denote a USD account in CAD just to solve this issue as I may be interested in knowing exactly how many USD I have in the account, and I don't always need to know the CAD equivalent. Only at tax time.
    – fideli
    Commented Jun 9, 2013 at 23:59
  • I'm confused. You said CAD is the primary currency, how its a USD account?
    – littleadv
    Commented Jun 10, 2013 at 0:02

2 Answers 2


You should account for everything in your local currency (that is the currency your taxes are collected in). At the end of the day you have bought those shares for 110 CAD and sold it for 126. The fact that there were currency conversion is irrelevant.

And once you have done this you can use GNUCash's "View Lots..." menu to manage the sale of the stocks and create the orphan transcations in the asset view you can transfer to your capital gains income account.

I had to learn this the hard way. The company I work for was bought by another company: it's stocks were in the London Stock Exchange, accounted in GBP. The US company that bought us paid USD for the stocks, then the proceeds were paid to me in HUF right to my bank account. You can imagine the mess this have caused in GnuCash... Which i could have avoided if I just account for everything in HUF.


You would need to use Trading Accounts. You can enable this, File->Properties->Account settings tab, and check Use Trading Accounts.

For more details see the following site: http://wiki.gnucash.org/wiki/Trading_Accounts

  • Trading accounts are just there to keep to book balanced all the time. It contains all transactions, grouped by commodity. Which is not very useful for OP's sitation if the has many open positions.
    – Calmarius
    Commented Mar 20, 2020 at 14:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .