Shopify GraphQL API not returning prices in selected currency - only base currency

I have a multi-currency Shopify store where USD is the base currency but customers can switch to other currencies like EUR or GBP.

The problem is with how different APIs handle currency conversion:

Using the standard product endpoint (/products/handle.js) works perfectly:

  • USD: shows 2500 cents ($25.00)
  • EUR: shows 2387 cents (€23.87)

Using Storefront GraphQL API always returns USD prices no matter what currency the customer selected.

I tried using Shopify.currency.rates to manually convert from USD to the active currency but the results are not matching the actual prices that should be displayed.

Is there a way to make the Storefront GraphQL API respect the currently active currency and return proper converted prices instead of always defaulting to the store base currency?

check your storefront access token - some don’t have multi-currency permissions turned on. also make sure you’re querying the presentment currency field, not just shop currency. that’s what got me when i ran into this same issue last month.

You’re missing buyer identity in your GraphQL queries - that’s why currency conversion isn’t working. First, use the buyerIdentityUpdate mutation with your target country code. Then reference that buyer identity in your product queries. This tells Shopify which market rules and pricing to use. Without it, GraphQL just defaults to your primary market settings, which is why you keep getting USD. REST endpoints work differently since they use storefront session state, but GraphQL needs explicit context. Also double-check your market settings in Shopify admin - if the currency isn’t enabled for that specific market, it’ll default to base currency no matter what you put in your query.

This is a common issue with Shopify’s multi-currency setup. The Storefront GraphQL API doesn’t work like REST endpoints - it won’t use session-based currency switching. You need to explicitly pass currency context in your queries. Use the @inContext(country: COUNTRY_CODE) directive, but here’s the key part: make sure you’re passing the right country code for your target currency. Just setting the currency code won’t work - Shopify maps currencies to specific countries. Also check your currency conversion rates in Shopify admin. If those rates are inconsistent, it’ll cause the manual conversion issues you’re seeing. GraphQL pulls from those same rate tables but needs proper context to apply them.

had this issue too! for me, adding the correct currency in the headers did the trick. try setting the Accept-Language header or use @inContext in your query. shopify docs can be hard to follow, but this helped me out!

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.