diff --git a/CLAUDE.md b/CLAUDE.md
index b975b60..8410bf2 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -60,7 +60,7 @@ Do not break these behaviours:
- **`addLine()` must `return i`** — `loadLines()` depends on the returned ID.
- **`saveStorage()`** is triggered by `change` events on all `[data-ls]` elements; do not remove that listener.
- **Invoice number bump:** occurs on the next page load after Generate via the `inv_generated_v1` flag; do not bump on Generate itself.
-- **FX rate convention:** X foreign units = 1 local unit. `price_local = price_foreign / exchange_rate`.
+- **FX rate convention:** 1 foreign unit = X local units (market-standard quote). `price_local = price_foreign * exchange_rate`.
## Config structure (`config.yml`)
diff --git a/app/config.yml b/app/config.yml
index aa7ff85..bd20241 100644
--- a/app/config.yml
+++ b/app/config.yml
@@ -360,10 +360,10 @@ translations:
fr: Code devise
"no": Valutakode
exchange-rate:
- en: "Exchange rate (X foreign = 1 local)"
- de: "Wechselkurs (X Fremd = 1 Inland)"
- fr: "Taux de change (X étranger = 1 local)"
- "no": "Valutakurs (X utenlandsk = 1 lokal)"
+ en: "Exchange rate (1 foreign = X local)"
+ de: "Wechselkurs (1 Fremd = X Inland)"
+ fr: "Taux de change (1 étranger = X local)"
+ "no": "Valutakurs (1 utenlandsk = X lokal)"
per-item:
en: Price per item (foreign currency)
de: Preis je Einheit (Fremdwährung)
diff --git a/app/index.html b/app/index.html
index 80121eb..5b4bd44 100644
--- a/app/index.html
+++ b/app/index.html
@@ -881,7 +881,7 @@ function toggleFx(i) {