Release Notes

Here you can view a list of all the changes for each release of nopCommerce.
Release Notes - nopCommerce 3.90 (March 14, 2017)

Highlight features

  • Compliance with PCI DSS 3.2 requirements. Password attempt failure lock-out support (configurable). Do not allow customers to submit one of previously used password (configurable). Passwords must be forced to change at least once every 90 days (configurable).
  • Support conditions in message templates. For example, now you can hide shipping address in emails if shipping is not required.
  • Boolean logic support for discount requirements (“AND” or “OR” or groups).
  • Delay usage of reward points. A store owner can specify a period of time after which points should become active.
  • Allow customers to apply multiple discount coupon codes.
  • Allow a store owner to configure custom order number. For example, add some prefix or date.
  • Allow a store owner to manage access to plugins per customer role (ACL).
  • Allow a store owner to specify a product availability range (will be displayed instead of general “out of stock” message).
  • Bundled products (attributes associated to other products). Customers can enter the quantity of bundled items.
  • Tier prices now support start and end dates (hence removed “special prices” product properties).
  • Track stock changes of products.
  • Allow store owners and vendors to reply to product reviews.


  • Further changes on admin area redesign. More user-friendly buttons, not links as before. Redesigned grids. New inputs for currencies, weight, dimensions.
  • New redesigned installation page.
  • Rounding rules for currencies.
  • Added settings indicating whether "default" items (homepage, forums, contact us, etc) should be displayed in the top menu
  • Development. Now we use model factories, it makes customization much easier for developers.
  • Now customers can attach files when submitting return requests (scans, additional documents, etc). Disabled by default.
  • Multiple XML sitemap files support (if there are more than 50,000 records).
  • Allow a store owner to specify an address of vendors.
  • News and blog comments per stores can be displayed per store.
  • Added approval mechanism for news and blog comments.
  • Performance optimization. The speed of loading user agents was increased and memory usage was reduced. Now sites require much less memory.
  • Performance optimization. Cache discounts between requests. Previously we loaded all discounts for each HTTP request
  • Performance optimization. We removed only appropriate records from the cache when some event is triggered, not all of them.
  • Performance optimization. Cached number of blog and news comments between HTTP requests.
  • Simplified admin area adding "basic-advanced" modes to categories, checkout attributes, manufacturers, message templates, topics.
  • Performance optimization. Now vendors and manufacturers in admin area are cached.
  • Performance optimization. Added a stored procedure to load all categories. Disabled by default.
  • Added required hints for all required inputs in the admin area.
  • Return requests can be searched by custom number, dates, status.
  • Blog and news comments can be searched by dates, text, approved status.
  • Customer notifications for failed recurring payments.
  • Added description to each message template.
  • Moved "contact us" emails to message templates. Now, store owners can choose a default email account which is used to send these emails and configure BCC.
  • PayPal Direct plugin. Pass a list of all purchased items (configurable).
  • Combined "Fixed Rate Shipping" and "Shipping by weight" plugins into one. Upgrade instructions: do not forget to manually delete "/Plugins/Shipping.FixedRateShipping" and "/Plugins/Shipping.ByWeight" directories (they are not used anymore) and replace the plugin «Shipping.Fixed Rate» or «Shipping.ByWeight» by the plugin «Shipping.FixedOrByWeight» in the App_Data/InstalledPlugins.txt file.
  • Combined "Nop.Plugin.Tax.CountryStateZip" and "Nop.Plugin.Tax.FixedRate" plugins into one. Upgrade instructions: do not forget to manually delete "/Plugins/Tax.FixedRate" and "/Plugins/Tax.CountryStateZip" directories (they are not used anymore) and replace the plugin «Tax.Fixed» or «Tax.CountryStateZip» by the plugin «Tax.FixedOrByCountryStateZip» in the App_Data/InstalledPlugins.txt file.
  • Renamed "Froogle" plugin to "Google Shopping". Upgrade instructions: manually delete /Nop.Web/Plugins/Feed.Froogle/ directory
  • Now customers should re-validate the new email address after editing if "Registration method" is set to "Email validation".
  • Only supported tokens are displayed on message template details page.
  • Added a setting indicating when an order status should be marked as "complete" (when just shipped or delivered).
  • Hid 'Search' button if there are no other search fields in panel in the admin area.
  • Added a message template for new return requests for customers.
  • "Products never purchased" report now can be filtered by store, vendor, category and manufacturer.
  • "Shipments" and "Products never purchased" pages are displayed in two columns now. Previous filters block had too much empty space displayed.
  • Standard text area is used instead of TinyMCE for message templates, campaigns and queued emails.
  • Now a store owner is allowed to "limit" product templates by product type(s). Now if a store owner chooses "Simple" product type, then he won't see "Grouped" product template.
  • Allow a store owner to decide whether shopping carts and wishlist are shared between stores in multi-store environment
  • Payment method description is displayed during checkout.
  • External authentication block is added to the registration page.
  • A store owner is allowed to choose an email account for sending campaigns.
  • Added support for "Enter" button ("zip code" input) in “Estimate Shipping” form.
  • Display a warning if a specified search engine friendly name already exists.
  • Added a setting to hide "Shipping total" labels if shipping is not required.
  • Required products are not allowed to be removed from the cart.
  • Added Indian Rupee to built-in list of currencies.
  • Now it is allowed to choose a language from a dropdown list on the language add/edit page.
  • Checkbox labels should be clickable in “Terms of Services”
  • System info page in admin area shows more detailed information of loaded assemblies and more readable format of variables and assemblies list.
  • REST API is used for PayPal Direct Payment plugin.
  • Renamed "Payment method restrictions" menu title to "Payment restrictions".
  • Increased a random number appended to the backup filename to 10.
  • Enabled "Ship to the same address" setting by default.
  • Ensured that store owners can preview products, categories and manufacturers that are not available (mapped to other store, ACL, etc).
  • Imported states (country list page). Added a link to the official package (
  • The Product editor settings are used when exporting products to XML.
  • Allow admins to change customer username regardless of the "allow customers to change username" setting.
  • Added a tax setting indicating whether pickup point address should be used for tax calculation (when selected by a customer).
  • Performance. A warning is displayed when LoadAllLocaleRecordsOnStartup setting is enabled and Redis cache is used.
  • Now ECB exchange rate provider supports different currencies.
  • Editing of specification attribute option is allowed on product details page.
  • Added a new tax setting "Default tax category for product" which is pre-set on the add new product page.
  • "Attribute values" tab when "attribute type" doesn't require any value is hidden on checkout and custom checkout attributes.
  • Added a setting indicating whether a product can be reviewed only by a customer who have ordered it.
  • Hid entered password on Email account details page.
  • Vendors can import products (Excel).
  • Vendors can export orders (Excel).
  • There's no need to display payment methods during checkout if "Use my reward points" is selected and earned points are enough to pay the order in full.
  • Canada Post plugin now supports commercial customers.
  • Display product attributes info are displayed on Return request list page.
  • Added a lot of new activity types.
  • Added a navigation link to the appropriate order details page on return request page.
  • A store owner is allowed to specify the state for pickup points.
  • Now we support customer names in the header and not just email or username ("CustomerName" property of "HeaderLinksModel").
  • "TaxSettings.LogErrors" setting is now disabled by default.
  • Now it is allowed to add products to the cart from catalog page for products that have "readonly" product attributes only.
  • Added setting for deactivating gift cards when deleting an order.
  • Categories and manufacturers on “Import products” page should exactly match after importing (all to delete categories/manufacturers during importing).
  • Added support for product tags in Export/import products.
  • Included information about products in export orders.
  • Included custom customer attributes to export customers.
  • A store owner is allowed to add custom URLs to sitemap.xml file in admin area (use "commonsettings.sitemapcustomurls" setting).
  • Added a column indicating in which store a customer registered.
  • Updated all third-party libraries to the latest versions.
  • Added setting (paymentsettings.skippaymentinfostepforredirectionpaymentmethods) indicating whether the 'payment info' page should be skipped for redirection payment methods. Disabled by default.
  • Disallowed /admin from robots.txt file.
  • 0 is not allowed to be set as "Page Size" (categories, vendors, manufacturers). Otherwise, exception can be thrown in public store.
  • “Copy product” functionality now supports attribute conditions.
  • Localized all hard-coded resources.
  • Changes in the default "click-to-zoom" behaviour in the product picture gallery.
  • Localization of grid pager in admin area and TinyMCE editor.
  • Added option for “Saturday Delivery” in UPS plugin
  • User-friendly message for "maximum discounted quantity" is displayed (when applied).
  • Vendors can see whether orders are canceled or not.
  • Uniformed view of all tables in the admin area.
  • Don't display “store” columns if only one store is available in Admin area.
  • Static content is cached for 24 hours by default (cacheControlMaxAge).
  • In “Copy products” new product name should be "original name - copy" (not "Copy of...."). Also add " - copy" to SKU field.
  • Stock quantity default value should be set to 0 in attribute combinations.
  • Display a warning on adding associated product with attributes in Bundled products
  • Display a warning on adding associated product which is gift card or downloadable one in Bundled products.
  • The CacheControl header for Azure Blob is set.
  • A specified message template static file attachments on a queued email details page is displayed.
  • Added a message token for custom customer attributes (Customer.CustomAttributes).
  • Subscription to a newsletter is allowed when store is closed.
  • Applied cube root method to associated products when calculating shipping rates (ShippingSettings.ConsiderAssociatedProductsDimensions).
  • Hid "product template" drop-down list if it has only one value on product details page in admin area.
  • Dropped "Awarded order status" and "Canceled order status" fields in Reward points settings.
  • Replaced "Gift card activation order status" and "Gift card deactivation order status" dropdownlists with appropriate checkboxes (just two available scenarios) in order settings.
  • System names (e.g. "con", "com1", "lpt1", etc) are not allowed in "Search engine-friendly URL" fields. Anyway they will cause a runtime error.
  • Removed "Affiliate identifier" field on Affiliate details page.
  • A warning on discount list page when "Ignore discounts" is displayed when the setting is enabled.
  • Now a store owner cannot create a product attribute with "Associated to a Product" type without association.
  • A setting to display MiniProfiler only to administrators is implemented.
  • In Security settings added "RequireReLogin" field to "Customer" record. If set to "true", then require a customer to re-login.
  • Topic system name is not required anymore.
  • Removed "DiscountRequirement.HadSpentAmount" and "DiscountRequirement.HasAllProducts" plugins from solution. Starting version 3.90 they will be available for download on the marketplace.
  • Removed "ID" column on the customer list page in admin area.
  • Renamed "Azure Web Sites" to "Azure Web Apps" in web.config.
  • PayPal Standard plugin now properly validates order total.
  • Added support for Enter button to discount and gift card boxes on the shopping cart page.
  • The activities are logged during import.
  • Performance. Reduced size of some images for better performance.
  • Performance.Categories in top menu and category navigation block can use the same model and is cacheble. Hence loaded only once for better performance.
  • Performance. GetAllUrlRecordsCached method of UrlRecordService should use "TableNoTracking" (read-only) for better performance.
  • Added registration date in the customer export.
  • Admin area. Hid entered password on Customer and Email account pages.
  • Admin area. Added support for menu items to be open in a new window.
  • Admin area menu is allowed to have more than two levels.
  • Added a setting ('commonsettings.bbcodeeditoropenlinksinnewwindow') indicating whether BBCode Editor should generate URL with "target=_blank" (new window).
  • In PayPal Standard plugin new url to IPN postback is added.
  • The "shipment tracker" is not required to have an active shipping rate computation provider.
  • All stored procedures should use "dbo" schema.
  • Markup optimizations for Order/Details.cshtml , ShipmentDetails.cshtml and _OrderReviewData.cshtml file are implemented.
  • Removed an unnecessary HTML element in forum posts
  • Development. Support "kendoMultiSelect" control when overriding settings per store is added.
  • Development. Changed the way how plugin views are stored. Now we store them in \Views\file.cshtml. Previously it was \Views\plugin_name_directory\file.cshtml (removed extra directory). It's much simpler.
  • Development. An additional CSS class for "image squares" attributes is created.
  • Development. Enabled TLS 1.2 support for entire application (instead of adding this support to every single plugin).
  • Development. GetOrdersByIds, GetCustomersByIds, GetProductsByIds methods ignore deleted records.
  • Development. Marked all methods as "virtual" in controllers.
  • Development. Pass entire newsletter entity to event.
  • Development. Using distributed locks with Redis for exclude TaskScheduler race condition.
  • Development. Added "Delete" events for entities which are just marked as deleted
  • Development. Refactoring of mapping rules (AutoMapper) was performed. Now we can have multiple mappers (plugin developers can use it). Each mapper should implement IMapperConfiguration interface.
  • Development. Added "UpdateExistingResources" parameter to "ImportResourcesFromXml" method.
  • Development. Changed a DownloadActivationType enum value.
  • Development. Added more "orderby" to service methods. Sometimes DisplayOrder alone is not enough in some cases.
  • Development. Trim the start space if the first letter is uppercase (CommonHelper.ConvertEnum).
  • Development. Add ProductReviewApprovedEvent on editing product review.
  • Development. Added "Customer logged out" event.
  • Development. Marked SendNotification method of WorkflowMessageService as public.
  • KendoUI grids. Return error message is present if access is denied in 'List' methods.
  • Refactoring. Simplified unit tests (Nop.Data).
  • A lot of other source code refactoring.


  • Special chars are not encoded (rich editor). For example, ä should NOT become "ä". Otherwise, database searches become impossible when words contain a character of this kind.
  • IsoDateTimeConverter is used for properly formatting date in Kendo grids (disabled by default).
  • PayPal Direct has a bug fixed with the wrong update of payment status with enabled fraud filter.
  • Fixed ReCaptcha Version 1 error which caused a warning on a store with SSL enabled.
  • Set payment status to 'Refunded' if the order total amount is fully refunded is fixed.
  • Fixed bug, when username (read-only) wasn’t displayed on user account page.
  • Product export bug which failed when filters length was more than 255 is fixed.
  • Explicitly set content type for the "Page not found" page is working fine now.
  • "Return request status was changed" message template now uses use customer language not default admin.
  • Proper consideration of secure connection on GetThisPageUrl method. Previously it could cause issues with services such as CloudFlare and non-English cultures.
  • We should not include shipping total when calculating reward points to be granted.
  • Cumulative discounts (with coupon codes). If you had several discounts with the same code, and one of them could not be applied for some reasons (e.g. requirements are not met, etc), then you got "The coupon code you entered couldn't be applied to your order" error when entering a coupon code on the shopping cart page. Because we validated only the first found discount. Now we do it for all found discounts.
  • Fixed bug in BBCodeHelper for IMG tag.
  • Fixed a bug in Fedex plugin for India intra-country shipping rates
  • Google Analytics plugin. Ensure that transactions are not duplicated when reloading an order completed page.
  • Language tabs didn't work properly when language name had brackets.
  • Schedule tasks threw an exception when period was more than 24 days. We added a note to the schedule task list page that period should not exceed 24 days.
  • Product details page bug fixed, when categories or any other entities with too long names could not be deleted. It could be done only on a category details page.
  • An email which is sent to a vendor is not in the customer language.
  • Fixed a bug when RedisCacheManager did not work properly when database used a number greater than 0.
  • Robots.txt file now properly generates localized URLs.
  • Vendors cannot see products of other vendors in PDF invoices.
  • Vendors cannot see "Manage this page" link only for own products.
  • Fixed "Terms of service" dialog size issue.
  • Fixed all warnings on RSS feeds
  • Fixed Paypal Standard bug which failed when there were too many products in cart (URL is limited to 2048 chars).
  • Fixed BackorderMode property which was ignored during product import.
  • Added a setting to display SKU on catalog pages, not just product details page.
  • The return requests for deleted items are displayed.
  • USPS plugin throws no exception causing site error.
  • Validation fixed for password protected pages with forms.
  • Issue with "SEO friendly URLs with multiple languages" setting fixed. Previously non-existing language codes could be specified in URLs by users. For example, you had only English and Russian languages but users could visit URLs such as (Greek).
  • Fixed a bug with wrong pickup point marker position with coordinates.
  • Fixed displaying of the manual order status change warning (order details page in admin area)
  • The conditional checkout attributes that are not visible but are required should not be validated.
  • "Check / Money Order" plugin didn't use description overridden per store.
  • The prices are not rounded in Google Shopping plugin.
  • Fixed a bug when custom customer attributes didn't validate "required" fields in the admin area.
  • Customer details page (admin area). We should not validate required form fields for guests.
  • The cache is cleared automatically when editing product tags.
  • The customer is not allowed to visit "checkout" page (hide it and appropriate buttons) if we have only "Button" payment methods (e.g. PayPal Express).
  • The setting "Show product images on wishlist" is used instead of "Show product images on cart"
  • Import products. We set "Visible individually" and "Published" to "true" by default if not specified.
  • Order details page in admin area now has no empty panel was rendered when logged in as a vendor.
  • Azure. Invalid mime type was saved in blob. Fixed.
  • Forum topic pages had inputs with duplicate ID (failed HTML validation). Fixed.
  • Fixed recurring orders which didn't support "CustomValues" when value wasn't copied to a new order.
  • Deleted products are not ignored when importing (Excel) and looking for existing ones by SKU.
  • Fixed a bug with wrong display SKU, GTIN, MPN with product attributes
  • Search (both the page and autocomplete box) didn't support wrong chars (HTML input validation).
  • Fixed a bug with wrong calculation of minimum price for products with tier prices (in some cases maximum discount could be configured not for maximum quantity).
  • Nop.Admin\Views\Product\_ProductAttributes.cshtml "Built action" should be set to "Content". Otherwise, some IDE could skip it when deploying.
  • "PublicStore.Login" activity type didn't work as expected.
  • Fixed displaying of the 'Sent on' field value on the 'message queue item' page
  • Database backups should are now ignored in Nivo Slider plugin.
  • "Tax By Country & State & Zip" and "Fixed tax" providers used rates of already deleted tax categories. Appropriate records are now deleted when a store owner deletes a tax category.
  • Dashboard graphs (reports) bug when the data from the next months was included is fixed.
  • Fixed bug when admin dashboard charts (orders and new customers) showed flat line since 2017.
  • Disabled "Refund" (full) button when some partial refund has been already done. It was possible to reproduce if a store owner manually marked an order as paid after a partial refund.
  • WebHelper.GetStoreLocation(false) was hard-coded (HTTP) in GenericPathRoute. It could cause issues when a site is forced to HTTPS.
  • Canada Post plugin. Fixed a bug related to zip postal code with space.
  • Admin area. Menu item "Measures" had wrong CSS class.
  • Users in impersonation mode are not authenticated.
  • Fixed wrong locale resource usage for "ACL" field on the topic details page in admin area.
  • Fixed "GetStoreUrl" method of MessageTokenProvider which doesn't properly detect secure URL in some cases.
  • "In order to use this functionality..." warning on the customer details page beside "customer roles" field is not displayed now.
  • Fixed a bug with decryption of multiline text.
  • Fixed situation when "GetCurrentIpAddress" method threw an exception when invoked by web service.
  • Resolved the grey background issue for product details page on SEO tab (admin area).
  • Set LastSuccessUtc property to the database value in the constructor. Without it, if the task threw an exception, the LastSuccessUtc column in the database will be overwritten with NULL since the property is never initialized.
  • Admin area. Fixed button alignment in the confirmation popup.
  • Fixed account info page CSS issues.
  • Fixed "download" editor template CSS issue.
Release Notes - nopCommerce 3.80 (August 3, 2016)
Release Notes - nopCommerce 3.70 (December 8, 2015)
Release Notes - nopCommerce 3.60 (June 15, 2015)
Release Notes - nopCommerce 3.50 (December 8, 2014)
Release Notes - nopCommerce 3.40 (July 17, 2014)
Release Notes - nopCommerce 3.30 (April 3, 2014)
Release Notes - nopCommerce 3.20 (December 9, 2013)
Release Notes - nopCommerce 3.10 (July 30, 2013)
Release Notes - nopCommerce 3.00 (May 4, 2013)
Release Notes - nopCommerce 2.80 (January 5th, 2013)
Release Notes - nopCommerce 2.70 (November 29, 2012)
Release Notes - nopCommerce 2.65 (August 23, 2012)
Release Notes - nopCommerce 2.60 (July 1, 2012)
Release Notes - nopCommerce 2.50 (April 3, 2012)
Release Notes - nopCommerce 2.40 (February 1, 2012)
Release Notes - nopCommerce 2.30 (November 19, 2011)
Release Notes - nopCommerce 2.20 (October 11, 2011)
Release Notes - nopCommerce 2.10 (September 2, 2011)
Release Notes - nopCommerce 2.00 (August 1, 2011)
Release Notes - nopCommerce 1.90 (December 7, 2010)
Release Notes - nopCommerce 1.80 (August 30, 2010)
Release Notes - nopCommerce 1.70 (July 7, 2010)
Release Notes - nopCommerce 1.60 (June 1, 2010)
Release Notes - nopCommerce 1.50 (March 23, 2010)
Release Notes - nopCommerce 1.40 (December 6, 2009)
Release Notes - nopCommerce 1.30 (August 20, 2009)
Release Notes - nopCommerce 1.20 (June 16, 2009)
Release Notes - nopCommerce 1.11 (April 17, 2009)
Release Notes - nopCommerce 1.10 (February 3, 2009)
Release Notes - nopCommerce 1.05 (November 25, 2008)
Release Notes - nopCommerce 1.04 (November 16, 2008)
Release Notes - nopCommerce 1.03 (November 5, 2008)
Release Notes - nopCommerce 1.02 (November 1, 2008)
Release Notes - nopCommerce 1.01 (October 26, 2008)
Release Notes - nopCommerce 1.00 (October 23, 2008)
eCommerce CONFERENCE 2017
Learn more