Shipping message wrong

Topic summary

A Shopify store owner is experiencing incorrect free shipping threshold messages when switching between Swedish and German markets.

The Problem:

  • Free shipping threshold is set at 340 SEK / 34€
  • Swedish market displays correctly
  • German market shows “290€ needed” despite the cart containing 34€ worth of items
  • At checkout with a German address, shipping correctly shows as free

Root Cause Identified:
The free shipping threshold is being passed to the frontend in base currency (SEK) but processed as if it were in the display currency (EUR). For example, 280 SEK is incorrectly treated as 280 EUR in calculations.

Attempted Solutions:

  1. Initial JavaScript modification to totalPrice() function using Shopify.currency.rate - unsuccessful
  2. Second approach modifying the _threshold calculation with currency rate conversion - partially successful

Current Status:
The currency conversion now works, but the displayed threshold values (280 SEK / 26€) don’t match the configured settings (450 SEK / 45€). The issue appears to require examining the theme’s Liquid code, which isn’t accessible from the frontend. Recommendation to contact theme developers for complete resolution.

Summarized with AI on October 29. AI used: claude-sonnet-4-5-20250929.

Cheers Everyone,

I’m having this weird issue, where the in-cart message about how much is needed for free shipping is off.

When in the Swedish market, it works perfectly fine.
But switching to the German market the message is off. And that by a lot.

Free shipping is eligible on an order value of 340kr SEK or 34€. When adding a bundle worth 340kr/34€ in the Swedish market it shows eligibility for free shipping. On the German market it says 290€ needed for free shipping.
If in the German market you go to checkout and enter a German address is shows Free shipping.

Shipping rates are set the same for all Swedish and EU market.

This tells me that it is either an issue in translation or currency change. Or something else?! I have no clue why it does that.

Please feel free to check out my store and test for yourself:

amoandoak.se

Appreciate any input on this!

Hi @lxurnz

I have checked your checkout page with the above cases. However, the issue ‘Shipping message wrong’ did not occur. Could you please provide a more detailed description or attach a screenshot to better illustrate your case?

It looks like the threshold for Free Shipping is always passed to the frontend in base currency. So if it’s 280 Sek, it’s processed on the frontend as 280 Euro, so if your cart is 40Euro, the difference would still be shown as 240, even though 40 Euro > 280 Sek.

This can be fixed in theme Javascript code, however, I’ve first try to contact theme developers.

Can’t really suggest the JS code edit as I do not have access to the theme code.

Here is the idea – there is this function in assets/theme.js

get totalPrice() {
    return parseFloat(this.getAttribute("total-price"))
  }

I’d try to modify it like this:

get totalPrice() {
    return parseFloat(this.getAttribute("total-price")) * Shopify.currency.rate
  }

This will take in account currency exchange rate for selected currency.

Hey, thanks for the advice, sadly the change in code didn’t change.

Have you got another idea how to fix this?

I might also reach out so the developers.

Yes, I guess that was a wrong approach – one needs to convert the threshold to current currency, rather than the other way around…

So, yes, I do have other ideas!

try editing

__privateSet(this, _threshold, parseFloat(this.getAttribute("threshold").replace(/[^0-9.]/g, "")) * 100);
this.setAttribute("threshold", __privateGet(this, _threshold));

to

__privateSet(this, _threshold, parseFloat(this.getAttribute("threshold").replace(/[^0-9.]/g, "")) * 100  * Shopify.currency.rate);

I expect this to produce proper results.

1 Like

Hej mate,

this seems to have fixed the currency conversion. Though the entire free shipping threshold is off. It is set at 450kr or 45€. On the cart it is on 280kr or 26 something Euros.

This might be a whole different issue, but would you have an idea on how to fix that? :sweat_smile:

Yes, from my point of view I see:


Can't tell why without looking at the theme code, because it's output by Liquid code which is not visible from the outside...