Null Market.currencySettings field

With the 2025-04 graph QL API release the Market.currencySettings field can suddenly be null when that was not the case before.

This is noted here

If a null value indicates that the currency settings are inherited from the parent market, then how do developers determine what the parent market is? We still need to be able to get the currency settings for child markets.

2 Likes

:eyes: very interested in shopiffolks takes on this

Hey all :waving_hand: - good questions here, happy to clarify!

Right now, technically, knowing how a parent market has defined the currency won’t actually tell you whether that market currency will be used for a specific country / company location, since multiple markets can match, between parent/child/sibling markets.

Hopefully, I’m understanding correctly in terms of what you’re looking for, but if you are looking for the “final” inherited currency type value for a specific market, marketsResolvedValues should provide that data.

It’s currently only available in the unstable version of the API, but is available without a developer preview, so I did want to suggest that as an option.

Hope this helps - let me know if I can clarify as always :slight_smile:

@Alan_G I’m asking how developers can access the data that merchants can already see in the new markets edit page. We need to know the currency of the market as shown in this example here:

If I could determine that France is a child market of Europe, I could use the API to check the currency settings of Europe which would be euros in this example, and from that my app would know that for the France market, euros is the currency that is used.

An even better solution in my opinion would be to keep the API working the same way it did before where currencySettings is never null. If merchants are able to see “Euro” in the user interface here it should be possible to also display that information in the API.

Hey @Alan_G just wanted to check in about this, currently the inability to get the currency used for certain markets is impacting Shopify merchants who are using the new markets on my app.

Hey @Chris_Geelhoed :waving_hand: - the marketsResolvedValues object would be what you’re looking for there via the API. This would be an example query that should work for this:

query GetMarketResolvedValues {
  marketsResolvedValues(buyerSignal: {countryCode: FR}) {
    catalogs(first: 10) {
      nodes {
        markets(first: 10) {
          nodes {
            id
            name
            currencySettings {
              baseCurrency {
                currencyCode
                currencyName
              }
            }
          }
        }
      }
    }
  }
}

That should give you the associated currency and markets in instances where buyers are located in France, just as an example. My understanding is that this reflects what’s seen in the admin UI, but let me know if this isn’t what you’re looking for and I can touch base with the team - hope this helps! :slight_smile:

Hi @Alan_G

I’m starting from the market ID not the country code.

I’m not sure how that helps to be honest. That query seems to be assuming that the market will have a non-null Market.currencySettings which is not the case any longer and that is the issue I am bringing up in the first place. Sorry if I misunderstand somehow.

To try to make the issue more clear, it is possible to create a child market (just an example, but France could be a child market of Europe) in the new markets Shopify UI, and when you check the currency settings in the API the France currency settings can show as null, but the UI will reflect the same currency settings as the parent market. So the API and the Shopify UI are showing different data in that case.

The root issue is that developers need to know the currency of a market. If a null currencySettings means that the market uses the store default currency that is fine, but that does not seem to be the case in my testing in the example above. Just because a market is a child market doesn’t mean that developers can just not have access to the currency now, we still need it.

Thanks for looking in this once again.

Thanks for clarifying @Chris_Geelhoed - I think I get where you’re coming from now. marketsResolvedValues might not necessarily address what you’re looking for here.

Just want to make sure I’m understanding fully though, could you share the flow you hope to set up/the desired use case?

Essentially, if you’re just trying to find out the resolved currency, marketsResolvedValues, should work, but if you’re seeing a null value for the child market, I think that may point to something different being the case here. Could you also share the output you’re getting when you try the query there (let me know if you’d like to DM about this if the info is sensitive) - definitely happy to take a look and see if there are any gaps on our end here.

My issue does not involve which market is resolved for the customer.

My issue is that for a given market, the currency cannot be determined in the new markets in some test cases I have seen. The exact query doesn’t really matter, but it could just be this as an example

        {
            markets (first: 10) {
                pageInfo {
                    hasNextPage
                }
                edges {
                    cursor
                    node {
                        currencySettings {
                            baseCurrency {
                                currencyCode
                            }
                        }
                    }
                }
            }
        }

The behaviour I am describing is not unexpected given the API note I posted earlier here

The Market.currencySettings field is now nullable. A null value indicates that the currency settings are inherited from the parent market.

The problem is that as far as I can tell, app developers have no way to know what the parent market actually is, and therefore cannot determine the market currency.

1 Like

@Chris_Geelhoed - thanks again very much for clarifying - I think I get where you’re coming from now.

Looking at our schema for GraphQL it doesn’t look like there’s a real way to associate the actual parent ID (or any data related to the parent market like its currency) of the child market within the markets object (or currencySettings for that matter). I’ll speak to my colleagues internally to see if this is expected or not and at the very least put through a feature request for you - will loop back here when I’ve got some more info. Thanks again for your patience on this one.

1 Like

