About Multi-Currency
Last updated
Last updated
Salesforce has a “Currency” data type for handling numbers that represent financial amounts. As described here, they are not a primitive data type but act as presentation logic for a number field. You can see the difference below, where the number “123” is entered into a currency field and a regular number field respectively:
Handling multiple currencies in Salesforce is described in this series of articles.
To summarise, Salesforce can be placed into one of three modes, described below.
The default, where the entire organisation treats all financial amounts as one currency. That currency can be configured like so:
In this mode, Salesforce is aware of more than one currency:
A single currency is nominated as the “Corporate” currency, and is the only currency initially. Other currencies are added manually by the Salesforce administrator from a list of standard ISO currency codes, but the conversion rate must be entered and maintained by the administrator (i.e. no external exchange rate services are utilised).
The conversion rate of every other currency is expressed relative to the corporate rate. If you ever switch the corporate rate to a different currency, all other currencies will have their rates updated to be relative to this new currency.
In this mode, individual users can choose their local currency from their user settings, from the list of currencies recognised by their company (per above):
Now, every record automatically contains a field named “Currency”, which determines how any Currency fields for that record should be interpreted:
Below are two records, and all fields had the value “123” entered. The first record had AUD selected, the second had EUR. The user viewing the record has their local currency set to AUD. So the first record is displayed as-is, the second shows the EUR amount and also the equivalent AUD amount for convenience.
If the user switches their local currency to USD, the same list now looks like this:
Note that as the exchange rates are updated over time, revisiting old numbers will change how they are displayed, as today’s rate is always used in their presentation.
In this mode, Salesforce is aware of not only multiple currencies, but keeps a record of their exchange rates over time.
So when configuring the currency table, there is a date dimension:
And when drilling into an individual currency, you can see its historical values:
On the surface, this appears to provide convenient universal functionality. In reality, these dated exchange rates only apply to a very limited number of Standard objects (Opportunity related) with a non-configurable effective date. For example, Opportunity objects always use the Close Date to determine the currency rate. For more information, see here.