I've just done a Craft 2 > Craft 3 upgrade, and it previously used different locales to change the default currency, depending on the locale.

In Craft 2, I would set COMMERCE_PAYMENT_CURRENCY in my index.php file (https://docs.craftcms.com/commerce/v2/payment-currencies.html#switching-currencies) so that it would set the currency for that specific site.

But in Commerce 2 this doesn't seem to be working at all.

My current setup is:


And in the /europe/index.php I've got:

 * Craft web bootstrap file

// Set path constants
define('CRAFT_BASE_PATH', dirname(__DIR__, 2));

define('CRAFT_SITE', 'en_eur');


// Load Composer's autoloader
require_once CRAFT_VENDOR_PATH.'/autoload.php';

// Load dotenv?
if (class_exists('Dotenv\Dotenv') && file_exists(CRAFT_BASE_PATH.'/.env')) {

// Load and run Craft
define('CRAFT_ENVIRONMENT', getenv('ENVIRONMENT') ?: 'production');
$app = require CRAFT_VENDOR_PATH.'/craftcms/cms/bootstrap/web.php';

I know this file is being picked up when I go to http://website.local/europe, because if I delete the contents, or change the CRAFT_SITE it reacts correctly.

Just not working for Commerce 2.

1 Answer 1


It seems the const COMMERCE_PAYMENT_CURRENCY isn't checked and set inside Commerce 2 (It was in Commerce 1)

So I created a PR for this issue:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.