Multi-Currency: 147 Currencies, Daily Rates, Snapshot Per Transaction
How the platform handles currency conversion, where the rates come from, and why historical transactions don’t silently re-translate.
Cross-border ITAD is normal. A Dutch tenant sells to a German buyer, settles in EUR. The same Dutch tenant buys from a UK seller, settles in GBP. The German buyer might be invoiced in USD because their parent company is American. The platform supports all of it.
147 currencies
The currency catalog includes the 147 active fiat currencies (ISO 4217). Each currency has a code, a symbol, a decimal places setting, and a display format. Tenants pick a base currency at setup; transactions can use any currency from the catalog.
Exchange rates
Daily rates refresh via a cron (the H/refresh-rates job runs every morning) from a rate provider. The rates land in the platform’s exchange_rates table with the date and the source. /admin/exchange-rates is the platform-admin view: see the active rates, override if a specific rate looks wrong, see the history.
Snapshot per transaction
Every monetary transaction stores both the amount-in-deal-currency and the rate-at-the-time. A €10,000 sale to a USD buyer on a day when EUR/USD = 1.08 records €10,000 / $10,800 / rate 1.08. Six months later when the rate has moved, the transaction still shows the original numbers. Re-translation only happens at report time, and only if the user requests it.
Tenant currency setting
/settings/currency is the tenant-level config: base currency for reporting, display preferences for foreign-currency amounts (always show base equivalent, show only on hover, etc.), tolerance for rate-variance alerts. The D4 tenant currency-select makes this per-org rather than per-platform.