Some PDIs are currently unavailable, and PDI actions are paused. View the latest updates here. Read More

Retsrict auto currency conversion in currenct field

SrijendraK
Tera Contributor

Hi everyone,

I have a requirement where I need to store the value of a ServiceNow Currency field in the currency selected by the user, without converting it to the instance reference currency (USD).

For example:

User selects GBP
User enters 100 GBP
I want the backend to store 100 GBP as-is.

However, ServiceNow automatically converts and stores the value in the reference currency (USD), while only displaying the selected currency on the UI.

I would like to know:

Is there any supported way to prevent this automatic conversion?
Is there a dictionary attribute, system property, or configuration that allows the Currency field to store the entered amount in the selected currency instead of USD?
If not, what is the recommended approach to meet this requirement while still using a Currency field?

Any suggestions or best practices would be greatly appreciated.

Thank you!Hi everyone,

I have a requirement where I need to store the value of a ServiceNow Currency field in the currency selected by the user, without converting it to the instance reference currency (USD).

For example:

* User selects GBP
* User enters 100 GBP
* I want the backend to store 100 GBP as-is.

However, ServiceNow automatically converts and stores the value in the reference currency (USD), while only displaying the selected currency on the UI.

I would like to know:

* Is there any supported way to prevent this automatic conversion?
* Is there a dictionary attribute, system property, or configuration that allows the Currency field to store the entered amount in the selected currency instead of USD?
* If not, what is the recommended approach to meet this requirement while still using a Currency field?

Any suggestions or best practices would be greatly appreciated.

Thank you!

1 REPLY 1

Vikram Reddy
Tera Guru

Hi @SrijendraK,

 

There's no dictionary attribute or system property that turns this off, because nothing is actually being overwritten, what's tripping you up is a second computed value sitting next to the one the user typed. A ServiceNow Currency field stores the exact code and amount entered as a linked record in fx_currency_instance, so 100 GBP stays 100 GBP in the database. What the platform also does on every save is calculate a reference currency equivalent, usually your instance's default like USD, purely for aggregation and reporting. I've seen this same pattern trip up a software asset management renewal, where the licensing dashboard showed everything in USD and the team assumed the field itself had been converted, when really a Performance Analytics collection job was pulling the reference value, a behavior ServiceNow documents as expected, not a bug. Two things worth checking before you redesign anything: the field's display mode, toggle the globe icon between As spent, Calculated, and Reference, and how you read the value in script, since a plain getValue() can hand back a converted number while getCurrencyString() gives you the raw code and amount back. If you genuinely need a guarantee that nothing downstream ever sees a derived figure, skip Currency altogether: a Decimal amount plus a Choice or reference currency-code field gives you exactly one number, stored exactly as entered.

 

Thank you,
Vikram Karety
Octigo Solutions INC