Solavel Solavel Docs

Base currency adjustments

docs/solavel-finance/base-currency-adjustments.md

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_adjustments AND feature: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.

  1. Click New adjustment.
  2. Set the As-of date — typically a month-end or year-end.
  3. Pick the currencies to revalue (e.g. USD, EUR).
  4. 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.
  5. The new rate defaults to the closing rate for the as-of date — override per currency if needed.
  6. 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.
  7. 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.
Source: docs/solavel-finance/base-currency-adjustments.md ← All documentation