PayPal payment fails with CURRENCY_NOT_SUPPORTED for MYR
The support doesn work on Saturdays and Sundays, so some Friday requests can be answered on Monday. If you have problems with registration ask help on contact us page pleaseIf you not got email within 24~36 business hours, firstly check your spam box, and if no any email from the support there - back to the forum and read answer here. DO NOT ANSWER ON EMAILS [noreply@pluginus.net] FROM THE FORUM!! Emails are just for your info, all answers should be published only here.
The support doesn work on Saturdays and Sundays, so some Friday requests can be answered on Monday.
Support notice: Our support team will be on vacation from August 8 to September 3, so response times may be delayed and replies may be irregular.
Quote from vockoo on August 23, 2026, 11:09Hi, I am using FOX - Currency Switcher Professional on my WooCommerce site. My requirement: - Malaysian users see prices in MYR (Malaysian Ringgit) - When they checkout with PayPal, the payment should be processed in USD (since PayPal does not support MYR for cross-border payments) Current problem: - When a Malaysian user checks out with MYR and selects PayPal, the payment fails with error: "CURRENCY_NOT_SUPPORTED" - The order amount is sent to PayPal in MYR instead of being converted to USD What I have tried: - Added woocs_current_currency filter to force MYR in cart/checkout (for testing) - Enabled/disabled "Payments rules" in FOX settings - Added woocommerce_paypal_supported_currencies filter to make PayPal button visible My question: 1. Does FOX have a built-in feature to automatically convert unsupported currencies (like MYR) to USD when submitting to PayPal? 2. If yes, where is the setting to enable this? 3. If not, what is the recommended way to achieve this? WordPress version: [6.9.7] WooCommerce version: [11.0.1] FOX version: [2.5.1]
Hi, I am using FOX - Currency Switcher Professional on my WooCommerce site. My requirement: - Malaysian users see prices in MYR (Malaysian Ringgit) - When they checkout with PayPal, the payment should be processed in USD (since PayPal does not support MYR for cross-border payments) Current problem: - When a Malaysian user checks out with MYR and selects PayPal, the payment fails with error:"CURRENCY_NOT_SUPPORTED" - The order amount is sent to PayPal in MYR instead of being converted to USD What I have tried: - Added woocs_current_currency filter to force MYR in cart/checkout (for testing) - Enabled/disabled"Payments rules" in FOX settings - Added woocommerce_paypal_supported_currencies filter to make PayPal button visible My question: 1. Does FOX have a built-in feature to automatically convert unsupported currencies (like MYR) to USD when submitting to PayPal? 2. If yes, where is the setting to enable this? 3. If not, what is the recommended way to achieve this? WordPress version: [6.9.7] WooCommerce version: [11.0.1] FOX version: [2.5.1]
Quote from Alex Dev on August 24, 2026, 11:31Hello
Thank you for the detailed report, it makes the situation clear. Let me answer your three questions, but first there is one thing worth checking, because it may remove the need for any code at all.
About PayPal and MYR
MYR is on PayPal's supported currency list, but it is marked as in-country only. It works as a payment and settlement currency only when the receiving PayPal account is itself registered in Malaysia. If the account that receives the money is registered in another country, PayPal rejects the currency, which is exactly the CURRENCY_NOT_SUPPORTED error you are seeing.
So the first question is: where is your PayPal business account registered? If it is a Malaysian account, MYR should go through natively and the problem is on the PayPal account configuration side, not in the shop. If the account is outside Malaysia, then MYR can never be sent to PayPal from your site and we need one of the workarounds below.
Question 1 and 2, does FOX convert unsupported currencies for a gateway
No, there is no such feature and no setting for it.
The "Payments rules" option you tried does something different from what its name suggests. It does not convert anything. It only shows or hides a payment gateway depending on the currency the visitor has selected. So it can hide PayPal when MYR is active, but it cannot make PayPal receive USD while the order is in MYR.
About the two things you already tried
The filter woocs_current_currency does not exist in the plugin. It is only an internal storage key and a JavaScript variable name, there is no apply_filters call with that name anywhere in the code, so your callback was never executed and had no effect. The correct way to set the currency from your own code is the method $WOOCS->set_currency( 'USD' ).
The filter woocommerce_paypal_supported_currencies should be removed. It only makes the PayPal button appear for a currency PayPal will not accept. The order is still created in MYR, so the request still fails at the PayPal API. That filter hides the symptom and guarantees the error.
The part that matters most
WooCommerce stores one currency per order. Whatever currency the order is in, that is the currency sent to PayPal. There is no supported way to display MYR to the customer and charge USD inside the same order, with FOX or with any other currency switcher. Any solution therefore has to decide, before the payment, which single currency the order will use.
That leaves you two realistic options.
Question 3, option one, switch MYR visitors to USD at the checkout
Visitors browse the catalogue in MYR, and as soon as they open the checkout the shop switches them to USD. The order is created in USD and PayPal accepts it.
Add this to the functions.php of your child theme:
// Switch MYR visitors to USD when they reach the checkout, // so the order and the PayPal request are created in USD. add_action( 'template_redirect', 'my_woocs_force_usd_on_checkout', 1 ); function my_woocs_force_usd_on_checkout() { global $WOOCS; if ( is_admin() || ! is_object( $WOOCS ) ) { return; } if ( ! is_checkout() && ! is_checkout_pay_page() ) { return; } if ( $WOOCS->current_currency !== 'MYR' ) { return; } $WOOCS->set_currency( 'USD' ); // The cart was already built in MYR at this point, recalculate it. if ( function_exists( 'WC' ) && WC()->cart ) { WC()->cart->calculate_totals(); } }Two things you should know about this before you use it.
set_currency writes the currency into the plugin storage, not only into the current request. That is useful, because every following checkout AJAX request and every Store API request will already read USD, so the block based checkout is covered too. The side effect is that after the checkout the visitor stays in USD until they switch back with the switcher.
The customer will see the totals change from MYR to USD when the checkout page opens. That is unavoidable, since the order can only exist in one currency. If you use this approach, we recommend adding a short line on the checkout page telling Malaysian customers that payment is processed in USD, and hiding the currency switcher on the checkout page so nobody switches back to MYR there.
Question 3, option two, do not offer PayPal in MYR at all, no code needed
Enable "Payments rules" in the plugin settings and configure it so that PayPal is not available when MYR is selected. Malaysian customers then keep seeing MYR everywhere and pay through another gateway, and customers who want PayPal switch to USD themselves with the switcher.
This is the safer option if changing the displayed currency at the checkout is not acceptable for your business, and it needs no custom code.
If your PayPal account turns out to be a Malaysian one, tell us and we will look at it from a completely different angle, because in that case the currency should be accepted as it is.
Place please actual purchase code of the plugin into the private area of the ticket:
https://share.pluginus.net/image/i20230222134241.png
https://share.pluginus.net/image/i20230222134615.png
https://share.pluginus.net/image/i20230222134511.png
Hello
Thank you for the detailed report, it makes the situation clear. Let me answer your three questions, but first there is one thing worth checking, because it may remove the need for any code at all.
About PayPal and MYR
MYR is on PayPal's supported currency list, but it is marked as in-country only. It works as a payment and settlement currency only when the receiving PayPal account is itself registered in Malaysia. If the account that receives the money is registered in another country, PayPal rejects the currency, which is exactly the CURRENCY_NOT_SUPPORTED error you are seeing.
So the first question is: where is your PayPal business account registered? If it is a Malaysian account, MYR should go through natively and the problem is on the PayPal account configuration side, not in the shop. If the account is outside Malaysia, then MYR can never be sent to PayPal from your site and we need one of the workarounds below.
Question 1 and 2, does FOX convert unsupported currencies for a gateway
No, there is no such feature and no setting for it.
The"Payments rules" option you tried does something different from what its name suggests. It does not convert anything. It only shows or hides a payment gateway depending on the currency the visitor has selected. So it can hide PayPal when MYR is active, but it cannot make PayPal receive USD while the order is in MYR.
About the two things you already tried
The filter woocs_current_currency does not exist in the plugin. It is only an internal storage key and a JavaScript variable name, there is no apply_filters call with that name anywhere in the code, so your callback was never executed and had no effect. The correct way to set the currency from your own code is the method $WOOCS->set_currency( 'USD' ).
The filter woocommerce_paypal_supported_currencies should be removed. It only makes the PayPal button appear for a currency PayPal will not accept. The order is still created in MYR, so the request still fails at the PayPal API. That filter hides the symptom and guarantees the error.
The part that matters most
WooCommerce stores one currency per order. Whatever currency the order is in, that is the currency sent to PayPal. There is no supported way to display MYR to the customer and charge USD inside the same order, with FOX or with any other currency switcher. Any solution therefore has to decide, before the payment, which single currency the order will use.
That leaves you two realistic options.
Question 3, option one, switch MYR visitors to USD at the checkout
Visitors browse the catalogue in MYR, and as soon as they open the checkout the shop switches them to USD. The order is created in USD and PayPal accepts it.
Add this to the functions.php of your child theme:
// Switch MYR visitors to USD when they reach the checkout,
// so the order and the PayPal request are created in USD.
add_action( 'template_redirect', 'my_woocs_force_usd_on_checkout', 1 );
function my_woocs_force_usd_on_checkout() {
global $WOOCS;
if ( is_admin() || ! is_object( $WOOCS ) ) {
return;
}
if ( ! is_checkout() && ! is_checkout_pay_page() ) {
return;
}
if ( $WOOCS->current_currency !== 'MYR' ) {
return;
}
$WOOCS->set_currency( 'USD' );
// The cart was already built in MYR at this point, recalculate it.
if ( function_exists( 'WC' ) && WC()->cart ) {
WC()->cart->calculate_totals();
}
}Two things you should know about this before you use it.
set_currency writes the currency into the plugin storage, not only into the current request. That is useful, because every following checkout AJAX request and every Store API request will already read USD, so the block based checkout is covered too. The side effect is that after the checkout the visitor stays in USD until they switch back with the switcher.
The customer will see the totals change from MYR to USD when the checkout page opens. That is unavoidable, since the order can only exist in one currency. If you use this approach, we recommend adding a short line on the checkout page telling Malaysian customers that payment is processed in USD, and hiding the currency switcher on the checkout page so nobody switches back to MYR there.
Question 3, option two, do not offer PayPal in MYR at all, no code needed
Enable"Payments rules" in the plugin settings and configure it so that PayPal is not available when MYR is selected. Malaysian customers then keep seeing MYR everywhere and pay through another gateway, and customers who want PayPal switch to USD themselves with the switcher.
This is the safer option if changing the displayed currency at the checkout is not acceptable for your business, and it needs no custom code.
If your PayPal account turns out to be a Malaysian one, tell us and we will look at it from a completely different angle, because in that case the currency should be accepted as it is.
Place please actual purchase code of the plugin into the private area of the ticket:
https://share.pluginus.net/image/i20230222134241.png
https://share.pluginus.net/image/i20230222134615.png
https://share.pluginus.net/image/i20230222134511.png