+1 for this functionality. I just ran into the same issue, it’s a bit tricky that currencySettings can be nullable. We need a reliable way to fetch all markets along with their associated currencies. Would love to see this supported! :victory_hand:

Thanks @Alan_G Personally I would not consider this a feature request as prior to the 2025-04 API version developers could reliably get the currency settings for markets, and now we suddenly can’t as far as I can see.

Also, you can clearly see the both the currency settings in the Shopify admin, and you can also see the parent/child relationship of markets, so it is hard to understand why this is not available in the API (especially when the release notes indicate that a null currency settings indicate a child market inheriting from the parent, that detail does not help developers if we can’t get the parent market anyway). Thanks for the help here it is appreciated.

Thanks for the clear explanation there @chris_geelhoed - I definitely see where you’re coming from on this as a potential regression.

I’ve discussed this with the relevant folks who handle our markets components , and they’ve just asked if you could share more specifics about your use case - essentially how your app utilizes market currency data/how you’re hoping to use that.

We just want to understand the exact impact and prioritize the appropriate/applicable solution, whether that’s exposing parent-child relationships or ensuring currencySettings is never null (can’t guarantee anything in terms of the fix/what it would look like at this point), but we did just want to confirm use cases so we can look into next steps. Basically, we’re just looking at:

  • How your app specifically uses market currency information
  • The specific workflow that’s now broken due to this change (if applicable)

Happy to push to get this resolved quickly since it’s actively affecting merchants using your app, just want to make sure we’ve gathered all the context we can on this.

I would assume that knowing the market currency could be important for many use cases. One of my uses cases is creating a price list for a market. When I use the priceListCreate mutation I need to make sure the price list currency matches the market currency.

If an app cannot determine the market currency, it cannot create a price list which uses the market currency. And this means that the app cannot edit the fixed prices of the market.

So currently users on the new markets cannot edit prices for certain markets in our app.

Hey @Chris_Geelhoed- thanks for sharing that use case and for waiting on my reply here, it’s definitely a valid one.

After speaking with the team, I was able to confirm that you should be able to create price lists with different currencies than a each relevant market on a shop when: New Markets is enabled on the shop, you’re using API version 2025-04 or newer, and for currencies different from the shop’s default, a multicurrency payment gateway must be enabled and the currency should be supported by the shop.

This should be supported by the PriceListCreate mutation as long as those pre-reqs are met.

This doesn’t solve your currency inheritance matching issue though (which is the largest issue you shared, so I’m more than happy to put through a feature request on your behalf too.)

Let me know if you have any other questions or if you encounter any other issues and I’d be happy to keep digging as always and thanks again for bearing with me here.

Thank you for the update Alan. Yes please make the feature request.

Water under the bridge, but I don’t consider this a feature request, this is a bugfix. The reality is that app developers were able to reliably get the currency of a market previously and they can no longer do this.

I don’t think it is reasonable for Shopify to release a change where the currency of some markets are simply not available to developers anymore. Either way thank you for the help here I do appreciate it.

Hey @Chris_Geelhoed - definitely get where you’re coming from for sure when we consider this a bugfix rather than a feature request. I’ll get that report sent up to our product teams and make sure I mention that this technically used to be possible in earlier versions.

I’ll close out the thread for now, but let me know if I can help out further as always.

Hi @Alan_G

May I ask for an update on this issue? I knew that in theory this issue would be impacting Shopify merchants, but unfortunately I have now received a support request that confirms that this issue is in fact impacting merchants in practise.

I’m not sure if this was intended, but your previous post has been marked as the solution when in fact no solution to this problem has been provided.

Hi Chris, thanks for following up.

Our development team has reviewed this issue and is treating it as a feature request to expose parent-child market relationships in the API, though I can’t provide a timeline for implementation at this point. I marked the thread as solved here though since I’ve escalated it to our product teams and created the feature request on our end to track it, though I realize that definitely may not feel like a solution when merchants are actively affected for sure.

If you’re able to share specific details about how this is impacting merchants in production (like shop domains or support tickets), I can definitely take a look at that further to help our team better understand the urgency and scope of the impact and get back in touch with our developers to see if we can bump priority on this. I still can’t guarantee an exact turnaround time on when this would get looked at, but if you’d like to share those live examples here (or in a DM for more sensitive info), please just let me know and I’d be happy to take a look.

Hi @Alan_G ,

I’m a little confused by your reply, I thought we had gone over this already months ago. I already told you the following which explains how this is impacting merchants in production… this was my earlier message from May:

If an app cannot determine the market currency, it cannot create a price list which uses the market currency. And this means that the app cannot edit the fixed prices of the market.

So currently users on the new markets cannot edit prices for certain markets in our app.

I’ll DM you details of a specific merchant, but exactly what I explained earlier is happening… our app cannot determine the currency of a market and therefore we cannot modify the prices of the market.