Posting error when currency rate is different between MR and PO


I am using costing method Average PO.

I create a Purchase Order with a price list in foreign currency EUR. My schema's functional currency is THB.
Using currency type "Spot", I maintain the currency rates for EUR to THB. The rates differ between periods. In my simulation scenario, the currency rates EUR->THB are different during MR and Vendor Invoice.
I perform the MR on 10/6 against the Purchase order with Spot rate = 1:41.
I perform Invoice (vendor) on 11/6 against the Material Receipt with Spot rate = 1:42.
I examine the Matched invoice and find that the transaction can't be posted due to following error: Posting Error: Source Not Balanced (org.compiere.acct.Fact isSourceBalanced)

Selecting "Use Suspense Balancing" and "Use Currency Balancing" solves the issue and the matched invoice can now be posted.
As I would expect, the exchange rate difference between MR and Invoice is correctly debited to product inventory and the product cost record is correctly updated as well.

Here is where I'm getting confused:

The Currency Balancing account is debited with the amount of the exchange rate difference, and the Suspense Balancing account is credited with the exchange rate difference amount.
I don't see the point for these 2 posting lines because the exchange rate difference is already correctly posted to product inventory.

My questions are:

What is the purpose of "Use Currency Balancing" and "Use Suspense Balancing". I couldn't find any documentation detailing the exact purpose.
How are these 2 accounts supposed to be defined? Are they supposed to be B/S or P/L accounts or one of them a B/S account and the other a P/L account? As I see it, these 2 accounts should certainly be of the same account type, else I'd see an impact in my P/L which is completely undesirable.
In the scenario described above, how do these 2 posting lines make sense?




Heng Sin Low


Soo Fang Lee


Tested By


Fix versions