marketCurrencySettingsUpdate — baseCurrencyManualRate not working in Unified and non-Unified Markets

Hello Shopify dev community,

We are facing issues while using the marketCurrencySettingsUpdate mutation specifically with the baseCurrencyManualRate field. Here are the details:

:one: Unified Markets Enabled
When we attempt the following mutation on a store with Unified Markets enabled:

// We are using GQL version of 2025-04

mutation {
  marketCurrencySettingsUpdate(
    input: {
      baseCurrency: CAD
      baseCurrencyManualRate: 0.016152
      localCurrencies: true
      roundingEnabled: true
    }
    marketId: "gid://shopify/Market/26246381234"
  ) {
    userErrors {
      code
      field
      message
    }
    market {
      id
      name
    }
  }
}

We receive the following error:

{
  "userErrors": [
    {
      "code": "UNIFIED_MARKETS_ENABLED",
      "field": ["input"],
      "message": "This action is restricted if unified markets is enabled."
    }
  ]
}

We understand that some operations may be restricted in Unified Markets, but we would like to specifically ask:

  • Why is setting baseCurrencyManualRate restricted in Unified Markets?
  • Is there any API or mechanism available to set a manual exchange rate under Unified Markets?
  • Is this functionality planned for future API versions?

:two: Unified Markets Disabled (Non-Unified Markets)
When we run the exact same mutation on a store where Unified Markets is disabled (Legacy Markets model), the mutation runs without any errors. However, the baseCurrencyManualRate is not updated. The value remains unchanged, and no errors or warnings are returned to indicate failure.

This creates confusion because:
The API call succeeds, but silently fails to apply the baseCurrencyManualRate.
There is no feedback from the API indicating why the update failed.

:three: Summary

  • In Unified Markets → mutation is blocked completely with UNIFIED_MARKETS_ENABLED error.
  • In non-Unified Markets → mutation is accepted but does not update baseCurrencyManualRate, nor returns any error.

Since our system relies on managing currency exchange rates for merchant markets, we are currently blocked from programmatically updating baseCurrencyManualRate for both Unified and non-Unified Market structures.

Could you please:
Confirm whether baseCurrencyManualRate is supported or deprecated?
Clarify if this is a known limitation or a bug?
Suggest any alternative approach to programmatically manage currency exchange rates?

We appreciate your assistance and look forward to your clarification.

1 Like

Hey @Sandip_Kumavat

I tested your exact mutation here. What’s happening is that for Unified Markets stores, you need to use the marketUpdate mutation instead of marketCurrencySettingsUpdate. Our documentation on the developer preview can help clarify the expected behaviour.

The key with it not updating is that manual exchange rates don’t work when localCurrencies is set to true. You need to set localCurrencies: false for manual rates to work:

mutation {
  marketUpdate(
    id: "gid://shopify/Market/YOUR_MARKET_ID"
    input: {
      currencySettings: {
        baseCurrency: CAD
        baseCurrencyManualRate: 0.016152
        localCurrencies: false  # This is required for manual rates
        roundingEnabled: true
      }
    }
  ) {
    userErrors {
      code
      field
      message
    }
  }
}

The failure to update happens because the API accepts both baseCurrencyManualRate and localCurrencies: true without errors, but ignores the manual rate.

When I tested with localCurrencies: false, the manual rate was applied correctly and showed up in the admin.

I’ll investigate further why the API doesn’t return a validation error when these conflicting settings are used together.

Hope that helps!