Enabling Multi-Currency Support
← Setting Up Billing Automation
Certain business use cases require support for multiple currencies.
Configuring Salesforce Org
You can enable multiple currencies in your Salesforce org instantaneously.
Info
Once multi-currency support is enabled for an organization, it cannot be disabled.
-
Click to enter Setup, then open Company Information.
In Salesforce Lightning, navigate to Company Settings > Company Information.
In Salesforce Classic, navigate to Company Profile > Company Information.
-
Click Edit.
- Select
Activate Multiple Currencies
. - Click Save.
-
Open Manage Currencies.
In Salesforce Lightning, navigate to Company Settings > Manage Currencies.
In Salesforce Classic, navigate to Company Profile > Manage Currencies.
-
Add, activate or deactivate currencies as necessary.
Note
Even though you have enabled multiple currencies, JustOn recommends to use one currency per account, that is, to use the account currency for all operations and records related to an account.
For some functions, Salesforce and JustOn operate with plain values without regard to currencies. In these cases, simply combining values of different currencies without conversion would produce wrong records.
Related information:
Implications of Enabling Multiple Currencies | Salesforce Help
Enable Multiple Currencies | Salesforce Help
Manage Multiple Currencies | Salesforce Help
Activate and Deactivate Currencies | Salesforce Help
Configuring Currency Conversion
With multiple currencies enabled, you can create invoices and other records in your organization's default currency as well as in foreign currencies. By default, any converted amounts in your organization rely on the conversion rates as defined with your active currencies. Conversion rates must be set and updated manually. Changing the exchange rate automatically updates converted amounts on all records.
Salesforce allows to use dated exchange rates by enabling advanced currency management. Dated exchange rates set a conversion rate for a specific date range. For details, see About Advanced Currency Management and Edit Dated Exchange Rates in the Salesforce Help.
Since conversion rates are subject to change in the course of time, JustOn Billing & Invoice Management stores the conversion rate upon invoice generation in the field Conversion Rate
. Doing so allows for creating reports or formulas for custom fields based on the saved value.
JustOn Billing & Invoice Management selects the conversion rate from the Salesforce currency management by the date of the invoice upon finalization. After the invoice is set Open
, changes are no longer allowed, and the conversion rate on the invoice is fixed. That is, once the value is stored, it does not change any more, even if the organization wide conversion rates has changed since.
Depending on whether your org has enabled advanced currency management, that is, whether you use static or dated conversion rates, you set a corresponding global setting.
-
Click to enter Setup, then open Custom Settings.
In Salesforce Lightning, navigate to Custom Code > Custom Settings.
In Salesforce Classic, navigate to Develop > Custom Settings.
-
Click Manage in the row of Global Settings.
- Click Edit in the Default row.
-
Select the checkbox
Use Advanced Currency Management
if your org has the advanced currency management enabled.For details, see Enable or Disable Advanced Currency Management.
-
Click Save.
Configuring Decimal Places
With multiple currencies enabled, you can specify the number of decimal places (number of digits to the right of decimal point) for each currency. Consequently, JustOn takes the number of decimal places used for a specific currency from the relevant currency configuration, copying it to the field Decimal Places
of the invoice line item. This value is then used to round amounts in certain formulas when calculating the invoice line item price, taxes, etc.
To modify the number of decimal places for a currency:
-
Click to enter Setup, then open Manage Currencies.
In Salesforce Lightning, navigate to Company Settings > Manage Currencies.
In Salesforce Classic, navigate to Company Profile > Manage Currencies.
The Active Currencies list shows the number of decimal places specified for each currency.
-
Click Edit in the row of the relevant currency.
-
Specify the decimal places as necessary.
Currently, JustOn supports only 0, 1 or 2 decimal places for the invoice line item calculation. If you specify more than 2 decimal places, JustOn automatically limits their number to 2 to prevent errors.
-
Click Save.
Note
The number of decimal places affects the invoice calculation. So after modifying the number of decimal places for a currency, make sure to delete any existing draft invoices that use this currency to avoid inconsistencies.
Info
With the decimal places configuration from the currency setup, the previous decimal places fallback as configured for a field is no longer available for PDF rendering.
For example, the price shown in the transaction table is now rendered with the number of decimal places as specified by the multi-currency configuration. Previously, it was rendered with 5 decimal places as a fallback, because the transaction price field is set up to use 5 decimal places. As a workaround, you can specify the number of decimal places for the transaction table in the corresponding JSON configuration of the template, like, for example {"Transaction__c":{"Price__c":5}}
.
Configuring Multiple Currency Billing
Certain business use cases require billing to multiple parties, like, for example, in a marketplace scenario: you bill the products to merchants for commissions and payouts and to buyers for payments.
When working with multiple currencies, you can issue the invoices for the merchant and the buyer (following the marketplace example) with different currencies. Generally, you then have Salesforce convert the defined price from one currency to the other.
You can, however, circumvent the conversion and explicitly define multiple prices in different currencies. To this end, JustOn supports the controlling field ON_TargetCurrency
(data type Text
) to hold the ISO currency code for an additional currency.
The required setup tasks differ depending on the intended scenario.
Related information:
Payment Matching With Multiple Currencies
Setting Up Multiple Currency Billing for Arbitrary Objects
For billing arbitrary objects to multiple parties, you configure the source object for the invoice line item to hold multiple prices in multiple currencies. This is usually the child object of a parent-child relation, like an order item, for example. Using the option Is Line Item
, however, you can invoice the parent object directly without child records.
For details, see Setting Up Parent-Child Objects.
To hold the two prices and currencies, you can create both recipient-specific price fields and recipient-specific currency fields, applying the merchant-specific and buyer-specific suffixes (see Creating Recipient-Specific Controlling Fields).
Billing arbitrary objects with multiple prices and currencies
Following the example, the invoice is generated based on the parent source object. To guarantee the correct currency for the intended recipient, you set the recipient-specific target currencies on the parent source object:
Field | Data Type | Value | Description |
---|---|---|---|
ON_TargetCurrencyMerch | Text | EUR |
Specifies the ISO currency code used for the merchant-specific invoice line item. |
ON_TargetCurrencyBuy | Text | GBP |
Specifies the ISO currency code used for the buyer-specific invoice line item. |
On the child source object, you need two fields to hold recipient-specific prices:
Field | Data Type | Value | Description |
---|---|---|---|
ON_UnitPriceMerch | Number | 50,00 |
Specifies the product price used to generate the merchant-specific invoice line item. |
ON_UnitPriceBuy | Number | 50,00 |
Specifies the product price used to generate the buyer-specific invoice line item. |
Setting Up Multiple Currency Billing for Usage Data
For usage data billing to multiple parties,
- you configure the usage data object to actually hold multiple prices in multiple currencies, and
- you prepare the recipient-specific subscription items to get the required data.
Usage data billing with multiple prices and currencies
Preparing Usage Data Object
To hold the base price in your lead currency, you can, as usual, use the field ON_Price
(see Data Fields), which is automatically linked with the standard Currency
field (CurrencyIsoCode
). This data can then be used for the subscription item as created for one recipient (see Creating Individual Subscriptions).
To hold a second price in a secondary currency, you then create two additional fields (see Configuring Custom Object):
- A data field (of the data type
Number
) to hold the second price, for example,ON_Price_Secondary
; this field is then referred to by the item fieldTransaction Price Field
, as explained in Price and Quantity Fields -
The controlling field
ON_TargetCurrency
(data typeText
) to hold the ISO currency code for the secondary currency, likeGBP
orUSD
; this field needs the recipient-specific suffix, as explained in Creating Recipient-Specific Controlling FieldsIf defined, the value of
ON_TargetCurrency
always takes precedence over the standardCurrency
field.
The data of these fields is then used for the subscription item as created for the second recipient (see Creating Individual Subscriptions).
Think of the marketplace example again. Assume that you bill the base price in the lead currency to the buyer, and the second price in the secondary currency to the merchant. Following this example, you need the following fields on the custom object to cover multiple prices and currencies:
Field | Value | Description |
---|---|---|
ON_Price | 0,50 |
Specifies the (standard) item price, which is used to bill the buyer-specific subscription item. |
CurrencyIsoCode | EUR |
Specifies the leading currency (standard field, cannot be customized or omitted). |
ON_Price_Secondary | 0,50 |
Specifies the second item price, which is used to bill the merchant-specific subscription item. |
ON_TargetCurrencyMerch | GBP |
Specifies the ISO currency code for the secondary currency, which is used to bill the merchant-specific subscription item. |
Info
In order to support multiple different recipients, you can define multiple ON_TargetCurrency
fields, always providing recipient-specific suffixes, as well as multiple number fields to hold prices. Doing so, you can even decide not to use ON_Price
and CurrencyIsoCode
.
Preparing Subscription Items
As explained in Creating Individual Subscriptions, you create recipient-specific subscriptions with individual items. With multiple currency billing, you must ensure that the items get the intended price and currency information from the correct fields.
Following the example above, the item on the subscription for the buyer does not need price or currency-specific configurations, as it uses the standard ON_Price
and CurrencyIsoCode
fields.
The subscription item for the merchant, however, must use the following price-specific configuration:
Field | Value | Description |
---|---|---|
Transaction Price Field | ON_Price_Secondary |
Specifies the secondary price field as the source field for the price to be used during the transaction building, as explained in Price and Quantity Fields |