Version 4.0.1
October 23, 2026
Changed
- New plugin icon: a white glyph on a black circle, with a white icon mask for the control panel nav.
Version 4.0.0
October 20, 2026
4.0.0, for Craft CMS 5 and Craft Commerce 5. Craft 4 sites stay on 3.x. Upgrade from 3.0.0 (or 3.0.0-beta.6) or later. The README's "Upgrading from 3.x" has the steps.
Added
- Craft CMS 5 and Craft Commerce 5 compatibility, including multiple stores. Prices are kept per item, per store and per payment currency.
- A Currency prices field layout element, with one price per payment currency of the store beside the item's own price. Install adds it below the price on every existing variant layout. Add it yourself to other product types' variant layouts, Digital Products product types and Events ticket-type layouts.
- Currency prices for Digital Products 4.1 products and Events 3.1 tickets. An Events ticket is priced from its ticket type.
- A Payment Currency order condition rule (is one of, is not one of) for discounts, shipping methods, shipping rules and the order index. Use one discount or shipping rule per currency for fixed amounts.
- Promotions reach the currency price by ratio: a catalog pricing rule, sale or customer-specific price that takes 10% off the store-currency price takes 10% off the currency price.
CurrencyPrices::EVENT_DEFINE_CURRENCY_PRICE(DefineCurrencyPriceEvent), raised for basket lines and the Twig filters, so a site can adjust a currency price, for example to round it. A negative price is set to 0 and logged.currencyPromotionalPriceTwig filter.- Each line's snapshot records
currencyPrices: the currency, the currency price and the ratio. It replaces 3.x'spriceIn. php craft commerce-currency-prices/import --field=<handle> --currency=<ISO> [--store=<handle>] [--apply] [--include-zero]copies prices from a site's own number fields. Without--applyit is a dry run, prints the same counts and says nothing was written. Empty fields and zeros are skipped (zeros unless--include-zero). An item whose layout lacks the field, and whose owner's layout lacks it too, counts as skipped as empty. Any failed item makes the exit code 1.php craft commerce-currency-prices/legacy/reportlists the 3.x per-currency discount, shipping rule, shipping-category rate and Commerce Addons discount amounts that the upgrade cannot carry across. Each record is listed once, with its name and control panel URL (or "deleted"), followed by one line per currency. Zero amounts are left out, since 3.x saved 0 for a blank input. It changes nothing and always exits 0.- An upgrade migration that copies 3.x's purchasable prices into the primary store. Each item's copy of its store-currency price, prices in currencies the store no longer accepts, and deleted items are skipped. It prints counts of prices copied, skipped and invalid.
Changed
- Now requires Craft CMS 5.0+, Craft Commerce 5.3+ and PHP 8.2+.
- An item with no price in the basket's currency is no longer for sale in that currency. It cannot be added, and a basket that switches to that currency loses it with Commerce's "… is no longer available." notice. 3.x left the store-currency price on the line, which Commerce then converted at the exchange rate.
- While an order is a basket, its currency is kept equal to its payment currency, so Commerce never converts by exchange rate and the exchange rate is never read. 3.x set it at completion and at payment. You no longer need to set every rate to 1.
- Formatted amounts (
…AsCurrency) on a basket, its lines and its shipping method options are in the basket's currency. Commerce formats them in the store's currency. - The Twig filters
currencyPriceandcurrencySalePricenow return a number by default. Passtrueas the second argument for a formatted price such as "$120.00", which used to be the default. They returnnullwhen the item has no price in that currency, or when the store does not accept the currency (which also logs a warning). For the store's own currency they return Commerce's price for the current customer. - The Currencies field offers the payment currencies of the current site's store. Its class name and saved values are unchanged.
- Prices are stored in a new
currencyprices_pricestable, one row per item, store and currency, instead of a column per currency.
Removed
- Per-currency amounts on discounts, shipping rules and shipping-category rates, and the Discount and Shipping adjusters and ShippingRule and ShippingMethod models that 3.x forked from Commerce 4 to apply them. Use one discount or shipping rule per currency with the Payment Currency condition instead. A fixed amount on a discount or shipping rule without that condition applies as entered, whatever currency the order is in. The upgrade keeps the 3.x amounts in the database and
legacy/reportlists them. - Commerce Addons support, including the
currencyAddonDiscountPriceandcurrencyAddonDiscountPricesTwig filters. Commerce Addons has no Craft 5 release. - The
localizationNormalizeNumberTwig filter. - Templates that still use
currencyAddonDiscountPrice,currencyAddonDiscountPricesorlocalizationNormalizeNumberfail with Twig's unknown-filter error. - The plugin's controllers and their actions:
prices,discounts,shipping,addons,payment-currenciesandtickets. - The plugin's hooks on the payment currencies screen, which added a database column for each currency. Commerce's own payment currency screens are used unchanged.
- The control panel asset bundles and templates that moved hidden inputs next to Commerce 4's price fields.
- The
service,shipping,discountsandaddonsplugin components, their records, and theCurrencyPrices::$pluginstatic. UseCurrencyPrices::getInstance()->getPrices(). CurrencyPricesService::getSalePrice(), which re-implemented Commerce 4's sales. Promotions now follow by ratio.
Version 3.0.0
October 20, 2026
Changed
- The stable Craft 4 / Commerce 4 release. The same code as 3.0.0-beta.6. Craft 5 / Commerce 5 support is coming in Currency Prices 4.
Version 3.0.0-beta.6
October 2, 2026
Fixed
- Commerce 5's upgrade no longer fails with “Cannot drop index … needed in a foreign key constraint”. A migration drops the foreign keys from the currency discount and shipping tables to
commerce_paymentcurrencies.iso, and new installs no longer add them. Update to this version and runphp craft upbefore upgrading to Craft 5.
Changed
- Deleting a payment currency still deletes its discount and shipping amounts, which the plugin now does itself. Changing a payment currency's ISO code now moves them to the new code.
Version 3.0.0-beta.5
March 26, 2025
Changed
- paymentCurrencyIso column type
- TypeError fix - thanks @garrill
Version 3.0.0-beta.4
October 13, 2022
Changed
- Icon
Version 3.0.0-beta.3
October 13, 2022
Fixed
- price suffix
Version 3.0.0-beta.2
October 13, 2022
Fixed
- template fix
Version 3.0.0-beta.1
July 7, 2022
Added
- Craft 4 compatibility.
- Commerce 4 compatibility.
Changed
- Now requires Craft 4+.
- Now requires Craft Commerce 4+.
Version 2.7.5
July 7, 2022
Changed
- Changed namespaces
- New Icon
Version 2.7.4
June 10, 2022
Changed
- Change of ownership
Version 2.7.3
August 16, 2021
Fixed
- error when applying a Commerce discount (#21)
Version 2.7.2
July 20, 2021
Fixed
- error when setting min/max order value on a shipping rule
Version 2.7.1
December 18, 2020
Fixed
- error when duplicating a product from a product page
Version 2.7.0
December 18, 2020
Added
- Craft 3.5 compatibility.
- Commerce 3 compatibility.
Added
- Now requires Craft 3.5+.
- Now requires Craft Commerce 3.2+.
Fixed
- Fix a bug when trying to save a price with a comma
Version 2.6.7
October 20, 2020
Fixed
- default value of 0 when adding a new currency
Version 2.6.6
September 22, 2020
Fixed
- an issue when saving products.
Version 2.6.5
September 21, 2020
Fixed
- Adds primary key to commerce_currencyprices table
Version 2.6.4
February 20, 2020
Fixed
- Addons foreign key bug - thanks @boboldehampsink
Version 2.6.3
February 20, 2020
Fixed
- Fixed a bug where purchasables wouldn't save from a console command
Version 2.6.2
February 20, 2020
Fixed
- Fixed a bug where the prices weren't being saved on a ticket for an event
Version 2.6.1
December 10, 2019
Fixed
- Fixed a bug where the shipping rules was using an incorrect item total
Version 2.6.0
December 2, 2019
Added
- Support for Verbb Events: Tickets
Version 2.5.6
November 7, 2019
Fixed
- Fixed a bug where shipping method rules were not using the correct currency
Version 2.5.5
October 31, 2019
Fixed
- Fixed a bug where currencies were not displaying for shipping rules
Version 2.5.4
October 30, 2019
Fixed
- Fixed a bug where the base discount was not using the correct currency value.
Version 2.5.3
October 22, 2019
Fixed
- Shipping adjuster fix
Version 2.5.2
October 21, 2019
Fixed
- Fixed a bug where shipping rules were not using the correct currency
Version 2.5.1
September 23, 2019
Fixed
- Addons migration fix
Version 2.5.0
September 23, 2019
Added
- commerce-addons support
Changed
- plugin icon.
- refactor code
Version 2.4.2
July 10, 2019
Fixed
- Fix for cloning product
Version 2.4.1
July 3, 2019
Fixed
- Non-numeric value error when plugin installed and enabled but only one currency present.
Version 2.4.0
June 18, 2019
Added
- Bundles support
- Digital Products support
Version 2.3.9
June 14, 2019
Fixed
- Undefined offset error when saving new product #2
Version 2.3.8
April 26, 2019
Fixed
- Save prices including localised formatting
Version 2.3.7
April 8, 2019
Fixed
- Updated install script to include migration schema changes
Version 2.3.5
March 15, 2019
Fixed
- shipping rules inputs
Version 2.3.0
March 10, 2019
Added
- Currency fieldtype