Let's begin with an example:

I have 1000 RUB. Then I buy 10 USD with an exchange rate of 60 RUB/USD, so I have 400 RUB and 10 USD. And after that I sell 10 USD for 80 RUB/USD, so I have 1200 RUB.

What is the correct way to track that in GnuCash?

If I just create 2 transactions of assets with different exchange rates, it would look like I did not get any income, because the income accounts are not involved in any of these transactions. Also when I open the Balance Sheet report, there is Unrealized gain of 200 RUB in the Equity section, however the gain in actually realized.

  • The term "gain" is not very well defined for your question. Whether or not you had any gain in this transaction depends on your accounting method. Technically you could say that you had 400RUB and 10USD from the start to the end, no gain, just different ways of representing the same value. Or, if you account in USD you could say you had loss because the 400USD which were initially 6.66USD are now 5USD.
    – littleadv
    Jan 8, 2022 at 19:39
  • Where can I read more about accounting methods? Let's say my main currency is RUB. I would expect to have gain of 200 RUB in the example above. Maybe I could totally separate RUB from USD, and count all rubles spent to buy dollars as expenses and all rubles got from selling USD as income. Jan 9, 2022 at 10:05

1 Answer 1


If you want it to be tracked as an investment - you should set it up like you'd do with any other investment. You'll record a new asset "10USD" with value of 600RUB (your equity).

When you sell - you'll transfer that asset to your checking account as "800RUB", which will force you to add 200RUB from somewhere - you'll add a "foreign currency gain" income account for that. All the accounts have to be in your operational currency (RUB) for this to work.

Keep in mind that for investments you keep your equity (invested amounts) on your accounting balance sheet, which may not match the current value. When you sell - you recognize your gain or loss, and that's when they show up on your accounting ledgers. Double-Entry Accounting (which GnuCash is trying to implement) won't work otherwise.

You must log in to answer this question.

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