# Currency Formatting

## Currency formatting in Limio

Limio automatically formats prices so they appear correctly for each visitor, following international standards and local conventions.

### How formatting works

Limio uses the browser’s built in international number formatting capabilities, based on the [`Intl.NumberFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat) specification. This ensures consistent and accurate display of currency symbols, decimal separators, and number grouping across regions.

### Currency selection

The currency shown for a price always comes from the **offer currency**. This does not change based on the visitor’s location.

### Locale selection

The way a price is formatted depends on the visitor’s **country**, which Limio stores in a browser cookie.\
The locale determines:

* Where the currency symbol appears
* Whether decimals use a comma or a dot
* Whether thousands use a comma, a dot, or a space
* Any spacing rules around the currency symbol

For example:

* A US visitor seeing a USD price may see $34.00
* A British visitor seeing a USD price may see US$34.00
* A British visitor seeing a GBP price may see **£34.00**
* A French visitor seeing a GBP price may see **34,00 £**

### Combined effect

When displaying a price, Limio combines:

* the offer’s **currency**, and
* the visitor’s **locale**

to output a correctly formatted amount.

This ensures:

* the price stays in the merchant’s chosen currency
* the formatting respects the visitor's regional reading conventions

### Examples

| Offer Currency | Visitor Locale | Displayed Example |
| -------------- | -------------- | ----------------- |
| USD            | United States  | $34.00            |
| USD            | Germany        | 34,00 $           |
| GBP            | United Kingdom | £34.00            |
| GBP            | France         | 34,00 £           |

### Accuracy and standardisation

Limio does not apply custom formatting rules. All currency displays follow the behaviour of `Intl.NumberFormat`, which is the global JavaScript standard for internationalised number formatting.
