Who can use this: Owner, Manager, Accountant. URL / Route:
/finance/base-currency-adjustments(finance.base-currency-adjustments.index). Detail:finance.base-currency-adjustments.show,create,store. Action endpoints:finance.base-currency-adjustments.post,void. Plan / feature gate:feature:tracker.base_currency_adjustmentsANDfeature:multi_currency_enabled(both required). Permissions:fx_adjustments.view,fx_adjustments.create,fx_adjustments.post,fx_adjustments.void.
Purpose
A Base currency adjustment (also called FX revaluation) restates your foreign-currency balances at a new exchange rate, so the books reflect what those balances are worth in your base currency today — not what they were worth when they were originally posted.
Use a base currency adjustment when:
- you have foreign-currency receivables (invoices to customers in USD when your base is JOD) and the FX rate has moved since posting,
- you have foreign-currency payables (bills from suppliers in EUR) that haven't been paid yet and the rate has changed,
- you have foreign-currency bank accounts that need to be marked-to-market at month-end.
The difference between the original-rate value and the new-rate value is booked as a realised or unrealised FX gain / loss, depending on whether the underlying balance has been settled.
This is only relevant if your organisation operates in more than one currency — see Multi-currency.
Step by step
Browse adjustments
Open /finance/base-currency-adjustments. Each row shows the adjustment number, As-of date, the currencies included, the total gain / loss, and the status (Draft / Posted / Void).
Create an adjustment
Route: finance.base-currency-adjustments.create / store. Permission: fx_adjustments.create.
- Click New adjustment.
- Set the As-of date — typically a month-end or year-end.
- Pick the currencies to revalue (e.g. USD, EUR).
- The system lists every open foreign-currency balance as of that date:
- open AR invoices and credit notes,
- open AP bills and debit notes,
- foreign-currency bank / cash account balances.
- The new rate defaults to the closing rate for the as-of date — override per currency if needed.
- Click Preview — each row shows: original amount in foreign currency, original base value (at posting rate), new base value (at adjustment rate), and the gain or loss.
- Save as Draft or Save and Post.
Post an adjustment
Route: finance.base-currency-adjustments.post. Permission: fx_adjustments.post.
Posting writes the GL journal:
- Debit or Credit the AR / AP / Bank account (in base currency) to restate it at the new rate.
- Credit Unrealised FX Gain (or Debit Unrealised FX Loss) for the difference.
The foreign-currency amount on the underlying document does not change — only its base-currency value does. When the document is later settled at the actual settlement rate, the realised gain/loss is booked at that point.
Void an adjustment
Route: finance.base-currency-adjustments.void. Permission: fx_adjustments.void.
Reverses the GL journal and rolls every affected balance back to its previous base-currency value. Use Void if you used a wrong rate or ran the adjustment for the wrong period.
How the journal looks
Your base currency is JOD. You hold a USD 1,000 customer invoice posted at FX 0.710 → AR carries it at JOD 710. At month-end, the closing rate is 0.725 → the invoice is worth JOD 725 at today's rate, an unrealised gain of JOD 15:
| Account | Debit | Credit |
|---|---|---|
| AR — Customer control | 15.00 | |
| Unrealised FX gain | 15.00 |
The customer still owes USD 1,000 — that doesn't change. Only the base-currency value on the books moves.
A revaluation downward — a EUR 2,000 supplier bill was posted at FX 0.800 → AP at JOD 1,600. Closing rate is 0.780 → JOD 1,560 today, an unrealised gain of JOD 40 (the EUR you owe is now cheaper in JOD):
| Account | Debit | Credit |
|---|---|---|
| AP — Supplier control | 40.00 | |
| Unrealised FX gain | 40.00 |
A foreign-currency bank revaluation — a USD bank account holding USD 5,000 was last valued at JOD 3,550 (rate 0.710). At today's rate of 0.725 it's worth JOD 3,625, an unrealised gain of JOD 75:
| Account | Debit | Credit |
|---|---|---|
| Bank — USD | 75.00 | |
| Unrealised FX gain | 75.00 |
A loss scenario — the same USD 1,000 invoice when the closing rate has dropped to 0.700 → JOD 700 today, unrealised loss of JOD 10:
| Account | Debit | Credit |
|---|---|---|
| Unrealised FX loss | 10.00 | |
| AR — Customer control | 10.00 |
When the invoice is later settled at the actual payment-date rate (say 0.715), the difference between that settlement rate and the most-recent revaluation rate becomes a realised gain/loss on the payment journal — see Payments.
Common mistakes
- Running too early. If you run revaluation before all foreign-currency documents for the period are posted, the unrealised gain/loss will be incomplete. Post all foreign-currency activity first, then revalue.
- Running twice for the same period. Each revaluation is calculated against the most recent base value. Running twice doesn't double-count — but it's wasted noise on the journal. Void the duplicate.
- "Foreign-currency invoice still has its old base value after revaluation." That's correct — the underlying document keeps its original posting rate. Only the base-currency balance is restated on the books via the adjustment journal.
- Revaluing a settled balance. Only open balances are revalued. Already-paid invoices / bills don't re-revalue (their FX is already realised).
Tips
- Schedule revaluations at every month-end so cumulative drift stays small.
- Pair revaluation with the period lock — run, then lock the period before next month's activity starts.
Behaviour and rules
- As-of dating. The adjustment uses balances as they stood on the as-of date — later activity is not affected.
- Realised vs unrealised. A revaluation against an open balance produces an unrealised gain/loss. The realised gain/loss is booked separately when the document is actually paid, based on the rate difference between posting and settlement.
- FX-adjustment JE source label. On the Journal entries page, the adjustment JE is tagged with the info-blue FX Adjustment chip.
- Period lock. Posting / voiding require the as-of date's period to be open.
- Multi-currency must be on. Without
feature:multi_currency_enabled, the page is hidden. - Run it before period close. The standard pattern is: post month-end revaluation → close the period → run reports. Reports use the post-adjustment base values.
Permissions / restrictions
- View:
fx_adjustments.view. - Create:
fx_adjustments.create. - Post:
fx_adjustments.post. - Void:
fx_adjustments.void.
Related
- Multi-currency — how foreign-currency documents are posted and what rates are used.
- Fiscal years and lock dates — period rules for revaluation.
- Journals — adjustment entries appear here with the FX Adjustment label.
- Reports — Balance Sheet and P&L reflect the post-adjustment base values.