If the amount is in pence and the result required in GBP, you have to divide the amount by 100, (considering 100 pence = 1 GBP). The minimumFractionDigits adjust the trailing Zeros after decimal point of the currently but does not manipulate the actual value.

You should try below

const formatter = new Intl.NumberFormat("en-GB", {
  style: "currency",
  currency: "GBP",
  minimumFractionDigits: 2,
});

const moneyFormat = formatter.format(7360 / 100);

console.log(moneyFormat)

Answer from Anand G on Stack Overflow
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Intl › NumberFormat
Intl.NumberFormat - JavaScript | MDN
const number = 123456.789; console.log( new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" }).format( number, ), ); // Expected output: "123.456,79 €" // The Japanese yen doesn't use a minor unit console.log( new Intl.NumberFormat("ja-JP", { style: "currency", currency: "JPY" }).format( number, ), ); // Expected output: "¥123,457" // Limit to three significant digits console.log( new Intl.NumberFormat("en-IN", { maximumSignificantDigits: 3 }).format( number, ), ); // Expected output: "1,23,000" Intl.NumberFormat() Creates a new NumberFormat object.
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Intl › NumberFormat › NumberFormat
Intl.NumberFormat() constructor - JavaScript | MDN
For example, currencies for which the smallest coin is 5 cents might want to round the value to increments of 5, reflecting amounts that can actually be paid in cash. This kind of rounding can be achieved with the roundingIncrement property. For example, if maximumFractionDigits is 2 and roundingIncrement is 5, then the number is rounded to the nearest 0.05: ... const nf = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD", maximumFractionDigits: 2, roundingIncrement: 5, }); console.log(nf.format(11.29)); // "$11.30" console.log(nf.format(11.25)); // "$11.25" console.log(nf.format(11.22)); // "$11.20"
🌐
DEV Community
dev.to › schalkneethling › number-and-currency-formatting-in-javascript-using-intlnumberformat-46og
Number and Currency Formatting in JavaScript using Intl.NumberFormat - DEV Community
April 3, 2024 - As you can tell from the above, and this only touches the surface, Intl.NumberFormat is incredibly powerful especially its ability to ease the localization of number formatting and currencies.
🌐
Intl Explorer
intl-explorer.com › NumberFormat › Currency
Intl.NumberFormat Currency
No currency · Yemeni rial · South African rand · Zambian kwacha · Zimbabwean dollar · Amount · Intl.NumberFormat can also be used from Number.prototype.toLocaleString() const number = 123456.789 number.toLocaleString(undefined) // €123,456.79 · { currencySign: "standard", style: "currency", currency: "EUR" } // €123,456.79 ·
🌐
Go Make Things
gomakethings.com › how-to-format-a-number-as-currency-with-the-intl.numberformat-api-in-vanilla-javascript
How to format a number as currency with the Intl.NumberFormat API in vanilla JavaScript | Go Make Things
You want to display this as a currency, like $67,123.45. First, we’ll create a new Intl.NumberFormat() constructor. We’ll pass in undefined as the locale to use the visitors default language.
🌐
SamanthaMing
samanthaming.com › tidbits › 30-how-to-format-currency-in-es6
How to Format Currency in ES6 | SamanthaMing.com
You can now use the NumberFormat instance to format any number into a currency value. const money = 💰; // Old Way money.toLocaleString('en-US', {style: 'currency', currency: 'USD'} ); // '$100.00' // ✅ ES6 Way new Intl.NumberFormat('en-US', ...
Find elsewhere
🌐
Medium
medium.com › @Marioskif › javascript-daily-tips-73-how-to-use-javascripts-intl-numberformat-for-currency-formatting-b8360ac993b5
JavaScript Daily Tips #73: How to Use JavaScript’s Intl.NumberFormat for Currency Formatting | by Mariosdev | Medium
December 13, 2024 - It provides an easy way to format numbers based on the rules of a specific locale. This includes number separators, decimals, and, importantly for this article, currency formatting.
🌐
CoreUI
coreui.io › answers › how-to-format-a-number-as-currency-in-javascript
How to format a number as currency in JavaScript · CoreUI
September 27, 2025 - The first parameter 'en-US' specifies the locale, and the options object defines style: 'currency' for monetary formatting and currency: 'USD' for the currency code. The format() method applies the formatting rules to the number.
🌐
Codú
codu.co › articles › formatting-money-in-javascript-with-intl-numberformat-u3-zr6-t
Formatting Money in JavaScript with Intl.NumberFormat | by Niall Maher | Codú
In this example, en-US is the locale for the United States, and USD is the currency code for US dollars. The output is "$1,234.56", formatted according to US standards. For Euros, which are used in many European countries, the formatting changes, and even as a European, I have no idea what to expect. But here's how you would format a value for a specific country easily: // Germany const germanyFormatter = new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR', }); console.log(germanyFormatter.format(1234.56)); // Outputs: "1.234,56 €"
🌐
MDN Web Docs
developer.mozilla.org › en-US › docs › Web › JavaScript › Reference › Global_Objects › Intl › NumberFormat › format
Intl.NumberFormat.prototype.format() - JavaScript | MDN
The format() method of Intl.NumberFormat instances formats a number according to the locale and formatting options of this Intl.NumberFormat object. const amount = 654321.987; const options1 = { style: "currency", currency: "RUB" }; const numberFormat1 = new Intl.NumberFormat("ru-RU", options1); console.log(numberFormat1.format(amount)); // Expected output: "654 321,99 ₽" const options2 = { style: "currency", currency: "USD" }; const numberFormat2 = new Intl.NumberFormat("en-US", options2); console.log(numberFormat2.format(amount)); // Expected output: "$654,321.99" js ·
🌐
W3C
w3c.github.io › i18n-drafts › questions › qa-number-format.en.html
Number, currency, and unit formatting
Ambiguity: The same symbol might represent multiple currencies (e.g., $ for US Dollar, Canadian Dollar, Mexican Peso, etc.). The Intl.NumberFormat object in JavaScript automatically handles locale-specific decimal and grouping separators, currency symbols, and other numerical conventions.
🌐
JavaScript in Plain English
javascript.plainenglish.io › intl-numberformat-api-a-comprehensive-guide-f310a760733b
Intl.NumberFormat API: A Comprehensive Guide | by Danielle Dias | JavaScript in Plain English
June 13, 2023 - The number 1234.5678 is formatted as a currency value, resulting in the formatted string "$1,234.57". The useGrouping option controls whether a grouping separator, such as a comma, should be used to separate thousands.
🌐
Reality Ripple
udn.realityripple.com › docs › Web › JavaScript › Reference › Global_Objects › Intl › NumberFormat › NumberFormat
Intl.NumberFormat() constructor - JavaScript
let amount = 3500; new Intl.NumberFormat('en-US', {style: 'unit', unit: 'liter'}).format(amount); // → '3,500 L' new Intl.NumberFormat('en-US', {style: 'unit', unit: 'liter', unitDisplay: 'long'}).format(amount); // → '3,500 liters' If the style is 'currency', a currency property must be provided.
🌐
GeeksforGeeks
geeksforgeeks.org › javascript › javascript-intl-numberformat-constructor
JavaScript Intl.NumberFormat() Constructor - GeeksforGeeks
January 13, 2026 - The Intl.NumberFormat() constructor creates an object for formatting numbers based on locale-specific rules, making output readable and region-friendly. It supports formatting styles like decimal, currency, percent, and unit.
🌐
Medium
ratracegrad.medium.com › how-to-format-numbers-in-javascript-using-intl-numberformat-834cf9b4cbe5
How to format numbers in JavaScript using Intl.NumberFormat | by Jennifer Bland | Medium
January 2, 2023 - const money = 1000; money.toLocaleString('en-US', { style: 'currency', currency: 'USD' }); // $1,000.00 · ES6 JavaScript gives us the Intl object which is the ECMAScript Internationalization API. This API provides language-sensitive number formatting. Here is the same example as above: new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(money); // $1,000/00 ·
🌐
freeCodeCamp
freecodecamp.org › news › how-to-format-number-as-currency-in-javascript-one-line-of-code
How to Format a Number as Currency in JavaScript
November 7, 2024 - You can use this option to specify the currency you want to format to, such as 'USD', 'CAD', 'GBP``', 'INR' and lots more. This will also help provide the symbol in the appropriate position based on the locale.
Top answer
1 of 2
29

