Multicurrency ledger - how to put it at 0

Hi all,
I have a small issues on a multicurrency account and I don’t know how to solve it.
Cie currency is EUR. I have an account in AUD.
I made 2 transactions:
+192 AUD (or 131.7 EUR)
-192 AUD (or 135.21 EUR)

Now the AUD ledger is of course 0, but not its equivalent in EUR. See picture below.
Also the Balance sheet show 3.5 EUR on this account… of course that’s wrong … the account should be 0.
How to I make a trasaction to offset these 3.5 EUR. which is an exchange gain / loss. I want both AUD and EUR to be 0 on the ledger.

@f_deryckel read this

Thanks @max_morais_dmm for the link, but I still don’t understand how I can get out of my situation.
I understand about exchange gain / loss, but I really don’t see how to record that discrepancy through a JV.

The operation is simple. Cie currency is EUR.
Let’s say (JV01) I buy $1,000 for 950 EUR
Let’s say a month later (JV02) I sell my $1,000 for 960EUR
The cash account for the USD should be 0 and it’s value (in EUR or in any other currency for that matter should also be 0!)
This is a simple multicurrency transaction … per se there is no currency gain/loss as it is a transaction between 2 cash account (or bank account).

Also if you look at the picture I posted, you see that 0 AUD = 3.5 EUR … That is obviously wrong (regardless of what is the exchange rate!!) No need to be an accountant to see that.

I think there is something fundamentally wrong in the way ERPNext handled the multicurrency.
See some of my comments here: Accounting Bugs in Multicurrency · Issue #7743 · frappe/erpnext · GitHub

@f_deryckel in fact have a gain/loss in exchange rate, due a revaluation of exchange rates against the time.

The operation made by ERPNext is right!
You need to consider a gain/loss in exchange.

Because if you buy 950 paying 1000 and you sell 960 receiving 1000, you certainly have a loss in exchange.
You need have 10 AUD more, to have the same 1000 USD, if you need more local currency tomorrow before today, to buy the same amount of another currency, you have a loss in exchage (your money is devaluing).

1 Like

Hi @max_morais_dmm,
I’m happy to make a currency gain / loss exchange. but how?
If I have transaction between 2 banks accounts (both belonging to my company), their ledger in their respective currency should be right.
The bank statement from my foreign currency account should match my erp foreign account ledger and similary the bank statement from my local account should match my erp local account ledger
Imagine the following situation.
I have a new Cie.
on 01.01 I deposit 1,000EUR in my bank account. (quick JV01 from equity to Bank assets)
on 02.01 I wire that 1,000 EUR to my other bank account in USD and I get for that $1,100 USD. (multicurrency JV02. Eur_Bank credited 1,000 EUR, USD_bank debited 1,100USD)
At this stage both banks ledger are correct (I have now 0 Eur and 1,100 USD)
A month later, on 01.02, I wire back that $1,100 USD to my EUR account and due to change in currency I get now 1,020 EUR

HOW should I do JV03 so that it reflects the ledger of both my bank account?
normally it should be:
JV03, multicurrency, $1000 Credited, 1020 Eur Debited.
Ledger should be 1,020 EUR on my EUR Bank account and $0 USD on my US bank account.

These were just 2 cash transactions.
My company assets should now be 1,020 Eur.

BTW: we do this type of back and forth transactions all the time. We are in a country were the currency is not stable. As soon as we have cash, we transform it to USD or GBP or ZAR. When month end arrive and we have to pay salary or we have to pay a local supplier, we convert back to the local currency.

@f_deryckel the point is:

First JV
01-01 - Bank 1 - 1,000.00 EUR
01-01 - Bank 2 - 1,000.00 USD (exchange 1 = 1)

Second JV
02-01 - Bank 2 - 1,000.00 EUR
02-01 - Bank 1 - 909.90 USD (exchange 1 = 0.909090901)
02-02 - L/G EX - 190.10 USD (exchange 1 = 0.909090901)

No third JV

Is bank 01 in EUR or USD? you are interchanging currency on Second JV.

In this way, my US bank statement will never match my erp US bank ledger.

let me make a sample in excel, give me some minutes!

Thanks so much for your time.


I think this can help you

Here is the excel

Basically, we have 2 operations for each scenario, loss y gain!

@f_deryckel one important point, is that the exchange rate is reversed in some cases, for example.

If the first case of each scenario I’m using the exchange rate 1 USD = 10 EUR
In the second case of each scenario I’m using the exchange rate 10 EUR = 1 USD

It’s a bit confuse how ERPNext manage that, because for some cases the operations sounds like a division, while it’s a multiplication ever!

I’m showing one scenario to manage Loss and other for Gain, in case of doubt, let me know!

Say you receive the initial EUR 1000 from a debtor/receivables account, the JV would be
EUR Bank debit EUR 1000
Debtor/Receivable credit EUR 1000
Date 01.01

The second entry would be Multi currency
USD Bank debit USD 1100
Euro Bank credit EUR 1000
Date 02.01
Exchange rate 0.909091 to be set for USD acc row

The third entry where you find a problem would be
Euro Bank debit EUR 1020
USD Bank credit USD 1100
Forex Gain/Loss account credit EUR 20
Date 01.02
Exchange rate 0.909091 to be set for USD acc row
Note: Forex gain/loss account is in home currency so EUR over here.

This takes care of the accounting effect.


Damn, I facing the same problem. Base currency is BHD. I have a Euro Bank Account account. Every JV DR CR is equal in both currencies view. I have closed my Euro account and moved the funds to BHD account. After passing all entries my Euro account is Zero as per GL. When I have view it in BHD it shows balance of BHD 96.956.

I cant pass any adjustment entry as there is not excess Euro funds. For every JV I have set the correct FX rate given by the bank.

BHD view

Euro View

Any idea how to fix this issue?

ERPNext: v11.1.48 (master)

Frappe Framework: v11.1.43 (version-11)