A customer in Singapore agrees to pay you USD 1,000 for a piece of work. Your ledger is in ringgit. You have to record this, and both of the obvious approaches fail.
Record USD 1,000. Now your receivables account contains RM8,000 from local customers and USD 1,000 from this one, and the total is meaningless. You cannot add ringgit to dollars any more than you can add kilometres to litres. Every report that sums receivables produces a number that is not a quantity of anything.
Convert to ringgit and store only that. At 4.20 you record RM4,200 and throw the dollars away. Two months later the customer asks what they owe. You cannot tell them. Dividing RM4,200 by today's rate of 4.35 gives USD 965.52, which is not the agreement — they owe USD 1,000, and always did. You have destroyed the fact you most needed to keep.
Both, because they answer different questions
Neither figure is optional, so both are recorded on the same line:
- The transaction currency amount — USD 1,000 — preserves the agreement. It is what the customer owes, what the contract says, what you will chase, and it does not change when exchange rates move.
- The base currency amount — RM4,200 — makes the ledger summable. Every line in the ledger carries a base amount in the same unit, so totals, trial balances and statements are arithmetic on comparable quantities.
Along with these you store the rate used and the date it applied. That rate is not a lookup you can redo later; it is a historical fact about the transaction, and the next section is about why that matters.
A trial balance must be in base currency for the same reason. Its whole purpose is to prove that the sum of debits equals the sum of credits, and a sum across mixed units cannot prove anything. Multi-currency does not weaken the arithmetic guarantee; it means the guarantee is stated in one chosen unit.
Where FX gains come from
Now the interesting part. You invoiced at 4.20 and posted:
| Debit | Credit | |
|---|---|---|
| Accounts receivable (USD 1,000 @ 4.20) | 4,200 | |
| Sales revenue | 4,200 |
Two months later the customer pays USD 1,000. The rate is now 4.35, so RM4,350 lands in your bank. Post the obvious two lines and the entry does not balance: cash up RM4,350, receivables down RM4,200, RM150 unaccounted for.
The RM150 is real — it is in your bank account. So where does it belong?
Not in revenue. The sale earned USD 1,000, exactly as agreed, exactly as delivered. Nothing about the work changed. Put the RM150 in sales and your revenue figure now moves with the currency market, and you can no longer tell whether a good month came from selling more or from the ringgit weakening. Trading performance becomes noise.
It belongs in a foreign exchange gain, which is its own income account, separate from revenue:
| Debit | Credit | |
|---|---|---|
| Cash at bank | 4,350 | |
| Accounts receivable | 4,200 | |
| FX gain | 150 |
The entry balances, receivables clears to zero, and your P&L now says two distinct things: you earned RM4,200 from working, and RM150 from holding a dollar claim while the dollar rose. Those are different activities with different risk, and a business that conflates them cannot manage either.
Had the rate fallen to 4.10 you would collect RM4,100 and post a RM100 FX loss on the debit side. Same mechanism, opposite direction.
FX gains and losses are not revenue. They measure exposure to rate movement, and they belong in accounts that say so.
Realised and unrealised
The RM150 above is a realised gain. The money arrived, the rate is settled, the fact is final.
But suppose the invoice is still outstanding on 31 December and you have to produce a balance sheet. Receivables carries RM4,200 at the old rate, while the claim is worth RM4,350 at the year-end rate of 4.35. Report RM4,200 and the balance sheet understates what you are owed.
So you revalue: restate the open balance at the reporting date's rate and post the RM150 difference as an unrealised gain. The claim is still USD 1,000; only its ringgit measurement moved.
The word unrealised is doing real work. Nothing has been collected. If the rate slips back to 4.18 in January, the gain reverses, and next month's statements show a loss where this month showed a gain. This is not an error — it is an honest report of a position that genuinely fluctuates. Keeping realised and unrealised amounts in separate accounts lets a reader tell the difference between money earned and money merely measured, which is exactly the distinction a lender or an auditor will want.
Which is the theme of the whole course, one last time. The ledger stores facts. Currency means each fact needs two measurements and the rate that connected them — and once you keep all three, everything downstream still derives cleanly.

