Last updated

Release notes June 2026

Notable features

Norce Commerce promotions on bundles: the bundle parent is the unit of evaluation

Norce has aligned how Norce Commerce promotions apply to bundles (managed structure product types). The bundle parent is the unit of evaluation, and child articles are invisible to the Norce Commerce promotion engine.

When an article is sold as part of a managed structure (bundle), the promotion engine evaluates and applies discounts to the parent article only:

  • Requirement rules evaluate the parent's flags, manufacturer, and parametrics, not the children's.
  • Discounts apply to the parent price and are distributed proportionally to the children.
  • Monetary discounts are converted to a percentage of the parent price and applied uniformly across the children. Rounding differences stay within cents and are contained within the bundle.

To exclude a bundle from promotions, set is-discountable = false on the bundle parent. Setting is-discountable = false on child articles has no effect when the child articles are sold as part of a bundle.

The bundle promotion behavior applies to the product types ManagedStructure, ManagedERPPackage, and ManagedERPPackageWithCalc.

This behavior was announced in June 2026 and released gradually during the summer. See Release notes July 2026 and Release notes August 2026.

Error reference IDs in Norce Commerce Admin

Error notifications in Norce Commerce Admin now include a reference ID with a copy button. Include the reference ID when contacting Norce support, so that support can quickly find the matching logs and trace for the failed request.

Exchange rate threshold and schedule in Norce Commerce Admin

Client Exchange Rates in Norce Commerce Admin now have Threshold % and Schedule settings. The threshold controls the minimum exchange rate change, in percent, before price recalculation is triggered.

Other patches and fixes

Norce Checkout

  • Svea adapter
    • The Svea adapter now expands bundle/structure child items (ManagedStructure, type 37) as separate flat order lines. This fixes missing child items and adds mixed-VAT bundle support.
    • Added a configuration option to include the bundle parent row in Svea order lines. When enabled, the bundle product is sent to Svea with a zero price.
    • The Svea adapter skips updates when the Svea address is incomplete, avoiding missing country code errors.
    • Promotion VAT percentage is matched against the cart items' VAT percentage when all items use the same VAT.
    • Amounts covered by other payment adapters (for example, gift cards) are now correctly subtracted.
    • The UpdatePayment guard now also compares the amount to cover, so changes from other adapters (for example, a voucher added by Awardit) trigger a Svea session update even when cart and shipping are unchanged.
    • HTTP 404 is now returned instead of 200 when the Svea admin order is not found during push for non-recurring orders, which allows Svea to retry. The retry window for finding the Svea admin order is extended from 10 to 20 seconds.
    • The Norce Checkout order ID is now mapped into SveaAdminOrder OrderMetadata, which enables handling of pending orders from fraud control when using basket ID instead of Norce Checkout order ID.
  • Checkout Admin
    • Checkout Admin now auto-selects the channel matching the shop's applicationId (from the Norce context cookie) when opened with ?preselectChannel=true, and falls back to the previous behavior when no match is found.
  • Configuration
    • Channel and merchant names containing whitespace characters are now rejected with 400 Bad Request.
    • The notification delay setting is moved outside the header object to the top of the schema. Setting a delay there on custom notifications now delays the notification.
  • Norce adapter
    • UpdateDeliveryMethodV4 is now populated with Carrier, Code, and DropPoint from the standardized Norce Checkout shipping DeliveryDetails, so downstream Connect and ERP integrations receive carrier and drop-point information through the standard ShippingAdvice fields.
  • Ingrid adapter
    • The Ingrid adapter no longer throws EmptyCartValidation errors when an order transitions to Removed.
  • Klarna adapter
    • TMS reference and post-booking shipping data are now populated on validation when switching from Kustom to PayPal payment.
  • nShift adapter
    • Fixed nShift shipping options failing for Norwegian (nb/nn) cultures by mapping to the supported no language code.
  • Qliro adapter
    • Fixed Qliro INVALID_INPUT errors caused by empty MerchantReference values. Line items now use the first identifier that produces a non-empty value (Id, Sku, Reference, Name), and fall back to a safe placeholder only when no candidate is usable.
  • Voyado adapter
    • Invalid or expired Voyado API keys now return 401 Unauthorized with the code voyado-unauthorized instead of a generic 500 error.
  • Walley adapter
    • HTTP 423 from Walley now throws WalleyOrderLockedException instead of a generic WalleyException when the Walley payment is locked.

