[GNC] Multicurrency Splits and the resulting Transfer Funds dialog
homer99 homer
stphomer99 at hotmail.com
Sat Jun 28 02:00:02 EDT 2025
In the example you cite, I fully understand the end result of the transaction as you explain. And, in my case, at the time of data entry, I know the USD amount of 100 and the CAD amount of 136.80 due to the fact that I get an immediate email from my CAD bank confirming the amount withdrawn from my CAD account for this transaction. So, during data entry, I am able to be in the USD register to post the addition of the 100USD to Cash and the direct entry of the deduction of 136.80CAD for the CAD Bank account split, before the Transfer dialog is presented to show the resulting exchange rate (which will certainly be different than the lookup value returned by GNUCash due to bank uplift on their offered exchange rate), and both of these numbers are reconcilable back to statements, or simply use the fully flexible Transfer button as in Case 1, outside of any registers.
Take this now to an expense entry, which is recording expenditure of USD Cash to a CAD Expense account. In this case, I do not know the CAD equivalent amount at the time of entry (nor do I have any statement or physical transaction to reconcile to, so the resulting amount is somewhat arbitrary (but should be defensible in a tax situation) unless I am to lookup the exchange rate in advance (outside of GNUCash), do the manual calculation (GNUCash assists this in the register split with allowing calculations inplace) and then enter that amount on the CAD expense split line before the Transfer dialog is presented.
I was simply hoping that GNUCash would ease this process since it has all the necessary information to help. GNUCash would simply need to detect that I "may" be entering the CAD split as a CAD amount or a USD amount, based upon how I manipulated the fields in the Transfer dialog, if they were all available to me (as they are if I chose to simply use the Transfer button to begin with)
Perhaps, the use case for a flexible Transfer dialog could be that the user is within the context of a transaction, different from an already entered and balanced one.
I do see your point for the need of a "controlled" Transfer dialog in the context of an already entered transaction to review the assigned exchange rate value.
Thanks for the discussion.
________________________________
From: John Ralls <jralls at ceridwen.us>
Sent: June 27, 2025 23:56
To: homer99 homer <stphomer99 at hotmail.com>
Cc: gnucash-user at gnucash.org <gnucash-user at gnucash.org>
Subject: Re: [GNC] Multicurrency Splits and the resulting Transfer Funds dialog
> On Jun 27, 2025, at 11:40 AM, homer99 homer <stphomer99 at hotmail.com> wrote:
>
> Thanks for the reply, but I must admit I may not understand exactly what you are saying.
>
I’ll try again.
Every split has two numbers: An amount in the split account’s currency and a value in the transaction currency. Transactions must balance, meaning that the values have to sum to 0, with debits represented as positive numbers and credits as negative numbers.
The transaction currency is the account currency for the register in which you create the transaction: If that register is the foreign currency account then the foreign currency is the transaction currency. In that case GnuCash must convert the home currency amount into the transaction (foreign) currency to balance the transaction.
Let’s make a concrete example. Suppose you’re visiting San Francisco. You will have created a Cash-USD account. You go to the ATM and withdraw 100 USD. You’ll likely book that by opening the Cash-USD account and entering
2025-06-27 US Cash from ATM Assets:Current Assets:Chequing 100 in basic view.
In Split View that would look like
2025-06-27 US Cash from ATM
Assets:Current Assets:Cash-USD 100.00
Assets:Current Assets:Chequing 136.80
Trading:Currency:USD 100.00
Trading:Currency:CAD 136.80
But that shows only the amounts. Suppose all registers were like stock registers and showed price and value too. Then the Split View would look like
Amount Price Debit Credit
2025-06-27 US Cash from ATM
Assets:Current Assets:Cash-USD 100.00 1.00 100.00
Assets:Current Assets:Chequing -136.80 0.731 100.00
Trading:Currency:USD -100.00 1.00 100.00
Trading:Currency:CAD 136.80 0.731 100.00
The price is what you enter in the Transaction Dialog’s exchange rate section. It’s the rate from CAD to USD because the transaction currency is USD. Had you created the transaction in the CAD Chequing account register it would be
2025-06-27 US Cash from ATM
Assets:Current Assets:Cash-USD 100.00 1.368 136.80
Assets:Current Assets:Chequing -136.80 1.00 136.80
Trading:Currency:USD -100.00 1.368 136.80
Trading:Currency:CAD 136.80 1.00 136.80
Now the non-unity prices are on the USD splits and are USD->CAD
Of course a currency transaction like this doesn’t display in a stock-format register so the extra Amount and Price columns aren’t there. But you can still see the price and value by viewing the transaction in Split View. Right click on one of the USD splits and select Edit Exchange Rate… from the context menu. If you created the transaction in a USD-denominated register it will pop a message “The two currencies equal each other.” Do the same in a CAD split and you’ll get the Transaction Dialog with everything disabled except the exchange rate section. If you look at a transaction created in a CAD account it will be the USD splits that have exchange rates and the rate will be USD->CAD.
Regards,
John Ralls
More information about the gnucash-user
mailing list