Handling multiple currency in GNUCash

Anna's unattended mail anna.morris-1okt59qe at cool.fr.nf
Sat Oct 20 21:09:45 EDT 2012


On 2012-10-19, Abrash Pervaiz <abrash_p at hotmail.com> wrote:
> The tricky part is handling multiple currencies. The business I am
> working with uses three currencies, and I am having trouble in
> figuring out how to record gains/losses due to currency
> fluctuations.

I have come up with a way to record forex gains and losses.  Whenever
you buy something in a different currency, in most cases you are not
paying the spot realtime market exchange rate.  You're paying whatever
the bank or non-transparent exchange service decided to charge you,
which is always less favorable than the realtime spot rate.

When I record such a transaction, I record the exact time of the
transaction (down to the minute) in the description (because
unfortunately gnucash does not have sufficient precision on the
transaction time).  This relieves me of having to login to a forex
trading platform right that instant and see what the *real* exchange
rate is.  Credit card receipts usually have a timestamp that is
precise enough.  Then (temporarily) I use a rough, arbitrary exchange
rate that will be corrected later.

Later, when the "actual" (aka retail) exchange rate appears on the
credit card or whatever, I proper the records.  Using the timestamp, I
find out the historic realtime FX rate that was actually trading that
minute, and I use that rate in the asset-expense transaction.  Then I
create a separate row in the "expense:forex" account to offset the
difference between the realtime market spot rate, and the actual
retail rate that was paid for the good or service.

This enables all accounts to be balanced, while also recording the
actual exact loss due to the exchange.

Finding the realtime market FX rate:

There are *very* few free sources for realtime historic market data
that have more precision than a daily average.  Most market data is
either sold (you must subscribe to it), or it's a blunt daily average.
However, there are a couple of exceptions, like gaincapital.com, which
has free historic market rate FX data that goes down to seconds.

It would be useful if gnucash would accept a timestamp that is more
precise than a whole day, and then query gaincapital for the relevant
FX data.  But it doesn't, so the process is manual human labor
intensive (although it can be scripted to some extent).




More information about the gnucash-user mailing list