# Currency formatting

> Format prices in a Shoplazza Theme with money filters: show the currency symbol or code, and keep amounts correct for a store selling in multiple currencies.

Price fields are stored as plain numbers. Use money filters to format them into currency strings so customers see prices the way they expect. This guide covers formatting a price, showing the currency code, and supporting multiple currencies.

## Format a price

Price fields such as `product.price` and `variant.price` are numbers in the store's main currency unit — for example, `33`, not `3300`. Always pass a price through a money filter; never output the raw value.

Use [`money`](/docs/theme/references/liquid/filters/money) (or its alias `money_with_symbol`) to format a price with the currency symbol:

```liquid title="Code"
{{ product.price | money }}
{{ product.price | money_with_symbol }}
```

```html title="Output"
$33.00
$33.00
```

Use [`money_without_currency`](/docs/theme/references/liquid/filters/money) when you need the number without a symbol, such as in a custom layout:

```liquid title="Code"
{{ product.price | money_without_currency }}
```

```html title="Output"
33.00
```

## Show the currency code

`money_with_symbol` outputs only a symbol, and several currencies share one — both US and Canadian dollars use `$`, and Chinese yuan and Japanese yen both use `¥`. To remove ambiguity on a total such as the cart, show the currency code next to the amount.

Use [`cart.currency`](/docs/theme/references/liquid/objects/cart), which is the currency the customer is currently viewing. It matches the symbol that `money_with_symbol` renders:

```liquid title="Code"
{{ cart.total_price | money_with_symbol }} {{ cart.currency }}
```

```html title="Output"
¥225.00 CNY
```

:::warning
The [shop object](/docs/theme/references/liquid/objects/shop)'s `shop.currency` and `shop.currency_code` return the store's **base** currency, not the currency the customer is viewing. Don't use them to label a displayed price: once a [multi-currency](#support-multiple-currencies) app converts the amount, `money_with_symbol` shows the presentment currency (`¥`) while `shop.currency_code` still returns the base currency (`USD`), producing a mismatched label such as `¥225.00 USD`.
:::

## Support multiple currencies

Multiple-currency display is provided by the Multi-currency app, which a merchant installs from the App Store — it isn't part of the theme. For installation and configuration, see [Multi-currency settings](https://helpcenter.shoplazza.com/hc/en-us/articles/4411633235865). Once the app is active:

* Once the app is active, prices switch automatically based on the customer's language by default. The merchant can also add a currency switcher to the header from the theme editor for manual selection.
* Your existing money filters render prices in the customer's selected (presentment) currency automatically — both the symbol and the converted amount update. You don't need to change your Liquid or convert amounts yourself.

For example, the same `{{ product.price | money_with_symbol }}` that outputs `$33.00` for a US customer outputs `¥224.08` once that customer switches to CNY.
