What is Salesforce multicurrency?
Before we look at how multicurrency works and what you need to look out for, lets look at what it offers:
- Adds the ability to record amounts in different currencies. If you don't have multicurrency enabled, then amounts are just displayed as an amount.
- Allows amounts to be converted, displayed and reported according to exchange rates
- Allows the use of dated exchange rates so the value at a certain time can be fixed
Why Use Multicurrency?
- You may have just added a custom currency field (as in the example below) to the records you need to record an alternate currency. Now you are finding you need a consolidated report of all amounts. Without multicurrency, you would need to run separate reports for each currency and then apply a conversion rate.
- Opportunities can be entered in multiple currencies
- Products can be priced in different currencies
- Reporting and forecasting can be done in record currency and corporate currency. ‘Converted’ fields are added and available for reporting.
What is Important to Know?
- Once enabled, multiple currencies can’t be disabled
- The enablement process temporarily locks your organization, preventing any integration processing and user logins. The lockout duration will be up 1 hour and done after 5pm by Salesforce.
- You need to raise a case to request the enablement. Be sure to raise the case well before the date you want it enabled and ask for confirmation. Also be careful to specify the time you would like it done and your timezone. When I requested it, I asked for it to be done after 5pm on a certain date. It was actually done around 3am the next morning.
- Upon enablement, all existing records are stamped with a default currency code that you provide in your enablement request. Here is an example where the default currency code was set to Australian Dollar.
- A currency field is added to standard and custom objects, even managed objects. Here is the standard currency field that was added to the Contact object.
- After enablement, all currency fields display the ISO code of the currency before the amount. For example, $100 displays as USD 100.
- By default, all converted amounts in your organization rely on the current conversion rates defined for your organization. Conversion rates must be set and updated manually. Changing the exchange rate automatically updates converted amounts on all records, including on closed opportunities. This may not be the behaviour that you are expecting. Lets say you sold a contract in USD. You set the currency of the contract record to USD and record the amount in USD. You will see the amount displayed in USD and converted into AUD using the current exchange rate. So you will always have the current value of that contract in AUD, whereas what you really want is the value of that contract in AUD when it was sold.
- In this example two currencies are defined, USD and AUD and the exchange rate between the default currency AUD and the additional currency USD is defined.
- After enablement, the primary currency displays as usual and, optionally, a secondary currency amount appears in parentheses. The primary currency is typically the default corporate currency, unless it’s overridden at the record level. In the example below, two currencies have been enabled, and USD is selected. The amounts are show in the record currency and are converted to the corporate currency and shown in parentheses
- When you change the default currency of a record, currency amounts are not converted; they simply display with the new currency code. In the example below, you can see a record was initially entered with the currency code of AUD and then changed to USD. The amount has stayed the same. After the currency code was changed, the corporate currency amount is now displayed in () using the current exchange rate.
What Should I Look Out For?
- The Salesforce documentation states: "When you change the default currency of a record, currency amounts are not converted; they simply display with the new currency code." This is true only if the record is updated with the Salesforce user interface
- If DataLoader is used to update currency codes, any amounts in the records will be updated using the exchange rate defined.
- If you do need to use Dataloader to update currency codes on existing records, set the exchange rate to 1:1, update the records and then set the exchange rate back to the correct value
- The Salesforce documentation states: "You can opt to use dated exchange rates by using advanced currency management to track historical exchange rates." You may think advanced currency management will apply to all objects but it turns out it only applies to opportunities and opportunity related objects.
- Roll up summaries will not work between an object that is enabled for advanced currency management and one that is not. For example if you have a rollup summary between opportunity and a custom object, or another standard object such as quotes, they will be automatically disabled. They will work only between two advanced currency management objects, e.g. "Opportunity and Opportunity Line Items”