---
title: Exchange rates — where they come from, and what to do when a source stops working
description: How TSync gets official exchange rates, why it never invents one, what changed for the Romanian source, and how to switch to the European Central Bank in one press.
product: TSync Intelligence 11.3.6
language: en
canonical: https://docs.tsync.pro/exchange-rates/
source: https://docs.tsync.pro/llms.txt
---

# 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](dashboard.md) — how the money tiles handle a missing rate
- [Multi-company](multi-company.md) — each company can have its own currency settings
