Nordlet

← الأساسيات / الشروحات

Accounting with Multi-Currency: Realized vs Unrealized FX Gains and Losses

How foreign-currency transactions are recorded and revalued, the difference between realized and unrealized differences, and why you must store both currencies.

When you issue an invoice in a currency other than your base currency, you immediately face two problems. The customer owes you 10,000 USD; your books are kept in EUR; and the exchange rate on the date of the invoice will not be the same as the rate on the day they pay.

That gap represents a foreign exchange difference, and it is a real gain or loss, not a rounding artifact. Multi-currency accounting is the discipline of recording it accurately in the right place at the right time.

Three currencies, not one

Every foreign-currency transaction involves up to three currencies:

  • Transaction currency: The currency in which the document is denominated. The customer owes 10,000 USD.
  • Functional (base) currency: The currency in which your books are kept and financial statements are prepared. In Nordlet, this is the company's base currency, determined by its country of registration when the company is created.
  • Presentation currency: The currency in which you report your financials, if different from the base currency. This is primarily relevant in consolidation.

The first rule of building this: store the amount in both the transaction currency and the base currency, along with the exchange rate used. Storing only the converted amount destroys your ability to tell a customer what they owe in their own currency, while storing only the foreign amount means every report must perform a reconversion - at which rate, and from what date? Systems that get this wrong cannot be fixed simply by adding a column later.

Recording a transaction

Suppose you invoice a US customer for 10,000 USD when the exchange rate is 1.10 USD per EUR:

Account Debit Credit
2410 Trade receivables (10,000 USD) 9,090.91
5001 Service revenue 9,090.91

The receivable is both 10,000 USD and 9,090.91 EUR. Both statements are true, and both are required.

Realized differences

The customer pays the 10,000 USD when the exchange rate has moved to 1.05:

Received:  10,000 USD ÷ 1.05 = 9,523.81 EUR
Recorded:  10,000 USD ÷ 1.10 = 9,090.91 EUR
Gain:                             432.90 EUR
Account Debit Credit
2710 Bank (USD account) 9,523.81
2410 Trade receivables 9,090.91
5803 Positive exchange-rate effect 432.90

This gain is realized because the transaction is complete, the funds have arrived, and the difference is permanent. It belongs in the financial activity result, not in revenue: you did not sell more goods, the currency simply moved.

The mirror image posts to account 6803 for negative exchange-rate effects.

Unrealized differences

Now assume the accounting period ends and the customer has not yet paid. You still hold a 10,000 USD receivable recorded at 9,090.91 EUR, whereas the closing rate indicates it is worth 9,523.81 EUR.

Accounting standards require monetary items - such as receivables, payables, cash, and loans denominated in foreign currencies - to be retranslated at the closing rate on each reporting date, with the resulting difference recognized in profit or loss:

Account Debit Credit
2410 Trade receivables 432.90
5803 Positive exchange-rate effect 432.90

This gain is unrealized because no funds have been received yet, and the exchange rate may reverse tomorrow. It is recognized nonetheless because the balance sheet must reflect the true worth of the claim at the reporting date.

Non-monetary items are not retranslated. Inventory, fixed assets, and prepayments acquired in a foreign currency remain at their historical exchange rate, as they do not represent claims to a fixed number of currency units.

When the invoice is eventually settled, the previously recognized unrealized difference becomes realized. Implementations either reverse the revaluation at the start of the next period and let the settlement post the full difference, or track the revalued carrying amount and post only the incremental change. Both methods arrive at the same total, and mixing them results in double-counting.

Which rate, and when

  • Transaction date: The exchange rate on the date of the invoice or payment. Most systems use the rate published by the central bank; in the euro area, this is typically the ECB reference rate, and Lithuanian practice follows the rates published specifically for accounting purposes.
  • Closing rate: The rate on the reporting date, used for revaluing monetary items.
  • Average rate: Sometimes permitted for income and expenses over a period as a practical expedient.

Whichever rate you choose, apply it consistently and store the rate on the transaction record. Stating "we used the ECB rate" is not reconstructable years later; a stored rate per document is.

How Nordlet handles it

Invoices carry their own currency, while the ledger is maintained in the company's base currency: the national currency of the company's country, unless another was selected upon creation. When a document is issued or registered, the FX rate for its date is resolved and stored directly on the document, and the base-currency amounts are computed from it. Consequently, every foreign-currency invoice retains both its face amount and the exact rate used for conversion.

Rates are fetched from the exchange-rate table, which supports both centrally imported rates and company-specific overrides. Lookups fall back to the most recent rate on or before the target date rather than failing on weekends or holidays. Imported rates are quoted per 1 EUR; for companies whose base currency is not the euro, rates are crossed through the euro, whereas company overrides are always quoted as units of the foreign currency per 1 unit of the company's base currency.

Realized FX differences are automated. When a payment is matched against an invoice in bank reconciliation, the difference between the invoice's recorded base amount and the payment's base amount is posted via dedicated posting rules - bank.fxGain to account 5803 and bank.fxLoss to account 6803. Partial payments generate proportional differences. The payment does not need to be in the same currency as the invoice: receiving 915 EUR in a euro account can settle a 1,000 USD invoice. The matching process takes the amount settled in the invoice currency (invoiceAmount); if omitted, the payment's base value is converted using the rate stored on the invoice, capped at the remaining open amount. The invoice's paid amount increases by that invoice-currency amount, and the residual between the payment's base value and the base value relieved at the invoice rate constitutes the realized difference. Undoing the match reverses the exact amount previously recorded.

Period-end revaluation of open balances is not automated. This is an intentional limitation: unrealized differences on foreign-currency receivables, payables, and bank balances are not computed or posted automatically by the system. At period end, this revaluation must be performed via a manual journal entry, informed by the open items available in POST /v1/reports/partner-balances and the closing rate.

For groups, consolidation operates as a separate mechanism: each entity's financial statements are translated into the group's presentation currency using the closing-rate factor, with the translation factor reported per entity so that the effect remains transparent rather than obscured.

FAQ

What is the difference between realized and unrealized FX gains?

A realized gain occurs when a foreign-currency transaction is settled, meaning the funds have moved and the difference is permanent. An unrealized gain arises from revaluing an open balance at the reporting date, where no funds have been received yet and the exchange rate may fluctuate before settlement.

Which exchange rate should be used for an invoice?

The rate on the transaction date, typically a rate published by a central bank. The most critical requirement is applying it consistently and storing the utilized rate on the document so the conversion can be audited later.

Are foreign currency gains part of revenue?

No. They belong in the financial activity result, separate from operating revenue, because currency fluctuations do not constitute sales. Presenting FX gains as part of revenue overstates operational trading performance.

Which balances need revaluing at period end?

Monetary items: foreign-currency receivables, payables, cash balances, and loans. Non-monetary items such as inventory, fixed assets, and prepayments remain at their historical exchange rate.

Should I store amounts in the original currency or converted?

Both, along with the exchange rate used. Storing only the converted amount loses track of what the customer actually owes, while storing only the foreign amount forces constant reconversion at unknown rates. Every robust multi-currency ledger maintains all three data points.