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.

  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

Once multi-currency support is enabled for an organization, it cannot be disabled.

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 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 FieldBalance Target Field
Payment AmountAmount
CurrencyCurrency
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 FieldBalance Target FieldNotes
Payment AmountOriginal Amount
CurrencyOriginal Currency Code
Foreign AmountAmount
Foreign Currency CodeCurrency
Foreign Conversion RateConversion RateIf 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 FieldBalance Target FieldNotes
AmountCalculated based on the payment amount using the conversion rate determined by the system.
Currency
Payment AmountOriginal Amount
CurrencyOriginal Currency Code
Conversion RateDetermined by the system, based on the given payment entry currency and the balance currency.