Mercur

v2.3.4: Commission providers, order acceptance & handling time

Sep 14, 2026

In Mercur v2.3.4 commissions get pluggable providers, split orders and product edits get new workflow hooks, and offers learn about handling time. Shipping profiles are now operator-owned, RBAC is fully opt-in, and Medusa is bumped to 2.20.1.

What's New

Commissions

The commission module now has a provider seam, just like payouts. Implement ICommissionProvider to plug in your own commission logic, and pass extra context through the new setCommissionContext hook. The existing calculation ships as the default system provider, so nothing changes unless you configure one.

Order acceptance

A new setOrderStatus hook on completeCartWithSplitOrdersWorkflow lets a plugin set each seller order's initial status – for example requires_action for marketplaces where sellers accept orders first. Both panels now lock fulfil, edit, return, exchange, claim, capture and refund on those orders, and order tables get a status filter.

Handling time

Offers accept leadtime_to_ship – business days until the parcel is handed to the carrier – falling back to the seller's default_leadtime_to_ship (default 2). The building block for shipping deadlines and delivery estimates.

Vendor Panel

Added a validate hook on the vendor product-edit workflows.

Storefront

Made ClientError keep the API error code, so your storefront can react to a specific refusal instead of matching on the message.

Core

  • Accepted value_ids on the product attribute batch update.
  • Bumped Medusa to 2.20.1.

What's Changed

Admin & Vendor

Made shipping profiles operator-owned (breaking) – vendors can still read and select them, but POST/DELETE on /vendor/shipping-profiles, the seller_id filter on GET /admin/shipping-profiles, and the shipping-profile-seller-link are all removed.

Core

  • Made RBAC opt-in (breaking) – enable it with withMercur({ featureFlags: { rbac: true } }) if you use seller roles and permissions.
  • Added new columns on offers, sellers, and commission lines – run migrations before upgrading.

What's Fixed

Admin & Vendor Panel

  • Fixed the vendor Create offers form to reject prices of 0 or less and skip unpriced variants.
  • Fixed offer price fields to accept a decimal comma.
  • Merged plugin i18n into the panels and kept parent breadcrumbs on file-based routes.
  • Stubbed virtual:medusa/search-entities in the dashboard SDK.

Storefront

Avoided a 4-level field expansion when the storefront retrieves the cart.

Core

  • Stopped marking unhandled product-change actions as applied.
  • Fixed updateOffersWorkflow to tolerate dangling price links.

Other

  • Used valid BCP 47 tags for Chinese and Portuguese.
  • Clarified the Stripe webhook events needed for split-order checkout.

More product updates

Ready to build?

Read the release notes, then see the product – open the demo, or book a walkthrough on your terms.