Session and reference currency
Summarize
Summary of Session and reference currency
In the ServiceNow AI Platform®, currency values are managed using two distinct currency types: session currency and reference currency. This dual-currency approach supports multi-currency environments and ensures consistent calculations across the platform.
Show less
Session currency
The session currency is user-specific and determined by the user’s locale or single-currency mode settings. It influences how currency values are displayed to users, including the currency symbol and localized number formatting (such as decimal and thousand separators). The platform determines the session currency by checking single-currency mode configurations first, then falling back to the user’s locale default.
Reference currency
The reference currency is a system-wide standard currency used internally for calculations and reporting. It is defined by the system locale or the Java default locale if no system locale is set. Currency values entered by users are stored in three forms: the original value as entered, the currency code, and the value converted to the reference currency using the current exchange rate. This conversion enables consistent filtering, sorting, and aggregation across different currencies.
Key considerations for ServiceNow customers
- Filtering, sorting, and aggregating currency fields rely on reference currency values, but users see values in their session currency, which can cause confusion due to differences in conversion rates and formats.
- Lists filtered by currency might not appear in the expected order because filtering uses reference currency values while displaying session currency values.
- Aggregations on currency fields may produce unexpected results since aggregation occurs on reference currency values before conversion to session currency.
- Currency formatting depends on the user’s locale rather than the currency code, which can lead to display inconsistencies.
- In multiple-currency mode, the currency code saved may differ from the session currency, for example, a user’s session currency could be Euro while entering values in Japanese Yen.
Practical impact
Understanding the distinction between session and reference currencies is crucial for correctly interpreting currency data in the ServiceNow AI Platform®. Customers should be aware that conversion rate fluctuations and differing user locales can affect how currency values appear and behave in lists, filters, and aggregations. This knowledge helps in setting correct expectations and troubleshooting currency-related discrepancies in reports and interfaces.
The default, or standard, currency fields in the ServiceNow AI Platform® use two kinds of currency, Session and Reference.
- Session currency
- The session currency is defined for the user by the user’s locale or single-currency mode.
- Reference
- The system local determines the reference currency, and is the standard used across the entire instance.
- Value as entered, in the user's locale.
- Currency code, in the user's locale.
- Value converted to the reference currency using the current exchange rate.
Session currency
- Currency symbol
- Value converted to the session currency and shown in a localized number format.
The user’s locale determines the session currency format.
- Single-currency mode setup using glide.i18n.single_currency and glide.i18n.single_currency.code.
- Default currency for the user’s locale.
Reference currency
- System locale set using the property glide.system.locale
- Java default locale, typically en.US
The filtering and aggregation features use the reference currency value to perform calculations on default currency fields. These features can yield inaccurate results because of conversion rate changes.
Issues with currency fields
Users are often confused by the results of filtering, sorting, and displaying currency fields because the system works with at least two currencies for each value: the session currency and the reference currency.
- Lists filtered on currency fields might not be in the expected order. It uses the reference currency values for filtering but displays session currency values.
- Aggregation of currency fields may not produce the expected results because reference currency values are aggregated, and then converted to the session currency.
- Currency values may not appear as expected because currency values are formatted based on the user's locale and not on the currency code.
This confusion may be the result of the difference between session and reference currencies, changing conversion rates, and different session currencies used by different users.