Solavel Solavel Docs

Multi-currency

docs/solavel-finance/multi-currency.md

Who can use this: Owner, Manager, Accountant. URL / Route: /finance/currencies (finance.currencies.index). Plan / feature gate: feature:multi_currency_enabled (premium). Permissions: currencies.manage.

Purpose

Multi-currency lets you invoice customers and pay suppliers in currencies other than your organization's base currency, while your books stay in the base currency. Solabooks records both the transaction currency amount and the base-currency amount, and tracks exchange gains and losses.

Step by step

Set up currencies

Permission: currencies.manage.

  1. Open Settings ▸ Currencies.
  2. Your base currency is set during the setup wizard and cannot be changed afterwards.
  3. Add each additional currency you trade in and maintain its exchange rate (rate to base).

Use a currency on a document

  • A customer or supplier can have a default currency. Documents for them open in that currency.
  • The document carries an exchange rate captured at the document date.
  • Totals show in the document currency; posting writes journal entries in both the document currency and the base currency.

Exchange gain / loss

When you receive payment for a foreign-currency invoice and the rate has moved since the invoice date, the difference is a realised exchange gain or loss. Solabooks posts it automatically. The Realized Gain / Loss report lists these.

Base currency adjustments

tracker.base_currency_adjustments allows period-end revaluation of open foreign-currency balances so the base-currency figures reflect current rates.

Worked example — full lifecycle of a USD invoice

Your base currency is JOD. You raise a USD 1,000 invoice for a customer on 1 March when the FX rate is 0.710:

Account Debit (JOD) Credit (JOD)
AR — Customer control (USD 1,000) 710.00
Revenue — Sales 710.00

The customer owes USD 1,000; the books carry it at JOD 710.

On 15 March the customer pays USD 1,000 when the rate has moved to 0.720. You receive USD 1,000, worth JOD 720.00 today:

Account Debit (JOD) Credit (JOD)
Bank — USD (USD 1,000) 720.00
AR — Customer control 710.00
Realised FX gain 10.00

The JOD 10 difference is the realised gain — the customer paid the same USD 1,000 they owed, but JOD has weakened, so the same USD is now worth more.

If instead the rate had moved to 0.700:

Account Debit (JOD) Credit (JOD)
Bank — USD (USD 1,000) 700.00
Realised FX loss 10.00
AR — Customer control 710.00

The realised loss closes out the same receivable but recognises the value movement.

Period-end revaluation — if month-end falls between invoice and payment, run a Base currency adjustment to revalue the open AR at the closing rate. That writes an unrealised gain/loss; the realised portion is then the movement from the revaluation rate to the actual payment rate.

Behaviour and rules

  • Base currency is fixed once setup is complete.
  • Every foreign posting is dual-recorded — document currency and base currency.
  • Reports are in base currency unless a report explicitly offers a currency view.

Common mistakes

  • "My foreign-currency balance looks wrong at month-end." That's expected if you haven't run a base-currency adjustment. The AR / AP base value drifts from market reality until you revalue.
  • Trying to change base currency. Base currency is fixed after setup. The only way is a full re-setup with no historical data — usually not practical.
  • "My customer pays in EUR but they're a USD customer." A counterparty's currency is locked once any document is posted in it. Create a second customer record in EUR, or accept the payment through a generic Other Receipt and journal-adjust.
  • "Reports show base, not the foreign currency." Most reports run in base currency. Per-currency views exist only on specific reports (AR/AP Aging by Currency, Bank Summary). For raw foreign-currency detail, use the General Ledger filtered to the relevant AR/AP/Bank account.

Tips

  • Update FX rates before posting big foreign-currency documents — the document captures the rate at its date.
  • For month-end close: post all foreign-currency transactions first, then run a base-currency adjustment, then lock the period.

Related

Source: docs/solavel-finance/multi-currency.md ← All documentation