Changing your WooCommerce store currency

What happens to anchored and native products, and the order of operations that avoids a bad afternoon.

Updated August 2, 2026

Changing the WooCommerce store currency is a significant operation with or without Price Anchor. With Price Anchor it is well-defined, which is not the same as risk-free.

What Price Anchor does automatically

  • The store currency is read from get_woocommerce_currency() and is never assumed, hardcoded or overridden. There is no special-cased currency anywhere in the plugin.
  • A store-currency change is one of the triggers that starts a repricing pass.
  • Anchored products are recalculated against the new store currency, using the same source amounts you already entered.
  • Native products keep their numbers. See Products that stay in your store currency for why.
  • If the change would make your selected source currency equal to the new store currency, source pricing is reset safely rather than repricing the catalogue at a rate of one.

What you have to check yourself

  • Your rate provider must support the new base currency. TCMB only works for TRY stores. If you move away from TRY, switch to Frankfurter or Manual first.
  • Historic orders keep their original currency. That is correct and required — an order is evidence of what was charged — but your reports will now span two currencies and totals across the boundary are not comparable.
  • Your payment gateways must accept the new currency.
  • Rounding may want revisiting. A charm .99 rule that looked right at 30 EUR may look wrong at the equivalent in a currency with very different magnitudes.

A safe order of operations

  1. Do this on staging with a copy of production data.
  2. Change the rate provider first if the current one cannot serve the new base currency.
  3. Change the WooCommerce store currency.
  4. Fetch rates and confirm the rate table is populated for the new base.
  5. Run a full repricing pass and let it complete.
  6. Spot-check a simple product, a variable product, a product on sale and a native product.
  7. Review rounding, then repeat on production during a quiet window and purge your page cache.

Multisite

Every per-request cache in the plugin is keyed by site id, precisely so that switch_to_blog() cannot hand one site’s currency, markup, rates or provider set to another. On a single-site install the key is always 1 and costs nothing. If you run a network where sites use different currencies, this is the invariant that keeps them apart.