Commerce Admin

  • Channel Settings
    • The price list dropdown is now paginated to improve performance and usability.
  • Client Settings
    • Added missing client settings to the settings page, including sections for disabled features (read-only) and additional settings for SKU status automation, pricing, and orders.
  • General
    • Added email format validation to customer creation and account management. Invalid email addresses are rejected with a clear error message.
    • Enterprise customers no longer receive statuspage notifications from the multi-tenant environment.
    • Fixed an issue where the Back button on product detail tabs did not navigate back to the product list when accessed via direct URL or a fresh session.
  • List pages
    • The Categories, Parametrics, and Parametric Groups list pages now support right-click "Open in new tab".
    • Added "Select all" and "Deselect all" actions to multi-select filter dropdowns when more than 5 items are available.
  • Missing Content filter
    • Added a "Primary category" option to find products lacking a valid primary category.
  • Orders and Baskets
    • Added "open in new tab" icons for products in order items and basket items, and for orders in the promotions and product order tabs.
  • Product Files
    • Added an "Open" action on the product Files tab to open PDFs and other file types in a new browser tab.
  • Product Relations
    • The relation tab on the product page now shows the status of related products with a colored badge, and includes a button to open related products in a new tab.
  • Automated Relations
    • The Parametric requirement is now always available in the requirement dropdown. Global parametrics are shown by default, and selecting a Category requirement adds that category's parametrics.
  • Order info types
    • Fixed an issue where order info type values were not shown in the order listing.
  • Parametrics
    • Fixed an issue where saving a parametric (for example, renaming a translation) could silently reset the sort order of parametric list values to alphabetical.
  • Product Export
    • Comma-separated values in product exports (flag groups, multi-list parametrics) are now sorted consistently across rows.
  • Product List
    • Fixed an issue where the product list report filter and other filters were lost when navigating back from a product detail page.
  • Product Settings
    • Fixed an issue where the "All variants" option was missing from the variant dropdown on the product Settings tab.
  • Product Text
    • Fixed an issue where the Unique URL for non-default cultures could not be saved.
  • Products, Customers, Companies
    • The "New" button is now hidden for users with view-only roles.
  • Roles
    • Fixed an error when changing a user's role (for example, setting an application to "No Access").
  • Shopping
    • Dates shown when hovering over payment and order status steps in basket and order views are now shown in the correct timezone.

Commerce Service

  • Currency data per client
    • Currency information is now fetched per client instead of globally, improving multi-tenant data isolation.
  • Email validation
    • Email format validation is now more consistent across the platform.
  • Order creation performance and cache stability improvements.
  • Basket operations now handle duplicate info entries with last-wins deduplication, and unique constraint violations are treated as retryable instead of returning HTTP 500.
  • Fixed a bug that caused basket discounts to disappear when order rows were split.
  • Fixed a bug that prevented adding a product to the basket when the product only had a price on a non-default price list.
  • Fixed a bug where the buyer's company was not linked to the basket when a new company was created during checkout.
  • Added validation to prevent invalid characters in product filter parameters.
  • Fixed a bug that could cause errors when duplicate basket metadata was inserted simultaneously.
  • Fixed a bug where customer search did not return associated company information.

Commerce Query

  • Fixed default server-driven paging ($top) on parameterless OData requests, to prevent timeouts for large tenants.
  • Exposed the InvoiceCaptureSettingsCode property on ClientCompanyPaymentMethod in the Query 3.0 OData Customers model.

Product Feed

  • Exposed StartDate and EndDate from the price list on the Price output schema.
  • Fixed an issue where quantity break prices from other applications could appear in the Product Feed pricing section.
  • Fixed a bug that caused variant attributes (such as size and color) to appear in the wrong order.

Commerce Connect

  • Fixed a bug where product imports could occasionally fail when multiple imports ran at the same time.