Commerce now in alpha

Commerce makes it easy to sell online exactly the way you want. Extend functionality with our Payment Methods and Modules or build your own.

Recent Releases

Commerce 0.7.0-pl

Released on 2017-05-30 (Commerce Channel)

  • [checkout] Prevent "Your order is free" message right after paying an order [#145]
  • [checkout] Fix incorrect total estimate on shipping methods when going back to shipping step after selecting a method before [#146]
  • [checkout] Fix incorrect shipping calculation when sending cart info to payment provider
  • [checkout] Fix incorrect classes on buttons in Pending Transactions view [#144]
  • [checkout] Add support for continuing an off-site transaction from the pending transactions view
  • [dashboard] Slightly change statuses grid to have buttons in the actions menu
  • [dashboard] Add ability to (soft) delete payment methods, shipping methods, currencies, statuses (incl. changes and actions), tax groups (incl. rules), products ...
  • [dashboard] Ensure missing weight_units would not cause fatal errors in the dashboard
  • [dashboard] Add new transaction view, accessible via an order's list of transactions, to expose more information and error messages
  • [dashboard] Add event to add checks to the configuration checklist [#79]
  • [dashboard] Coupons module now adds a check to the configuration checklist to make sure active coupons are available
  • [payments] Improve transaction handling of webhook-based gateways (e.g. Mollie), with more solid cancelled/failed checking, proper response on webhook, and improved messages in log and checkout [#143]
  • [payments] Prevent double slash in webhook url
  • [products] Include price in resource product sync [#147]
  • [products] Add setting (resourceproduct.price_field_decimals) to allow resource product price TVs to be defined with decimals [#131]
  • [settings] All settings now have lexicons and descriptions to explain their purpose. [#98]
  • [snippets] Add commerce.get_cart snippet to list cart information outside the actual cart/checkout [#126]
  • [snippets] Add (temporary!) checkoutClass property to checkout snippet to allow specifying checkout class
  • [statuses] Make comStatus and comProduct objects use soft delete instead of hard delete

Breaking changes in this release:

  • Price TVs for resource products are now assumed to be specified as numbers with decimals. This can be disabled with

the resourceproduct.price_field_decimals system setting to restore the old behaviour of expecting a number in cents.

Commerce 0.6.2-pl

Released on 2017-05-17 (Commerce Channel)

  • [checkout] Fix RequiresAccount checkout process not moving to account step
  • [gateways] Fix Paymill gateway javascript error

Commerce 0.6.1-pl

Released on 2017-05-10 (Commerce Channel)

  • [checkout] Fix coupons form showing even a coupon is already selected
  • [checkout] Fix emails getting sent multiple times when more than one send per php request
  • [checkout] Remove logs from order properties when they're moved into the dedicated table
  • [checkout] Make sure address errors in one address type are shown if the other address is valid [#142]
  • [dashboard] Restrict Top Products widget on dashboard and Sales and Top Products reports to processing/completed orders in the current mode
  • [dashboard] Restrict total sold count on products tab only to processing/completed orders in the current mode
  • [dashboard] Improve "orders with product" listing on product page
  • [dashboard] Fix inability to uncheck checkboxes introduced in 0.6.0
  • [modules] Fix AutoFillGeoIP module setting the state into the country field

Commerce 0.6.0-pl

Released on 2017-05-04 (Commerce Channel)

  • [cart] Show discounted and original price in right order in cart
  • [checkout] Make sure the thank you page requires an address
  • [checkout] Persist messages and errors to the sessions before a redirect
  • [checkout] Fire additional event after the step is processed
  • [checkout] When the order total_due is 0, send the customer forward to complete the order
  • [checkout] Replace hard-coded "Cart Totals" header with lexicon
  • [checkout] Make it possible to use lexicons in shipping and payment method name and description [S11848]
  • [coupons] Allow coupons to be removed from the cart [#132]
  • [dashboard] Fix live licenses being treated as development licenses in checklist
  • [modules] Add MinOrderAmount module to force a minimum order total in the checkout
  • [modules] Update UpdateStock and Coupons module to use new state-specific events instead of payment event [#125]
  • [modules] Add EnforceStock module to prevent customers buying more than is available
  • [orders] Fire new state-specific events (eg Cart->Processing) that fire regardless of a payment or other reason for an order being changed [#126]
  • [orders] New updateItemQuantity method and new comOrder::EVENT_ITEM_UPDATED and comOrder::EVENT_ITEM_REMOVED event
  • [orders] Make order available via $event->getOrder() on comOrder::EVENT_ITEM_* events

Commerce 0.5.1-pl

Released on 2017-05-01 (Commerce Channel)

  • [snippets] Fix issue with get_product snippet not setting placeholders
  • [checkout] Put a few hard-coded cart/checkout strings into the lexicon
  • [checkout] Set button type to submit to fix remove item button in cart
  • [checkout] Move to top to ensure submitting the form uses the update cart button
  • [checkout] Only handle cart update or remove item from cart per POST.
  • [checkout] Ignore product add to cart where quantity is less than 1
  • [gateways] Make sure notify/webhook URLs are generated as a full URL
  • [dashboard] Fix save after create causing duplicate records [#76]

Commerce 0.5.0-pl

Released on 2017-03-17 (Commerce Channel)

  • [dashboard] Fix product and order links on the dashboard
  • [dashboard] Prevent issue loading modules from breaking the backend
  • [dashboard] Fix issue in Firefox where prices could not be edited [#130]
  • [dashboard] Add license status to the configuration checklist [#106]
  • [checkout] Fix enter in the cart quantity field submitting with the remove item button
  • [checkout] Fix cart/checkout when friendly urls are off, and the xhtml_urls setting is on [#128]
  • [gateways] Rewrite client-side payment handling
  • [gateways] Add gateway, using the Accept.js integration (on-site JavaScript AIM)
  • [gateways] Add MultiSafePay gateway
  • [orders] Fix PHP notice: Undefined index: total
  • [setup] Use PHP 5.3 array style in setup options to make sure install doesn't break before the requirements validator
  • [emails] Add new email templates for order confirmation and shipping notifications
  • [modules] Log an error when a module class can't be loaded
  • [snippets] Fix get_product and get_products snippet not being installed
  • [snippets] Fix get_products snippet not loading all products when separated by a comma

Commerce 0.4.0-pl

Released on 2017-02-13 (Commerce Channel)

New features:

  • [taxes] Completely rebuilt taxes system based on Tax Groups, Tax Rules and Rate Providers. See documentation.
  • [taxes] New "Manual" rate provider (alongside EU VAT and TaxJar) for manually defined tax rates
  • [taxes] When address info is available (e.g. UserProfileAddress or AutoFillGeoIP module), expected taxes are calculated right away
  • [checkout] Allow alternative field structure for the add to cart form, to easier support variations
  • [checkout] Add UserProfileAddress module that prefills the customer address from a user profile, and can update profile as well.
  • [frontend] Add get_product and get_products snippet to easily access product information in MODX
  • [products] Add Bundle Products which get their weight and stock from the bundled products [#120]
  • [dashboard] Add the products within a bundle to the order item grid
  • [payments] Add support for Paymill payment provider
  • [reports] Add new Collected Taxes report that exports all tax records assigned to order items
  • [reports] Add new Coupon Codes export to get coupons created in a certain period


  • [checkout] Make sure all forms set the action to {{ current_url }}
  • [dashboard] Add footer rows to order item grid with various order totals/calculations

Bug fixes:

  • [cart] Fix bug where invalid product IDs might get added to the cart anyway
  • [adapter] Fix resource url generation not using the link_tag_scheme setting [S10959]
  • [coupons] Make sure created coupons have a created_on and created_by set
  • [coupons] Make sure comCoupon.last_used is updated when an order with coupon is processed
  • [dashboard] Fix "enabled in test" checkbox being ticked when module is disabled

Breaking changes in this release:

  • Taxes have been completely refactored; you will need to reconfigure them.

Commerce 0.3.2-pl

Released on 2017-01-31 (Commerce Channel)

  • [checkout] Remove placeholder text in the cart form
  • [checkout] Don't show coupon form if the coupon module isn't enabled
  • [checkout] Replace coupon form with a link that shows the form

Commerce 0.3.1-pl

Released on 2017-01-23 (Commerce Channel)

  • [statuses] Fix processing > completed state change not running
  • [reports] Fix period selector not working on Daily Sales chart
  • [reports] Add stock and weight to product and top products reports
  • [checkout] Add sort order to payment and shipping methods
  • [dashboard] Load frontend lexicon in the manager as well to fix some missing shared lexicon entries
  • [dashboard] Fix filtering on customer/address in orders grid
  • [dashboard] Increase connect timeout on HTTPS check to make sure it has enough time to fully run
  • [dashboard] Make modal close button work [#96]
  • [dashboard] Fix missing error messages on textarea fields
  • [dashboard] Fix creating email status change action [#115] / bug where properties aren't available in getModelFields on new objects
  • [i18n] Fix missing pricing lexicon on product form
  • [i18n] First translations included thanks to community help: NL, FR and DE (

Commerce 0.3.0-pl

Released on 2017-01-18 (Commerce Channel)

  • Add shipping method restriction by country
  • Add weight + weight unit support for products, and shipping method by weight to accompany it
  • Make all product information available via {{ item.product. }} in cart/checkout templates
  • Organise lexicons somewhat and enable translations via CrowdIn

Merchant dashboard tweaks:

  • Add better editing UI for shipping method by country
  • Progressively enhance currency/price fields with currency formatting
  • Improve hover and focus styles [#89]
  • Improve configuration checklist styling [#75]
  • Improved modal styling [#55] + close button [#96]
  • Fix alignment of toolbar buttons [#82]
  • Some quick tweaks towards a more responsive manager

Breaking changes in this release:

  • comProduct received a new method: getWeight which returns a PhpUnitsOfMeasure\PhysicalQuantity\Mass instance.

Commerce 0.2.1-pl

Released on 2017-01-14 (Commerce Channel)

  • Fix requirements validator having the check backwards

Commerce 0.2.0-pl

Released on 2017-01-13 (Commerce Channel)

New features:

  • [security] Implement CSRF tokens in the merchant dashboard
  • [taxes] TaxJar integration added via module for automatic US Sales Tax calculation
  • [taxes] Internal (module-managed) tax rates are now exposed under Configuration > Tax Rates
  • [taxes] Add configurable rate and reverse charge mechanism (w/ EU VAT Validator module) added to EU VAT module
  • [checkout] Add tracking of order log entries before the order is persisted to the database
  • [checkout] New module EU VAT Validator which checks for a vat_registration address field and validates it against the VIES web service
  • [dashboard] Add ability to set default currency from the merchant dashboard
  • [reports] Add support for composite headers (e.g. combining product name and currency into name) to reports
  • [reports] Add support for multiple datasets in report charts
  • [reports] Add pie chart type and 2 pie charts on the top products report
  • [products] comProduct->getPrice now returns a Price object that is linked with the currency (for potential multi currency support)
  • [products] Add comProduct.stock field and getStock/updateStock methods, also added to the standard comProduct fields and grid
  • [products] New Update Stock module to automatically reduce the stock when an order is paid in full


  • [taxes] Clean up no longer correct tax records in EU VAT module (e.g. after changing billing country)
  • [checkout] Don't count shipping/transaction price in determining if a shipping/payment method is available for an order
  • [dashboard] Handle exceptions triggered by invalid CSRF token or other errors more cleanly
  • [reports] Implement real revenue data, period and group by currency option on TopProducts report
  • [reports] Add multiple datasets to TopProducts and Sales report charts
  • [reports] Divide financial amounts in reports/charts by 100
  • [reports] Change Bar chart type to be a Bar instead of horizontalBar


  • Disable PaymentSense gateway, not yet implemented
  • Make sure exports are filtered on the current mode where appropriate
  • Fix missing placeholders for the response-messages.twig causing response errors and messages to not appear

Breaking changes in this release:

  • comProduct received 2 new methods: getStock, updateStock.
  • comProduct->getPrice now returns modmore\Commerce\Products\Price object which includes currency info
  • Minimum PHP version increased from 5.4.4 to 5.5.0

Commerce 0.1.1-pl

Released on 2017-01-10 (Commerce Channel)

  • Include polyfills and tweaks to the js to ensure IE10+ and Safari browser support

Commerce 0.1.2-pl

Released on 2017-01-10 (Commerce Channel)

  • Slight markup simplification in merchant dashboard for better experience on older browsers
  • Fix incorrect validation when editing a status that prevented creating a status with "draft" state
  • Add missing name field to currency form
  • Fix missing CSS scoping class causing conflicts in the manager
  • Add more currencies to setup (USD, EUR, GBP, RUB, BYN, CHF, CAD, AUD), and a default currency selector [#97]
  • Add setup options to create a cart and checkout resource automatically [#100]
  • Only show setup options if there are options available (so it isn't shown on upgrade, basically) [#95]
  • Add proper date + time field to editing coupon date fields [#92]
  • Rename Commerce->CommerceGrid and CommerceJS to Commerce
  • Fix filtering of grids
  • Add no results message to grids when there are no results [#88]

Commerce 0.1.0-pl

Released on 2017-01-09 (Commerce Channel)

  • Fix fatal error when viewing statuses
  • Remove unused "Find Available Modules" button
  • Fix incorrect description on customers module
  • Add note that the shop is in test mode
  • Make radio buttons for shipping/payment method selection visible in default frontend theme
  • Add "Manual" gateway that just creates a successful transaction for demo purposes

Commerce 0.1.0-rc1

Released on 2017-01-08 (Commerce Channel)

  • First packaged release of Commerce.

Open Issues

Below you will see a subset of known issues in Commerce. If you have any bug reports or feature requests, let us know.


Track company and VAT registration in UserProfileAddress module as well

Created on 2017-06-01 • Last updated on 2017-06-01


Deleting a status change should redirect back to the statuses grid

Created on 2017-05-24 • Last updated on 2017-05-24


Sync resource product when saving a resource (e.g. onDocFormSave)

Created on 2017-04-26 • Last updated on 2017-06-06


Admin notes on payment/shipping methods

Created on 2017-04-26 • Last updated on 2017-05-04


[taxes] Allow tax rule conditions to check in properties

Created on 2017-04-25 • Last updated on 2017-05-04


Sale prices

Created on 2017-04-12 • Last updated on 2017-05-04 • v0.8 (beta)


Refactor checkout

Created on 2017-03-31 • Last updated on 2017-05-30 • v0.8 (beta)


Replace custom pricing input with VanillaMasker

Created on 2017-03-22 • Last updated on 2017-05-04


Support for bulk prices on products

Created on 2017-02-09 • Last updated on 2017-05-04 • v0.8 (beta)


"In all countries except" condition on weight based shipping

Created on 2017-02-05 • Last updated on 2017-05-04


Add snippets for a "My Orders" section

Created on 2017-01-25 • Last updated on 2017-05-24 • v0.8 (beta)


Automatically create comResourceProduct records from an OnDocFormSave plugin

Created on 2017-01-10 • Last updated on 2017-05-04 • v0.8 (beta)


Consider reversably hashing transaction IDs so that collisions don't happen

Created on 2017-01-05 • Last updated on 2017-05-04


Extend order message system with statuses/states

Created on 2017-01-03 • Last updated on 2017-05-30 • v0.8 (beta)


Module for auto-creating accounts

Created on 2016-12-12 • Last updated on 2017-05-04 • v0.8 (beta)


Get single-page checkout process to work

Created on 2016-12-12 • Last updated on 2017-06-22 • v0.8 (beta)


Add slack status change action

Created on 2016-12-11 • Last updated on 2017-05-24 • v1.0 (stable release)


Module to validate if an address actually exists

Created on 2015-11-10 • Last updated on 2017-06-06 • v1.1


Create product type that integrates with miniShop2

Created on 2015-10-24 • Last updated on 2017-05-04 • v0.8 (beta)


Implement refunds for supported gateways

Created on 2015-10-24 • Last updated on 2017-05-04 • v1.2


Implement module support inside the Generator

Created on 2015-10-20 • Last updated on 2017-05-04 • v0.8 (beta)


Visual status workflow editor

Created on 2015-10-20 • Last updated on 2017-05-04 • v1.3


Import/migrate functionality

Created on 2015-10-08 • Last updated on 2017-05-04 • v0.8 (beta)


Whoosh button

Created on 2015-02-03 • Last updated on 2017-05-04 • v0.8 (beta)


Disclaimer: Viewing non-Euro pricing

You are currently viewing prices in a non-Euro currency. Please be advised that these prices are estimates, based on data by Open Exchange Rates.

While we offer this currency converter hoping our users find it convenient, all purchases are made in Euro, and the final amount charged can vary depending on payment provider, day, time of day and a number of other factors outside of modmore's control. There are no guarantees on accuracy and modmore nor Open Exchange Rates can not be held liable for errors.