Multi currency invoicing (bug 715123)

Geert Janssens janssens-geert at
Tue Dec 3 17:29:11 EST 2013

I'm looking into bug 715123 - Post invoice problem, cannot unpost.

Mini summary: when an invoice is created with entries referring to 
accounts in a different currency than the invoice currency, the user is 
asked for an exchange rate at post time. This works fairly well, except 
that if the tax table associated with the entry also uses a foreign 
currency (relative to the invoice currency), the post process aborts.

The conceptual fix is to check the tax tables for foreign currencies as 
well and if they have one, ask for the respective exchange rate(s). In 
concept this is fairly easy to do.

I am however mulling over the level of detail to expose to the user. The 
current implementation asks the user for an exchange rate for each entry 
for which no exchange rate is known (yet).

Concrete example: invoice in EUR, 3 entries referring to a USD account. 
When this invoice gets posted: the user will be asked for a conversion 
rate from EUR to USD only once - for the first entry referring to a USD 
account. The other entries are skipped because the exchange rate is 
already known. To get the exchange rate gnucash will show the user the 
amount of the entry (tax included).

And there's my point of uncertainty: what amount would make most sense 
to the user to see for a conversion:

- the amount of one single entry, with or without tax included ?
- the total amounts for each currency as they appear on the invoice ? In 
the example that would mean the sum of the three USD entries, possibly 
with tax if tax is in the same currency. If tax is in yet another 
currency another exchange rate would be asked for the total amount of 
all taxes in that currency.

For me the second option makes more sense.

Note particularly in the second option that currently it's possible to 
have entries in invoices for which the referring account's currency is 
different from the accounts' currencies in the tax tables. I'm not sure 
if there is any real world use case for this, but the code doesn't 
restrict this. You can currently even create one tax table with accounts 
in several currencies, so for one invoice entry you could end up with an 
invoice currency, and entry account currency and several tax table 
account currencies all being different.

So the second question would be: how flexible should gnucash be to still 
be practical and not overly confusing ?
For example, would there exist real world situations where a tax table 
should support accounts in multiple currencies ?


More information about the gnucash-devel mailing list