The solution to this issue depends on which page you notice that the payment gateway is not displayed. Usually, there are two places where this occurs.


1. On the Checkout page

When a payment gateway is not appearing on the checkout page, it most probably means that it was not enabled for the currency which is being used to complete the order.


Solution

Please go to WordPress Admin area > WooCommerce > Currency Switcher > Payment Gateways and add the payment gateway(s) you would like to enable for each currency. Please note that not all gateways support all currencies. It's up to you to make sure that the gateways you enable will accept the currency.


2. On the Currency Switcher Options page

When a payment gateway is not appearing on the Currency Switcher Options > Payment Gateways page, it's usually due to two possible reasons:

  1. The payment plugin is disabling itself because it detects that the shop's base currency, or one of the enabled currencies is not amongst the list of the ones it supports.
  2. The payment plugin is returning its status incorrectly to the Currency Switcher.

Solution
In both cases, the issue is a design flaw in the payment plugin, which should be fixed by its developer. If the developer cannot fix it in a timely manner, you can apply the fix yourself, as it's relatively simple. If you choose to fix the payment plugin yourself, we recommend that you also get in touch with its original developer, so that the fix can be applied to the main release of the payment gateway. This will ensure that the solution will be incorporated in the future updates of the payment plugin.

The solution requires a modification of the payment plugin. Please find below two of the most common approaches to solve it. Please note that, since every plugin is different, we cannot guarantee that the solutions will work for your specific case.

1. How to fix a payment plugin that disables itself when an unsupported currency is selected
Below you can find some guidelines to address the issue. Since the issue depends on how the payment plugin was coded, the following instructions may need to be adapted to the specific plugin you are trying to fix. Unfortunately, there is no "universal way" to address such bug, which is why it's important that the payment plugin's original authors are involved in implementing the correction.
  1. Open the payment gateway plugin main file. It's usually called woocommerce-gateway-<payment gateway name>.php
  2. Inside the file, search for the code of a currency that it supports. For example, if the plugin supports US Dollars, look for USD. You should then find, somewhere in the code, a list like the following:
    ['USD', 'CAD', 'EUR', (other currency codes)... ]
  3. Modify the list by adding the currencies you would like to support. For example, if you wish to accept AED, GBP and RUB as well, modify the line as follows:
    ['AED', 'GBP', 'RUB', 'USD', 'CAD', 'EUR', (other currency codes)... ]
  4. Save the file.
  5. If the payment gateway could not be enabled before the changes, enabled it now.
  6. Go back to Currency Switcher Options > Payment Gateways. You should have the payment gateway plugin you just modified amongst the available ones.

Solution for gateways that provide a filter to modify the list of currencies (e.g. PayPal Standard)
Some gateways allow to modify the list of supported currencies by the means of filters. By using a filter, you won't have tp modify the original gateway file, and you will prevent your changes from being lost with a gateway update. The following example shows how to alter the list of currencies for the PayPal Standard gateway included with WooCommerce, and it can be adapted to other gateways as well. 

Simply add the code to your theme's functions.php file and the list of currencies will be updated automatically.  
/**
 * Adds extra currencies to the list of the currencies "accepted" by the standard
 * PayPal gateway included with WooCommerce. This will ensure that the gateway
 * doesn't disable itself even when another, valid currency, such as EUR or USD,
 * is selected.
 *
 * @param array currencies The original list of currencies passed by the PayPal gateway
 * @return array A list with extra currencies added to it.
 */
function add_extra_currencies($currencies) {
// Add your currencies, like in the example below
$currencies[] = 'INR'; // Add Indian Rupees
$currencies[] = 'PKR'; // Add Pakistani Rupees

return $currencies;
}

// Filter "woocommerce_paypal_supported_currencies" is the one used by the PayPal
// Standard gateway included with WooCommerce. If your gateway of choice uses another 
// filter, simply replace its name below
add_filter('woocommerce_paypal_supported_currencies', 'add_extra_currencies', 10, 1);

 

2. How to fix a payment plugin that returns its status incorrectly

Plugin should returns its status as "yes" or "no". However, some plugins return true or false (notably, the PayPal plugin included with WooCommerce does that, violating the documentation and the guidelines contained in it). To fix an incorrect status, you will need to analyse the affected plugin, and make sure that its enabled property always contains either a "yes" or a "no" value. It must be a string, bool or numeric values may not work correctly.


Important
The above solutions are provided "as is", without implicit or explicit warranties that they will work in your specific case. Payment gateway issues are considered 3rd parties and are not supported by us. If you require assistance in fixing a specific payment gateway plugin, such service will be provided as consultancy.

Further reading