One simple way to do achieve what you want is to use String#replace() to remove the currency from the string. To make this easier, you can set currencyDisplay to "code" which will use the ISO currency code - the same one passed in to currency:

const number = 123456.789;

console.log(new Intl.NumberFormat('de-DE', { 
    style: 'currency',
    currency: 'EUR', 
    currencyDisplay: "code" 
  })
  .format(number)
  .replace("EUR", "")
  .trim()
); // 123.456,79
 
// the Japanese yen doesn't use a minor unit 
console.log(new Intl.NumberFormat('ja-JP', { 
    style: 'currency', 
   currency: 'JPY', 
    currencyDisplay: "code" 
  })
  .format(number)
  .replace("JPY", "")
  .trim()
); // 123,457

This can be extracted into a function:

const number = 123456.789;

console.log(format('de-DE', 'EUR', number)); // 123.456,79
console.log(format('ja-JP', 'JPY', number)); // 123,457

function format (locale, currency, number) {
  return new Intl.NumberFormat(locale, { 
    style: 'currency', 
    currency, 
    currencyDisplay: "code" 
  })
  .format(number)
  .replace(currency, "")
  .trim();
}


An alternative that allows you more control is to use Intl.NumberFormat#formatToParts() which formats the number but gives you tokens that you can programmatically consume and manipulate. For example, using the method with locale = "de-DE" and currency = "EUR" you get the following output:

