Out of the box, the Currency Switcher doesn't handle a scenario where a product is only available in specific currencies. When you enable some currencies (e.g. EUR and USD), then all products are available in all currencies. That's by design, it's the purpose for which the plugin was developed. If you wish to change product availability depending on the currency, you can do it by writing a customisation. In most cases, our recommendation is not implement such restrictions, unless absolutely necessary
Why "availability by currency" might not be a good idea
There are two main reasons why making products available only in specific currencies would not work properly.
1. WooCommerce and payment processors can handle one currency at a time
In WooCommerce, an any other ecommerce system, there can only be one active currency, at any given time. While, technically, it could be possible to show a catalogue with some products in a currency and some products in another currency, it's not possible to have a cart or checkout with "mixed" currencies.
The same rule applies to payment providers. When a payment is processed, a single transaction, with a single total is expected by the payment provider. It's not possible to create a payment transaction for 10 USD and 10 EUR at the same time.
2. Customers may be used to cross-border shopping, where one can pay for anything, in any of the available currencies
Shops located close to the border with other countries often accept multiple currencies. These shops allow you to pay for your whole order in any of the currencies they accept. There isn't a case in which a shop owner asks to pay for some products in one currency, and for or other products in another currency. If they were to do so, that would become quite confusing for the customer, who would most likely abandon the purchase. An ecommerce should work the same way, to make customer's life easier: if EUR and USD are accepted, they can be used to pay for any product.
3. Showing multiple currencies would be confusing to customers
The idea of a multi-currency shop is that, when a shop accepts EUR and USD, then customers can pay for anything in any of those currencies. To compare it with a physical shop, you won't find a place where you must pay for one product in EUR and for another product in USD.
Based on our experience with thousands of multi-currency shops and just as many different scenarios, the availability of a product doesn't actually depend on the currency, but on other criteria, such as customer's location. The currency, in this case, is a consequence of the location.
For example, Product A could be available to Europe, while Product B could be available to the United States. This is a regional availability, unrelated to the currency:
- A customer from Germany could buy Product A and pay in EUR or USD, but he would not be allowed to buy Product B.
- A customer from the US could buy Product B and, again, pay in EUR or USD, but he would not be allowed to buy Product A.
Using the Aelia Currency Switcher, it would be possible to force customers from Europe to pay in EUR, and customers from the United States to pay in USD, but that's another rule that depends on customer's location.
There is a common misconception that currency and location are tightly related (e.g. that a customer from the Eurozone should, or would always pay in Euro, and a customer from the US should, or would always pay in USD), but that is not the case. Customers who live in a country may decide to pay in a currency different from the one in use in that country for many reasons. For example, they may have just moved to the country, and they still have funds in another currency, or they may just be travelling.
Giving customers the freedom of choosing their preferred currency can help increasing conversion.
How to manage product availability and currency by location
The above scenario can be covered by using our Currency Switcher and our Prices by Country plugin together:
- The Currency Switcher allows to set prices for each products in EUR and USD and, eventually, force the currency that a customer must use, depending on his location.
- The Prices by Country plugin allows to define regions and make specific products unavailable to said region (e.g. Product A not available to the US, Product B not available to Europe).
The result would be that a visitor from Europe would only see Product A, and other available products, in EUR, while a visitor from the US would only see Product B, and other available products, in USD. This would be simpler to understand for your visitors, and easier to manage as well, as it would not require writing a customisation.
- Is it possible to use the Currency Switcher to allow customers to select a currency, but force payment in base currency, or an arbitrary currency?
- How does the Prices by Country plugin differ from the Currency Switcher?