Exchange rates

Every amount you enter in a foreign currency is converted using an official published rate, taken from a national bank. TSync never estimates one.

You set this up in Configuration → Currencies:

Setting What it decides
Country Which accounting rules apply
Base currency The currency your reports and totals are expressed in
Source Which authority publishes the rates: BNR (Romania), BNM (Moldova) or ECB (European Central Bank)
Date rule Which day's rate a document uses — for Romania, the previous working day

If a rate is missing, you are told

TSync will not fill a gap with a guess. Where a rate is genuinely unavailable, the amount stays in its original currency and the screen says the rates are incomplete.

This is deliberate. A converted total that quietly used the wrong day, or a made-up number, is worse than a total that admits it is missing something.

The Romanian source (BNR) can no longer be read by a server

Since 2026, the BNR website is behind a security firewall that rejects any request coming from a server rather than from a person's browser. You can open the rate file yourself in a browser; your TSync installation cannot fetch it.

This is not something that can be fixed from a setting, and it is not a fault in your installation. Retrying, changing the address, or waiting will not help.

What to do: switch to the European Central Bank

The ECB publishes RON, so your rates can continue from there without anything being invented.

On Configuration → Currencies you will see a panel offering "Switch the rate source to ECB". Press it once and confirm. TSync then:

  • switches the source to the ECB and records who did it and when;
  • fetches the rates immediately, so you are not left on an empty source;
  • keeps your date rule exactly as it was — a Romanian installation goes on using the previous working day's rate.

Nothing switches on its own. A rate quietly taken from a different authority is a different number under the same name, so the change is yours to make.

The button only appears where it can actually help. If it is missing, either you are already on the ECB, or the ECB does not publish your base currency — in which case switching would leave you with no rates at all, which is why TSync refuses instead.

If you were already using the ECB — please read this

Before v11.1.3 there was a fault in how ECB rates were read, and the amounts it produced were wrong: roughly four times too small on a RON base.

The ECB publishes its rates as "1 EUR = X of another currency". TSync was reading that figure as if it meant "1 of that currency = X lei" — the opposite direction. From v11.1.3 the conversion is done correctly.

What this means for you:

  • The stored rates were never changed — only the way they are read. Nothing in your database was damaged.
  • Documents converted while you were on the ECB show the wrong converted amount. Check any document from that period where an amount was converted into your base currency.
  • Amounts in their original currency were always correct. Only the conversion was affected.

If you have never used the ECB as your source, nothing about your data changes.

Your accounting base currency must be the same currency as your rates

Accounting keeps every posting in the document's own currency and in a base currency, so a trial balance or a period close can add them up. That base has to be the same currency your exchange rates are published against — otherwise base amount quietly means two different things in two places.

Until v11.2.4 an install that had never opened Accounting → Settings was assumed to keep its books in RON, whatever country it was in. On a Moldovan install this made every MDL posting look foreign, and it was invisible because a missing rate was being converted at 1.00 anyway: MDL recorded against a nominal RON base comes out numerically identical, so the accounts looked right for the wrong reason.

An accounting base that has never been set now inherits the platform base currency — the one you chose in Settings, or the one your country implies. Check it once on Accounting → Settings if your books are not in RON.

A posting with no rate is now labelled honestly

When a document is in a currency with no published rate for that date, the ledger keeps the amount as it is and records the rate as 1.00 — but it now labels the source "assumed par" instead of manual.

Before, such a line claimed a manual rate: a number nobody had typed, recorded as if a person had typed it. The figure was the same; the label was a lie, and everything downstream — the trial balance, the period close, the CASH/BANK figure on the dashboard, the balance sheet — treats base amount as a real conversion.

Nothing is refused and nothing is rewritten. Blocking the posting would stop a client's accounting to defend a number nobody converts, and silently re-rating old entries would be worse than the defect: nobody can know what the rate should have been on a past date.

Two health checks read the label for you (Setup → Health):

  • how many lines in another currency sit at rate exactly 1 — with the currencies and the total named;
  • an accounting base that disagrees with the exchange-rate base, which is the misconfiguration underneath most of those lines.

The first is a warning, not a blocker: it is history, and blocking on history stops releases without fixing anything. To correct a line, publish the rate and re-post the document.

See also

  • Dashboard — how the money tiles handle a missing rate
  • Multi-company — each company can have its own currency settings