[
  {
    "type": "integer",
    "value": "123"
  },
  {
    "type": "group",
    "value": "."
  },
  {
    "type": "integer",
    "value": "456"
  },
  {
    "type": "decimal",
    "value": ","
  },
  {
    "type": "fraction",
    "value": "79"
  },
  {
    "type": "literal",
    "value": " "
  },
  {
    "type": "currency",
    "value": "EUR"
  }
]

Which means that you can easily filter out "type": "currency" and then combine the rest into a string. For example:

const number = 123456.789;

console.log(format('de-DE', 'EUR', number)); // 123.456,79
console.log(format('ja-JP', 'JPY', number)); // 123,457

function format (locale, currency, number) {
  return new Intl.NumberFormat(locale, { 
    style: 'currency',
    currency, 
    currencyDisplay: "code",
  })
  .formatToParts(number)
  .filter(x => x.type !== "currency")
  .filter(x => x.type !== "literal" || x.value.trim().length !== 0)
  .map(x => x.value)
  .join("")
}

NOTE: the exclusion here: .filter(x => x.type !== "literal" || x.value.trim().length !== 0) handles whitespace characters within the number. That might come up when using the option currencySign: 'accounting' in the formatter. In some locales this will use parentheses for negative numbers which would leave a space inside if just the currency is removed:

const number = -123456.789;

const parts = new Intl.NumberFormat('ja-JP', { 
    style: 'currency',
    currency: 'JPY', 
    currencySign: "accounting",
    currencyDisplay: "code",
  })
  .formatToParts(number);
  
console.log(parts); 

/* output:
[
  { type: "literal" , value: "("    },
  { type: "currency", value: "JPY"  },
  { type: "literal" , value: " "    },
  { type: "integer" , value: "123"  },
  { type: "group"   , value: ","    },
  { type: "integer" , value: "457"  },
  { type: "literal" , value: ")"    }
]
*/
.as-console-wrapper { max-height: 100% !important; }

Thus negative numbers are handled correctly:

const number = -123456.789;

console.log(format('de-DE', 'EUR', number)); // 123.456,79
console.log(format('ja-JP', 'JPY', number)); // 123,457

function format (locale, currency, number) {
  return new Intl.NumberFormat(locale, { 
    style: 'currency',
    currency, 
    currencyDisplay: "code",
    currencySign: "accounting",
  })
  .formatToParts(number)
  .filter(x => x.type !== "currency")
  .filter(x => x.type !== "literal" || x.value.trim().length !== 0)
  .map(x => x.value)
  .join("")
}

Thanks to Chris Peckham for pointing out potential pitfalls when using the accounting currency sign option.

2 of 2
5

If you only want the separators in between individual digits, just format as a number instead of using currency:

const numberFormatter = new Intl.NumberFormat("en-US", {
  // Do not show fractions - front end should only handle whole numbers
  maximumFractionDigits: 0,
});

And then numberFormatter.format(asNumber); with whatever number you like.

For your example of 123456, "de-DE" is 123.456, "ja-JP" is 123,456

🌐
Pub.dev
pub.dev › documentation › intl › latest › intl › NumberFormat-class.html
NumberFormat class - intl library - Dart API
Creates a NumberFormat for currencies, using the simple symbol for the currency if one is available (e.g.