How prices show in the customer's currency
Bundlex shows bundle prices on your product page in each shopper's own currency, using your store's money format. This page explains where those prices come from, how they get localized, and why the number in the widget is a display estimate while the real discount is applied at checkout.
Where the prices come from
The widget pulls pricing from two different places, depending on what is being priced:
- The main product (the product whose page the shopper is on) is priced from the product data already on the page. Because Shopify renders that data in the buyer's presentment currency, the main product price is already correct for the shopper's market with no extra lookup.
- Cross-sells and free gifts (the "extras" attached to an offer) are not on the page, so the widget fetches their prices from the Shopify Storefront API. Each request includes the buyer's country so Shopify returns the price in the right presentment currency.
The buyer's country comes from Shopify itself (the value Shopify sets for the visitor). When that country is passed correctly, an extra priced in your base currency is returned in the shopper's currency, with the right symbol. If the country were missing, extras would fall back to your store's base currency with the wrong symbol, which is exactly the mismatch the country value prevents.
How prices are formatted
Bundlex formats every amount using your Shopify money format string (the same format Shopify's money filter uses, for example $0.00 or €0,00). It reads that template and fills in the number while keeping your symbol, decimal style, and separators:
- Decimal places follow the format. Currencies that show cents get two decimals, and currencies without a decimal part (such as Japanese yen) get none.
- Separators follow the format too, so European-style amounts use a comma for the decimal and a period for thousands, while US-style amounts use the reverse. A handful of currencies have their own spacing and separator rules, which Bundlex handles specifically.
If no money format string is available for some reason, Bundlex falls back to a standard locale-aware currency formatter so the shopper still sees a properly formatted price rather than a raw number.
The widget price is a display estimate
This is the most important thing to understand. The price the widget shows is calculated on the storefront for display only. The authoritative discount is applied at checkout by the Bundlex Shopify Function, which runs on the cart at checkout time. The widget's job is to preview the deal, and the Function's job is to actually charge it.
Normally the two agree, because both work from the same Shopify pricing. There are a few situations where the checkout total can be lower than what the widget displayed, and that is expected, not a bug:
- Another discount stacks on top. If you run a separate discount for a customer segment (for example a VIP or wholesale discount) that combines with product discounts, Shopify applies it on top of the Bundlex discount at checkout. The widget only knows about Bundlex pricing, so it cannot show that extra reduction. Eligible shoppers will see a lower total at checkout.
- A second discount app is active. If another bundle or volume-discount app is also installed and its discount stacks, the per-line totals at checkout reflect both apps, which the widget cannot preview.
If a shopper ever pays less than the widget showed because of a stacking discount, that is correct behavior. The widget previews the Bundlex deal, and the checkout applies everything that legitimately combines.
For more on combining discounts, see stacking with other discounts.
A note on "Show compare at price"
The compare-at price (the strikethrough "original" price) is a display element only. Turning it on changes the number shown as the original price, but the discount is always calculated from the product's selling price, not from the compare-at value. So the strikethrough is cosmetic and does not change what the shopper is charged. If the visible percentage and the strikethrough seem to imply a different discount than the badge, that is the cosmetic strikethrough at work, not a pricing error. See compare-at price for details.
What to expect as a merchant
- Shoppers in different markets see bundle prices in their own currency, formatted to match your store.
- Main-product prices are taken straight from the localized page, while cross-sell and gift prices are fetched per buyer country.
- The widget number is a preview. The Bundlex Function is what applies the real discount at checkout.
- If you stack another discount on top, expect checkout to show a lower total than the widget for eligible customers, and let those customers know so they are not surprised.
Was this article helpful?
Your feedback helps us improve our docs.