Null Market.currencySettings field

Hey @Chris_Geelhoed - I definitely get where you’re coming from. I did some further digging into this and what you mentioned makes sense - in order to create catalog price lists you do effectively need to know the market currency from the get go. We’d just need a specific “live” merchant example to help advocate for this internally on my end.

I’ll DM you right away to get those details so we can properly escalate this - appreciate your patience on this one.

In our app, we also rely on data from currencySettings, in particular the manualRate field.

What’s a bit unclear to me is how apps are expected to work with this field in cases where currencySettings is returned as null. For a noticeable number of stores, there doesn’t seem to be a direct or indirect way to obtain this information for certain markets.

P.S. I analyzed around 600 client stores.
Out of those, 138 stores have at least one market where currencySettings is null.
Additionally, 41 stores have only a single market, and that market still returns currencySettings = null, which suggests this is not related to market inheritance.

For example, for the same market ID:

== 2025-07 response ==
{
  "data": {
    "markets": {
      "edges": [
        {
          "node": {
            "id": "gid://shopify/Market/xxx",
            "name": "Egypt",
            "status": "ACTIVE",
            "conditions": {
              "conditionTypes": [
                "REGION"
              ]
            },
            "currencySettings": null,
            "catalogs": {
              "nodes": [
                {
                  "id": "gid://shopify/MarketCatalog/yyy",
                  "status": "ACTIVE"
                }
              ]
            },
            "regions": {
              "nodes": [
                {
                  "code": "EG"
                }
              ]
            }
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": null
      }
    }
  }
}
== 2025-01 response ==
{
  "data": {
    "markets": {
      "edges": [
        {
          "node": {
            "id": "gid://shopify/Market/xxx",
            "name": "Egypt",
            "currencySettings": {
              "baseCurrency": {
                "enabled": true,
                "currencyCode": "EGP"
              },
              "localCurrencies": false
            },
            "catalogs": {
              "nodes": [
                {
                  "id": "gid://shopify/MarketCatalog/yyy",
                  "status": "ACTIVE"
                }
              ]
            },
            "regions": {
              "nodes": [
                {
                  "code": "EG"
                }
              ]
            }
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": null
      }
    }
  }
}

Additionally, based on the same analysis, all markets that return currencySettings = null in 2025-07 were returning a currencySettings object with the same values in 2025-01:

{
  "baseCurrency": {
    "enabled": true,
    "currencyCode": "XXX"
  },
  "localCurrencies": false
}

In all observed cases:

baseCurrency.enabled was always true

currencyCode always matched the shop’s base currency

localCurrencies was always false

It would be very helpful to confirm whether, when currencySettings is returned as null, these values can be safely assumed implicitly, and whether this also implies that a manual exchange rate is never available for such markets.

Thanks @Siarhei_Shyshko, really appreciate the details on this. The data around single-market stores is interesting.. Would you be able to share a handful (5-10) of the shop IDs for those single-market stores where currencySettings is null? Having concrete examples will help us reproduce this internally and push for a resolution. If you’d prefer to speak over DM, just let me know and I can get that set up on my end here.

Hi @Alan_G,

IDs (1 market | currencySettings = null | 2025-07 API)

gid://shopify/Shop/63373639840

gid://shopify/Shop/55578099758

gid://shopify/Shop/92606071081

gid://shopify/Shop/85856715074

gid://shopify/Shop/83270271266

gid://shopify/Shop/67044704567

gid://shopify/Shop/101652857170

My API queries:

2025-01
{
    markets(first:50) {
        edges {
            node {
                id
                name
                currencySettings {
                    baseCurrency {
                        enabled
                        currencyCode
                    }
                    localCurrencies 
                }
                catalogs (first: 250) {
                    nodes {
                        id
                        title
                        status
                    }
                }
                regions(first: 250) {
                    nodes {  
                        id
                        name
                        ... on MarketRegionCountry {
                            code
                        }
                    }
                }
            }
        }
        pageInfo {
            hasNextPage
            endCursor
        }
    }
}
2025-07
{
    markets(first:50) {
        edges {
            node {
                id
                name
                status
                conditions {
                    conditionTypes
                }
                currencySettings {
                    baseCurrency {
                        enabled
                        currencyCode
                        manualRate
                    }
                    localCurrencies 
                    roundingEnabled
                }
                catalogs (first: 250) {
                    nodes {
                        id
                        title
                        status
                    }
                }
                regions(first: 250) {
                    nodes {  
                        id
                        name
                        ... on MarketRegionCountry {
                            code
                        }
                    }
                }
            }
        }
        pageInfo {
            hasNextPage
            endCursor
        }
    }
}

Hi, @Alan_G

I think I got a bit carried away experimenting with market queries using the 2025-01 API version :slightly_smiling_face: As a result, our app received a “Markets incompatible” flag caused by my manual requests.

I understand that this flag should clear itself after some time, but if there’s any way you could help remove it sooner, I’d really appreciate it.

Just to clarify, in the app itself we use the 2025-10 API version for all market-related queries.

APP ID: 2508649

Hi @Liam-Shopify

Sorry to loop you in here, but I was wondering if you might be able to help with the “Markets incompatible” issue mentioned in the latest message of this thread.

Thanks in advance!

Hi @Siarhei_Shyshko

When this this message start appearing? Is it still being displayed?

Hi, the message disappeared a few days ago. The issue is no longer present.

Glad to hear it’s no longer appearing- this must have been a temporary issue.