FOX - WooCommerce Currency Switcher Professional

How to Set Up a WooCommerce Currency Switcher: FOX Step by Step

This is how to set up the WooCommerce currency switcher FOX from a fresh install to a tested shop: the base currency, the currencies you sell in, exchange rates, the checkout currency and the switcher on the page. It takes about fifteen minutes. Almost every "wrong prices after install" problem comes from one of three things covered in the first steps: no base currency marked, a base rate other than 1, or a currency code that rate services and payment gateways do not recognise. Get those right and the rest is display preference.

How FOX converts prices

WooCommerce stores one price per product, in one currency. FOX calls it the base currency and never changes the stored prices: every time a price is shown, it multiplies the base price by the rate of the visitor's currency. A product saved at 50 with a euro base and a dollar rate of 1.10 is shown as $55; switching back shows €50. Nothing is written to the products.

Two consequences follow. All product prices must be entered in the base currency. And marking another currency as base later does not convert anything: the same numbers are simply read as the new currency, so a shop that moves its base from EUR to USD sells its €50 product for $50. Decide the base currency first.

All settings are in WooCommerce → Settings → Currency, split into the tabs Currencies, Options, Advanced, Payments, GeoIP, Statistic, Designer, Side and Help. The video tutorials walk through the same screens.

Step 1: mark the base currency and keep its rate at 1

On first activation FOX fills the Currencies tab with two rows: your WooCommerce shop currency, marked as base, and a second currency (EUR if the shop is in US dollars, otherwise USD). The rates in these starting rows are placeholders, and for shops in a currency other than USD or EUR even the base row starts with a placeholder rate. So the first action is always the same:

  1. Check that the radio button in the Basic column is on the currency your product prices are entered in. If not, click it.
  2. Click Update all rates at the top of the tab.
  3. Click Save changes at the bottom of the page.

Clicking the Basic radio sets that currency's rate to exactly 1, locks the field, clears any interest, and loads fresh rates for all other currencies relative to it. Update all rates does the same for the currency already marked. The new rates are put into the fields, but only Save changes stores them. Saving also writes the base currency into WooCommerce's own currency setting, so the two never disagree.

What goes wrong when this step is skipped:

  • No currency marked as base. FOX falls back to USD as the base. A shop priced in Canadian dollars then shows its prices, and takes its orders, as if they were US dollars.
  • A base rate other than 1. Every rate in the table means "this much of the currency for 1 unit of the base currency", so the base row itself must read 1. Its field is locked, but it keeps whatever value it holds until you click the radio or Update all rates, and conversions from one currency to another divide by it, so they come out wrong.
  • Rates left at 1 for every currency. The prices are not converted at all: a product at Rs 500 appears as $500 after switching. Update the rates.

Do not mark a currency as base only because you want visitors to see it first. That is what Welcome currency in the Options tab is for; see displaying a currency different from the base currency.

Step 2: add the currencies you sell in

Click Append Currency (adds a row at the bottom) or Prepend Currency (at the top), then fill the row:

  1. Type the three-letter ISO 4217 code in capitals into the code field: AUD, NZD, XPF. The code is what payment gateways and rate aggregators recognise, so it must be exact: EUR, not EURO.
  2. Choose the symbol from the list. Several currencies share $; for a distinct sign such as A$, click Add custom currency symbols, add it in the Custom currency symbols field of the Options tab, save, and pick it. More in changing the currency symbol.
  3. Choose the position: P$ - right, P $ - right space, $ P - left space or $P - left.
  4. Press the round arrows button next to the rate field to load the current rate.
  5. Click Save changes.

The Currency Wizard button does the same for several currencies at once: tick them in a list and click Install selected currencies; symbols, flags and rates are filled in for you.

The other columns of a currency row:

ColumnWhat it does
Rate+%The exchange rate, plus an optional interest added on top of it (a fixed amount such as 0.15 or a percentage such as 20%). See adjusting exchange rates.
Rate floor/ceilingLimits for loaded rates: a rate from the aggregator below the floor or above the ceiling is replaced by the limit.
DecimalDecimals shown for this currency (0 to 8).
SeparatorsThousands and decimal separators, from 10,000.00 to 10000,00.
VisibleSwitch it off to keep the currency out of the switcher.
CentsShow cents or Hide cents.
DescriptionA text that the switcher can show instead of the code.

Decimals, separators and symbol position are set here, per currency. On the front end they replace the pricing options in WooCommerce → Settings → General, which is why changing those has no visible effect once FOX is active.

To replace a currency, edit the code of its row instead of adding a new one. When a currency is renamed (the Netherlands Antillean guilder ANG became the Caribbean guilder XCG), change the code and symbol and load the rate; no plugin update is needed.

Which currencies are supported

Any code can be typed, not only the ones in the suggestions, and even a made-up code works for display (see custom currency codes). Whether a currency is usable in practice depends on two other services:

  • The rate aggregator must have a rate for it. If the rate button returns nothing or 0, pick another aggregator in the Options tab or type the rate by hand and keep it current yourself, because automatic updates cannot refresh a rate the aggregator does not have.
  • The payment gateway must accept it, if customers pay in that currency. PayPal, for example, accepts a fixed list of currencies. See when the gateway does not support the currency.

Each code can be used once. Rows are stored by currency code, so a second EUR row replaces the first when you save. Two variants of one currency (net and gross prices, or euro shown separately for Germany and France) are not possible: the switcher chooses currencies, not countries. To give each country its currency automatically, use the GeoIP tab, described in changing currency by country.

Step 3: rate updates and the checkout currency

In the Options tab:

  • Currency aggregator is the source of the rates. Some need a key in Aggregator API key.
  • Rate auto update starts as no auto update, so the rates stay as they were on the day you saved them. Choose an interval (daily suits most shops) and save. Updates run through WordPress cron, and the Scheduler line under the option shows the last and next run. If it never runs, see exchange rates not updating.
  • Welcome currency is the currency a first-time visitor sees.

In the Advanced tab, Is multiple allowed decides what the customer pays in. With Yes (the setting after first activation) the cart, checkout and order use the selected currency. With No the shop shows converted prices for information and the customer always pays in the base currency, which suits gateways or accounting that accept only one currency. The second model is explained in show local currency, charge base currency.

Step 4: put the switcher on the site

The look of the default drop-down is chosen at the top of the Currencies tab (plain drop-down, numbered styles, flags, ddslick, Chosen, wSelect). The Designer tab builds custom designs that you place with [woocs sd=ID]. If the site uses a page cache, turn on I am using cache plugin on my site in the Options tab and read why a currency switcher and a page cache fight each other before going live.

Test the setup in five minutes

  1. Open the shop in a private browser window. FOX remembers the last currency each visitor chose, and geolocation applies only on a first visit, so your usual browser does not show what a new customer sees.
  2. Open a product page and switch through every currency. Each price should equal the base price times the rate. The base number with a new symbol means the rate is still 1; a price of 0 means the rate is 0 or empty.
  3. Add the product to the cart and open the checkout. The total should be in the selected currency with Is multiple allowed set to Yes, or in the base currency with No.
  4. Place a test order in a non-base currency with a payment method that accepts it.
  5. The next day, check the Scheduler line under Rate auto update: the last run should be recent.

If prices do not change when you switch, follow currency switcher not changing prices. If currencies disappear after saving, the server is cutting the form; see settings not saving. For anything else, post your currency table and what you expected on the FOX support forum.