Skip to content
Gaurav TiwariDocs

Match Payment Gateways to Currencies

Version 1.0.0-beta.1 Updated October 28, 2026

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.”

Stackless for EDD Currency-Aware Payment Gateways settings with gateway lists and preferred gateways for USD, EUR, GBP and INR, and a note that PayPal is not known to support INR

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:

GatewayGateway IDCurrencies
Store Gateway (EDD)manualAny currency
Stripe (EDD)stripeAny currency (Stripe runs its own checks)
PayPal and PayPal Standard (EDD)paypal_commerce, paypalAUD, 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)squareOnly the currency of the connected Square account, in the current test or live mode
PayPal (Stackless)stackless_edd_paypalPayPal’s list above
Paddle (Stackless)stackless_edd_paddleUSD, 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_dodoThe 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.
Share

Was this helpful?

Still stuck? Open a support ticket