Skip to content

Enabling Multi-Currency Support

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.

  1. In Setup, open Company Information.

    In Salesforce Lightning, navigate to Company Settings > Company Information.

    In Salesforce Classic, navigate to Company Profile > Company Information.

  2. Click Edit.

  3. Select Activate Multiple Currencies.
  4. Click Save.

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
Manage Multiple Currencies | Salesforce Help
Turn On Multiple Currencies Without Contacting Support | Salesforce Winter '18 Release Notes

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 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 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.

  1. In Setup, open Custom Settings.

    In Salesforce Lightning, navigate to Custom Code > Custom Settings.

    In Salesforce Classic, navigate to Develop > Custom Settings.

  2. Click Manage in the row of Global Settings.

  3. Click Edit in the Default row.
  4. 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.

  5. Click Save.

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.

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).

multiple_billing_GIR
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,

multiple_billing
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 field Transaction Price Field, as explained in Price and Quantity Fields
  • The controlling field ON_TargetCurrency (data type Text) to hold the ISO currency code for the secondary currency, like GBP or USD; this field needs the recipient-specific suffix, as explained in Creating Recipient-Specific Controlling Fields

    If defined, the value of ON_TargetCurrency always takes precedence over the standard Currency 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

Payment Matching With Multiple Currencies

Currencies of imported payment entries may differ from the currencies of their matching records. When converting payment entries to balances, JustOn transfers the corresponding amounts.

The following payment entry fields hold the conversion-related data:

Field Label Description
Payment Amount The amount for the payment balance. If the currency is different from the match currency, the amount is converted using the exchange rate of the booking date.
Currency The currency of this payment entry.
Foreign Amount If the foreign currency fields are set and have the same currency as the match, they are used instead of the Payment Amount.
Foreign Currency Code The foreign currency code.
Foreign Conversion Rate The conversion rate for converting the payment amount to the foreign amount. Is copied to the Conversion Rate field on the balance.

After JustOn has converted the payment entry to a balance, the amount and currency information is kept in the following fields on the balance:

Field Label Description
Amount Shows the balance sum.
Currency The currency of this balance.
Original Amount The original amount of the payment entry before the conversion.
Original Currency Code The original currency code.
Conversion Rate The conversion rate.

Depending on the use case and the original data, the information is transferred or, respectively, converted as described below.

One currency, no conversion

If the payment entry and the balance use the same currency, no conversion takes place.

Payment Entry Source Field Balance Target Field
Payment Amount Amount
Currency Currency
Two currencies, payment entry includes all data

If the payment entry includes all information, no conversion takes place. JustOn only populates the balance fields with the given source data.

Payment Entry Source Field Balance Target Field Notes
Payment Amount Original Amount
Currency Original Currency Code
Foreign Amount Amount
Foreign Currency Code Currency
Foreign Conversion Rate Conversion Rate If there is no conversion rate given, JustOn calculates it based on the given payment amount and foreign amount.
Two currencies, payment entry includes one amount and currency

If the payment entry includes only an amount and currency, JustOn converts the amount to the target currency using the conversion rate determined by the system (see Manage Multiple Currencies | Salesforce Help).

Payment Entry Source Field Balance Target Field Notes
Amount Calculated based on the payment amount using the conversion rate determined by the system.
Currency
Payment Amount Original Amount
Currency Original Currency Code
Conversion Rate Determined by the system, based on the given payment entry currency and the balance currency.