Match Payment Gateways to Currencies
Once you sell in several currencies, not every gateway can take every one of them. A shopper paying in Indian rupees picks PayPal, and the payment fails because PayPal doesn’t settle INR. Or you’d simply rather send euro payments through Stripe and dollar payments through PayPal.
Currency-Aware Payment Gateways lets you choose which gateways handle each currency and which one is shown first. Gateways that can’t take the cart’s currency are removed at checkout, and they’re rejected on the server too, so a forced request can’t get through.
Turn It On
This module needs Multi-Currency Checkout. Switch on both from Stackless → Dashboard, then open Stackless → Settings and choose Currency-Aware Payment Gateways under Currency. Without Multi-Currency Checkout, the dashboard shows “Needs the Multi-Currency Checkout module enabled.”

The Gateways per currency section has two fields for every enabled currency, your store currency included:
- EUR gateways (one per currency): the gateways allowed for that currency. Leave it empty to allow every gateway that supports it.
- EUR preferred gateway: the gateway listed first and picked by default at checkout. Keep the EDD gateway order (the default) leaves your normal order alone.
Every gateway registered in EDD appears in the list. Gateways that are switched off under Downloads → Settings → Payments show “(disabled)” after their name.
How Gateways Are Allowed
The rules depend on whether you’ve saved a list for that currency.
With a saved list:
- Exactly the gateways you chose are allowed. Nothing else shows.
- Your list wins even over a known limit. If you add PayPal to a currency PayPal doesn’t list, it will show, so confirm exceptions with your gateway account first.
With an empty list:
- Gateways with known limits only get the currencies they accept.
- Gateways Stackless knows nothing about are trusted to run their own checks, so they stay.
Under each currency’s gateway field, a “Not known to support this currency” note names every gateway with a known limit that leaves it out.
The Built-In Capability List
These are the limits Stackless starts from:
| Gateway | Gateway ID | Currencies |
|---|---|---|
| Store Gateway (EDD) | manual | Any currency |
| Stripe (EDD) | stripe | Any currency (Stripe runs its own checks) |
| PayPal and PayPal Standard (EDD) | paypal_commerce, paypal | AUD, BRL, CAD, CNY, CZK, DKK, EUR, HKD, HUF, ILS, JPY, MYR, MXN, TWD, NZD, NOK, PHP, PLN, GBP, SGD, SEK, CHF, THB and USD |
| Square (EDD) | square | Only the currency of the connected Square account, in the current test or live mode |
| PayPal (Stackless) | stackless_edd_paypal | PayPal’s list above |
| Paddle (Stackless) | stackless_edd_paddle | USD, EUR, GBP, JPY, AUD, CAD, CHF, HKD, SGD, SEK, ARS, BRL, CLP, CNY, COP, CZK, DKK, HUF, ILS, INR, KRW, MXN, NOK, NZD, PEN, PLN, RUB, THB, TRY, TWD, UAH, VND and ZAR |
| Stripe (Stackless), Polar (Stackless) and Dodo Payments (Stackless) | stackless_edd_stripe, stackless_edd_polar, stackless_edd_dodo | The currencies each gateway declares for its provider |
Every Stackless gateway declares its own currency list, and that list replaces the default for its ID. Any other gateway can do the same with a public supported_currencies() method that returns ISO codes, or ['*'] for any.
Developers can change the whole map with the stackless_edd_currency_gateways_capabilities filter. It receives an array of gateway IDs, each with a list of currency codes or ['*'].
What Customers See
At checkout, the payment method list only shows allowed gateways, with your preferred one first. If EDD’s default gateway can’t take the cart currency, the first allowed gateway is selected instead. A shopper who picks a gateway keeps their pick, as long as it’s allowed.
If a disallowed gateway is submitted anyway, checkout stops with “PayPal is not available for payments in EUR. Choose another payment method.” using the gateway’s checkout label and the cart currency.
When a shopper pays an existing order through EDD’s payment recovery link, such as a renewal or invoice payment link, the order’s own currency decides which gateways show. That matters for orders created in another currency.
Good to Know
- Filtering only happens on the storefront. Admin screens, cron, WP-CLI and REST routes other than EDD’s cart, Fastlane and unbranded card routes see every gateway.
- A free order skips the check and goes through EDD’s Store Gateway, whatever the currency.
- Removing a gateway from a currency also hides it for recovery-link payments of orders in that currency.
- For currencies and exchange rates, see Sell in Multiple Currencies. For gateway setup, see Stripe, PayPal, Polar, Paddle and Dodo Payments.