[GNC] Enhancement request: multi-currency accounts

Anton Tsyganenko anton-tsyganenko at yandex.ru
Tue Oct 18 05:34:13 EDT 2022


Let's take a look on accounts that are created in gnucash by default. 
Generally most of the accounts may be multi-currency, i. e. not bond to 
a specific currency: you may have cash in multiple currencies, your 
opening balances may be in multiple currencies, you may have incomes and 
expenses in multiple currencies. Bank accounts generally have only one 
currency, but there are some banks that offer multi-currency cards and 
deposits. These surely can be considered as just a few different 
accounts, but it may be more convenient to group them together.Now I 
solve that by creating sub-accounts for each currency I need for each 
account where I need it. It looks like:
Expenses:Dining:USD
Expenses:Dining:EUR
Expenses:Dining:CAD
Expenses:Transport:USD
Expenses:Transport:EUR
Expenses:Transport:CAD

It's very painful to create all of them. I know that I may have only one 
account in my _main_ currency, but I prefer all currencies to be equal 
and not perform redundant currency conversions, for example when I spend 
CAD cash for dining in Canada.

So my proposal is:

All accounts that user creates are "multi-currency", like placeholder 
accounts without any specific currency. Sub-accounts for each currency 
are created automatically, when the first operation in this currency in 
this account is made. If a multi-currency account is deleted and 
operations are moved to another account, operations in all the 
subaccounts are moved to the corresponding subaccounts of the second 
account. Balances can be shown as a sum of (non-null) amounts in 
different currencies (but sometimes can be converted to one currency). 
In a multi-currency account's view (basic ledger) there should be just 
an additional column -- currency of an operation (editable as a 
drop-down menu). So user opens account "cash" and sees something like:

Date | Description | Transfer | Debit | Credit | Currency | Balance

2022-10-18 | Dinner in a restaurant | Expenses:Dining | | 25 | EUR | 100 
USD + 55 EUR

That operation is a transfer of 25 EUR from Assets:Cash:EUR to 
Expenses:Dining:EUR.

I would be happy to discuss the concept.


More information about the gnucash-user mailing list