Last updated

Release notes May 2026

Notable features

Norce Checkout Voyado Loyalty Adapter released

The Voyado Loyalty Adapter connects Voyado Engage with Norce Checkout. The Voyado Loyalty Adapter lets merchants surface a customer's available promotions and reward vouchers from Voyado during the purchase flow. When a promotion is applied, the promotion is automatically translated into a discount line item in the cart, so customers see their loyalty benefits reflected in the order total without any extra steps.

Read more in Voyado Loyalty Adapter.

Qliro loyalty sign-up in Norce Checkout

The Norce Checkout Qliro Checkout Adapter now supports loyalty program enrollment directly in the checkout. Customers can sign up for a merchant's loyalty program, powered by Voyado Engage or Klaviyo, without leaving the payment flow. When a customer opts in, the membership is automatically created or updated in the loyalty provider, and the loyalty data is stored on the order for downstream processing.

Read more in Qliro Checkout Adapter: Qliro Loyalty Sign-up.

New data in the Norce Product Feed

The Norce Product Feed now includes more data:

  • Incoming stock: Incoming inventory quantities (IncomingValue) on stock and on-hand data.
  • SEO fields: SEO-related fields, such as meta title and meta description, in product texts.
  • Unit of measurement: Variants include unit of measurement data and friendly names.
  • File descriptions: Culture-specific file descriptions on FileCulture.
  • Dropship flag: A new IsDropshipOnly field on variants.
  • Translated relation names: Product relations support translated names.

Updated API references on docs.norce.io

The API references on docs.norce.io are updated to the modernized versions of Norce Commerce Services and Norce Product Feed. The Product Feed API reference has richer annotations of the product and product status contracts. The API references for Norce Query 3.0 and the Norce Management API are also updated.

Other patches and fixes

Norce Checkout

  • Checkout Admin
    • Static events can now be deleted from Checkout Admin.
  • Qliro adapter
    • Added support for the Ingrid ExternalId field in Qliro ShippingConfiguration. When using Qliro integrated shipping with Ingrid, the adapter populates ShippingConfiguration.Ingrid.ExternalId with the BasketID, using Cart.Reference or Order.Id based on the MerchantReferenceSource setting.
    • The Qliro adapter is now supported in Norce Checkout Transaction Insights.
    • A race when updating MerchantReference in Qliro is now handled gracefully.
    • HTTP 404 from the Norce Order API on customer billing, shipping, consent, or loyalty updates is now mapped to a NotFoundException (HTTP 404) instead of a generic 500. Unhandled error responses now include the HTTP status code and Order API response body.
  • Walley adapter
    • The Walley adapter now expands bundle/structure child items (ManagedStructure, type 37) as separate flat order lines, matching Klarna and Qliro behavior. This fixes missing child items and adds mixed-VAT bundle support.
    • Added a configuration option to include the bundle parent row in Walley order lines. When enabled, the bundle product is sent to Walley with a zero price.
  • Order
    • The validation webhook now sends the V1 Order body instead of null when POSTing.
    • The notification service now adds headers from configuration as expected.
  • Adyen adapter
    • Fixed a race between the Adyen webhook and the Ingrid shipping-changed event that could leave an order stuck with the payment completed but the order not completed.
  • Ingrid adapter
    • HTTP 409 Conflict from Ingrid UpdateSession is now handled as a transient concurrent update (one retry, then idempotent skip). The Walley adapter ignores the corresponding transient ingrid-conflict and ingrid-bad-request concurrent update errors during billing and shipping updates, so the errors no longer break the Walley validation or complete flow.
  • Klarna adapter
    • Adding a discount now updates the shipping cost immediately.
  • Kustom adapter
    • HandleUpdateShipping no longer overwrites the live KSA selection with the preselected fallback on checkout changes.
  • Svea adapter
    • The Svea adapter now falls back to updating the existing shipping when concurrent shipping option callbacks race and the initial create receives HTTP 409, preventing false OrderConflictException errors.
    • Hooks and notifications are cleaned when a push notification receives a cancelled Svea order, preventing OrderConflictException when adding a new payment.

Commerce Admin

  • List pages
    • Items in list pages (products, baskets, orders, customers, companies, promotions, subscriptions) can now be right-clicked to open in a new tab.
  • Roles
    • Added a Code field to the role list and detail views.
  • Basket
    • Fixed a divide-by-zero issue when viewing baskets with items where PriceOriginal was zero.
  • Channels
    • Fixed an incorrect label on the channel settings page where "Job key" was displayed instead of "Channel key".
  • Customer
    • Fixed an issue where creating a new account for a customer did not save correctly, which prevented the account from being used via API.
    • The Anonymize (GDPR) action is now available on the customer detail page for all clients, with a confirmation dialog before it runs.
  • GDPR
    • Fixed an issue where anonymizing customers from Settings > GDPR occasionally did not work.
  • Mail Settings
    • Fixed an issue where the mail settings page (Settings > Application > Mail) showed no data.
  • Parametrics
    • Creating a parametric value with a code that already exists on an inactive value now reactivates the existing value instead of failing.
  • Product
    • Fixed an issue where the unit of measurement count could not be saved on products inheriting the unit of measurement from a category.
    • Fixed an issue where the StockBreakPoint field on the product settings tab always showed as "not inherited", causing unintentional removal of inheritance when saving.
  • Product / Customer / Company list
    • Batch and export progress polling now stops when leaving list pages and on failure, avoiding unnecessary background traffic.
  • Product Flags
    • Fixed search and filtering in the product flag dropdown for single-choice flag groups.
  • Product Pricing
    • Fixed an issue where VAT was not calculated correctly for price lists with a specific sales area, causing incorrect prices including VAT.
    • Fixed an issue where inactive or expired price lists were incorrectly included in product list prices.
  • Product Variants
    • Saving a variant now shows a warning if the chosen code is already used by another variant, preventing duplicate variant codes.
  • Promotions
    • Fixed an issue where searching for products in promotions could return an incorrect number of variants.
    • Fixed a timeout when copying promotions with many products to another application.
    • Promotions created without a currency code now default to the application's primary currency instead of EUR.
    • Fixed an issue where PromotionId was set to 0 on product list rows when creating new promotions.
  • Structure Pricing
    • Fixed an issue where distributed price on structure products could set all prices to zero or distribute incorrectly.
  • Two-Factor Authentication
    • Error messages now have a better description when verification fails.

Commerce Service

  • Performance
    • Optimized caching of product attribute data and improved performance when loading product parametrics.
  • API specification
    • Improved documentation for product flags and removed the obsolete ListProductFlags endpoint. Deprecated endpoints (UpdateBasket, ListDeliveryMethodsByProduct, PaymentGiftCardRollback) are hidden from the API specification.
  • Fixed duplicate basket lines so that orders match the expected basket.
  • Fixed an issue where overly long part numbers could cause database errors.
  • Fixed an issue where changing delivery method on a basket could break the connection to basket items.
  • Fixed campaign price calculations for bundled product children when converting a basket to an order.
  • Managed-structure bundles with discounts could result in child item totals differing by one minor unit from the bundle parent total, causing the PSP to reject the basket. The rounding logic now reconciles bundle parents with their child items after per-item rounding.
  • Fixed an issue where UpdateBasket2 and UpdateBasketItems could fail with a 500 error for baskets containing managed package (structure article) products.

Product Feed

  • Product relations now respect sort order.
  • Parametrics and family groups are now sorted correctly.
  • Variant data now falls back to the correct language more consistently, matching product behavior.
  • Better stability under heavy load, since cancellation is handled more gracefully throughout the export pipeline.
  • Faster database queries for product filtering.