Multi-currency lets a single org transact in many currencies. Once enabled, you cannot turn it off — so the decision is one-way.
Setup:
- Enable Multi-Currency (Setup -> Company Information -> Activate Multiple Currencies). This is the irreversible step.
- Configure your corporate currency — the base currency all reports roll up to. Commonly USD or EUR.
- Add active currencies — each currency you transact in. ISO codes: USD, EUR, GBP, JPY, INR, etc.
- Set conversion rates — manual rates updated periodically, or Advanced Currency Management (ACM) for dated exchange rates that respect the rate that was effective when a record was created. ACM is essential for accurate historical reporting on multi-period deals.
- Decide who edits rates — typically Finance owns this. Admin sets up the permission and process.
Implications:
- Every currency field on every object now carries the record's currency context. Each Opportunity, Account, etc., has a
CurrencyIsoCodefield and Salesforce stores both the local amount and the converted-to-corporate value. - Reports display in the user's personal currency, the record's currency, or the corporate currency depending on the report's Currency setting. Always set this deliberately.
- Roll-Up Summary fields on amounts work, but the rollup is done in the parent's currency, with conversion applied per child record using the dated rate (if ACM) or the current static rate (if not).
- Formula fields referencing currency need to handle conversion: a formula adding two currency fields converts to a single currency context first.
- Integrations — every API write that includes a currency value must specify the
CurrencyIsoCodeor it defaults to corporate. Inbound integrations frequently miss this and silently store everything as the corporate currency.
Common mistakes:
- Enabling without ACM, then realising rate fluctuations make historical reports wrong.
- Reports built before multi-currency was enabled now show inconsistent values. Audit and rebuild.
- Custom fields built as "Number" instead of "Currency" — they don't get converted, so manual logic is needed.
