Wiki/Finance & Settlements/Multi-Currency: Every Amount Says Which Currency It Is
05Finance & Settlements3 min read

Multi-Currency: Every Amount Says Which Currency It Is

What your tenant configures, why nothing is ever quietly added across currencies, and the rate that gets frozen when Market terms are accepted.

Cross-border ITAD is ordinary. A Dutch operator settles with a client in euros, buys a pallet from a UK seller in pounds, and invoices a German buyer in dollars because the parent company is American. All three amounts end up on the same screens, and the moment one of them loses its currency label the screen starts lying with confidence.

What the tenant sets

The currency catalog holds 147 currencies with their code, name, symbol and decimal places. Settings > Currency is where your tenant picks its base reporting currency, switches on the subset it actually trades in, and gets a converter for sanity-checking a rate before quoting. A line at the top says how many currencies are enabled out of the catalog and when the rates were last updated. That is the entire page: a base currency, the list you switch on, a converter, and a timestamp.

Amounts show the record’s currency

Every amount appears in the currency of the invoice, settlement, deal or order it belongs to, formatted in the language you use the app in: an English user sees €1,234.50, a Dutch user € 1.234,50, a French user 1 234,50 €. Within one tenant and one screen there is exactly one notation. Financial amounts — invoices, settlements, margins, VAT — always show the cents; lists and KPIs may round or shorten, but never drop the currency. And nothing is summed across currencies in silence: where several currencies are in view, each gets its own line, and a row that cannot be totalled says so in words. Escrow payouts follow the same rule with one button per currency, because a bank batch is one currency by definition.

The rate that gets locked

When buyer and seller are in different currencies, accepting Market terms snapshots the rate onto the record: the rate itself, the moment it was taken, and the source that delivered it. The lock has a freshness requirement — a rate older than 48 hours is refused rather than used, and the interface starts warning at 24. A deal closed on a stale rate is a dispute waiting for a quiet month. Once locked, that record keeps its rate whatever the feed does afterwards.

Where the numbers come from

One job refreshes the rates every morning at 07:00 UTC and stores EUR-based pairs that everything else derives from at runtime. The two sources behind it, the API key, the switch that turns the daily refresh off and the history that reconstructs which rate was live at a given timestamp have their own article: Exchange Rates: One API Call a Day, and a Fallback That Needs No Key.