Magento 2 ExtensionProduct-Customer Matrix Prices

Combine, prioritize, and schedule pricing rules based on product and customer attributes.

Product-Customer Matrix Prices extends Magento 2 with flexible pricing logic for situations where standard pricing is not enough. Instead of maintaining many individual special prices, you define rules that apply only when both product and customer match the matrix.

Product and customer attributes in one rule: A matrix links both sides at the same time. This helps you map negotiated conditions for specific product sets and customer segments in a structured way.

Multiple attributes with AND/OR logic: Combine multiple product attributes per matrix and define whether all conditions must match or whether partial matches are enough. This supports both simple and advanced pricing structures without custom development.

Automatic segment matching plus direct customer assignment: Rules can be triggered by customer attributes and additionally assigned to specific customers. This combines scalable segment logic with individual contract pricing.

Priorities for overlapping rules: If multiple matrices match at the same time, direct customer assignments are evaluated first and priority is then applied. This keeps pricing behavior predictable even in large rule sets.

Quantity tiers to grow basket value: Build quantity-based tiers inside the same matrix logic. Customers automatically receive the correct price level as order quantity increases.

Time control for campaigns and contracts: Matrix rules and customer assignments can be managed with start and end dates. This enables planned campaigns, contract periods, and clean transitions without manual cutover work.

Transparency in customer account: Logged-in assigned customers can review their matrix prices in “My Prices” and download price lists when enabled. This reduces clarification loops and speeds up reordering.

Efficient admin operations: Matrix management keeps rules, attributes, and customer assignments in clear admin workflows. This helps sales and e-commerce teams maintain large pricing setups faster.

Strong for B2B, not limited to it: The module is highly effective for negotiated B2B pricing, but also works for B2C pricing strategies based on segments and conditions.

Matrix engine for product and customer logic

Define price rules that are applied only when product and customer attributes match together.

Targeted product-attribute matching

Combine multiple product attributes per matrix to steer pricing precisely across assortments.

Customer attributes as pricing trigger

Use customer segments and a configurable customer attribute, including common fields like group, email, or name.

AND/OR relation per matrix

Decide whether all configured attributes must match or if partial matches are sufficient.

Direct customer assignment for exceptions

Complement segment logic with direct customer assignment for contract-specific conditions.

Priority handling for rule conflicts

Direct customer assignments win first; within the same assignment type, the matrix with higher priority is applied automatically.

Quantity tiers inside matrix logic

Define volume-based price levels and let the correct tier apply automatically as quantity grows.

Validity windows for rules and assignments

Control start and end dates for matrix rules and individual customer assignments.

Website-scoped pricing control

Manage matrix rules by website to separate pricing strategies across markets at website level.

Matrix prices visible in My Prices

Customers can review assigned matrix prices directly in their account before reordering.

Price download for assigned customers

Provide single-file or per-matrix downloads in customer account and control CSV format centrally when needed.

Condition for cart price rules

Use the condition customer has product-customer matrix to target campaigns and discounts.

  • Current Version2.1.3
  • Compatible with Magento 2.4+
  • Compatible with PHP 8.2+

If your environment differs from the listed requirements, we can check compatibility in advance. Please contact us via our contact form.

pricesystem-productcustomermatrix

Version 2.1.3 - 2026-02-19

Changed
  • Switched customer edit assigned-matrix listing to dedicated customer actions

Version 2.1.2 - 2026-02-01

Fixed
  • Support table name prefixes

Version 2.1.1 - 2026-01-26

Added
  • Added admin configuration to choose single CSV download or per-matrix downloads for Product Customer Matrix
  • Added frontend route and My Prices layout block for Product Customer Matrix downloads

Version 2.1.0 - 2026-01-16

Added
  • Added PHP 8.4 compatibility
  • Added compatibility to pricesystem 2.3.0
Changed
  • Changed config path from pcmatrix to productcustomermatrix
  • Updated admin UI elements to the newer Magento UI components (forms)
  • Changed customer_group column to customer_attribute_value (automatic migration)
  • Changed to nullable fields for date fields in the database

Version 2.0.11 - 2025-01-15

Fixed
  • Fixed issue with custom customer attribute setting

Version 2.0.10 - 2025-01-09

Fixed
  • Fixed dependency issue from Pricelist extension

Version 2.0.9 - 2024-03-06

Changed
  • php Docs

Version 2.0.8 - 2023-08-17

Fixed
  • Fixed MovieMatrixData Patch on a fresh installation

Version 2.0.7 - 2023-06-01

Fixed
  • Fixed UI component listing

Version 2.0.6 - 2023-05-28

Fixed
  • Fixed UI component listing

Version 2.0.5 - 2023-05-12

Fixed
  • Dynamic properties declarations are fixed

Version 2.0.4 - 2023-04-16

Added
  • Added cart condition rule for product customer matrix
  • 2.4.6 compatibility fixes

Version 2.0.3 - 2023-01-25

Added
  • New configuration to show "My Prices" my account link only when custom prices are set to the customer
Fixed
  • Fixed swagger issue "Message: The "\DateTime" parameter type is invalid" after new API definitions

Version 2.0.2 - 2022-11-29

Added
  • Added PriceProvider for My prices block

Version 2.0.1 - 2022-11-25

Fixed
  • Fixed issues around localized date input format when saved into DB
pricesystem

Version 2.3.5 - 2026-03-19

Added
  • Added function for Adobe Commerce product check

Version 2.3.4 - 2026-03-17

Changed
  • Consolidated frontend price reload into one flow and removed category/search price pipeline parts
  • Reduced duplicate AJAX price reloads and simplified the price AJAX response payload
Fixed
  • Fixed My Prices provider selection handling so the page when opened without a selected price type

Version 2.3.3 - 2026-02-20

Fixed
  • Fixed sort order from system configuration

Version 2.3.2 - 2026-02-19

Changed
  • Removed obsolete zero date checks
Fixed
  • Fixed error in Sales OrderItem API plugin when extension attributes are null
  • Fixed price adjustment matrix preview/apply condition evaluation
  • Fixed pricing context leakage between consecutive `PriceFacade` calls by resetting customer/group/date context after calculation
  • Fixed cache payload serialization for table prices by storing scalar JSON payload instead of native PHP serialization
  • Fixed an issue with displaying custom price column in admin

Version 2.3.1 - 2026-01-26

Fixed
  • Redirect unauthenticated visitors to login on the My Prices page to align with account-only access

Version 2.3.0 - 2026-01-16

Added
  • Added price adjustment feature: mass select prices and update them using a queue job
Changed
  • Magento 2.4.7+ required
  • Improved "My Prices" page: configurable dropdown price types (provider-based) and optional "All prices" view (default: select first)
  • Removed ZERO_DATE_VALUE (0000-00-00) usage, use null instead
  • Changed config path of pricesystem/api_settings/* to pricesystem/api/* (automatic migration)
  • Removed PricesystemCore\Helper\ProductAttribute (in favor of PricesystemCore\Service\ProductService)
  • Removed PricesystemCore\Helper\Data (in favor of PricesystemCore\Service\ Classes)
  • Changed fixed sort_order config fields to config array field (price_sort_order) with automatic migration
  • Updated admin UI elements to the newer Magento UI components (forms)
Fixed
  • Fixed cache invalidation for customer groups after admin save (clear GroupRegistry, invalidate `full_page`, `block_html` and `pricesystem_cache`).
  • Fixed FPC degradation on category/search pages by using HttpContext for `customer_group` detection instead of CustomerSession (no session start, FPC stays group‑varying).
  • Fixed PHP 8.4 deprecation warning by explicitly marking the `$resource` and `$resourceCollection` constructor parameters in `Model\PriceAdjustment` as nullable

Version 2.2.6 - 2025-06-24

Fixed
  • Fixed display of basePrice when tax display (net/gross amount) on detail page is enabled

Version 2.2.5 - 2025-04-23

Changed
  • Changed template path definition of pricesystemcore/index.phtml from Block Class to xml

Version 2.2.4 - 2025-02-28

Fixed
  • Fixed Reflection Error when class of original price type could not be found or loaded
Changed
  • Improved Date Range Validation checks

Version 2.2.3 - 2024-12-12

Fixed
  • Fixed issue when using decimal values for qtys

Version 2.2.2 - 2024-10-27

Added
  • Added another API route to get context-based API prices (automatically from customer session or, when not logged in, from not logged in customer group, see webapi.xml for reference)
Fixed
  • Fixed issue with duplicate AJAX requests when using special trigger contentUpdated

Version 2.2.1 - 2024-09-21

Changed
  • Changed Version class for displaying extension information
Fixed
  • Fixed some issues for Magento_CSP Compatibility

Version 2.2.0 - 2024-08-31

Added
  • Added new API routes /V1/pricesystem/me/get-final-price & /V1/pricesystem/me/get-multi-price to fetch prices for the logged in customer (session) inside Magento 2

Version 2.1.13 - 2024-08-18

Fixed
  • Fixed tier price display for sort order prices with customer discount
  • Show "Skip customer and group discounts application on next available price" config only when Sort Order is set as Price Select Rule

Version 2.1.12 - 2024-08-08

Changed
  • Show last update date from this file inside the system configuration of the extension

Version 2.1.11 - 2024-07-22

Changed
  • Updated README.md

Version 2.1.10 - 2024-07-19

Fixed
  • Fixed CHANGELOG.md

Version 2.1.9 - 2024-03-24

Version 2.1.8 - 2024-03-06

Version 2.1.7 - 2024-03-05

Changed
  • Changed cache key of getProductPrices to include customerId and groupId
Fixed
  • Fixed an issue on display pricesystem discount for configurable products at the My Orders page in frontend
  • Fixed an issue with displaying up- and cross sell prices on special conditions

Version 2.1.6 - 2023-12-28

Changed
  • Changed hard coded groupId 0 to GroupManagement::NOT_LOGGED_IN_ID

Version 2.1.5 - 2023-11-29

Fixed
  • Fixed issue with shipment tab on frontend my orders section if display of custom view template was enabled

Version 2.1.4 - 2023-11-08

Fixed
  • Fixed discount text for configurables with tier prices

Version 2.1.3 - 2023-11-06

Fixed
  • Fixed tier price display for configurable products

Version 2.1.2 - 2023-09-16

Fixed
  • Fixed double currency conversion in cart

Version 2.1.1 - 2023-08-14

Fixed
  • Fixed double currency conversion in cart

Version 2.1.0 - 2023-06-04

Added
  • Virtual products support

Version 2.0.26 - 2023-06-03

Added
  • New configuration to add routes, for which ajax price request should not be done

Version 2.0.25 - 2023-05-16

Fixed
  • Added rounding for price discount calculations

Version 2.0.23 - 2023-05-14

Added
  • "product" object is passed to Customized Price

Version 2.0.22 - 2023-05-13

Added
  • Added new config to check for customer discount / customer group discount for price codes

Version 2.0.24 - 2023-05-12

Fixed
  • Pricesystem discount amount reload after cart qty update

Version 2.0.21 - 2023-05-12

Fixed
  • Dynamic properties declarations are fixed

Version 2.0.20 - 2023-05-06

Fixed
  • Incorrect tier price on PDP for configurable product on qty change

Version 2.0.19 - 2023-04-16

Added
  • Added new system configuration "Show From Price for Configurables" to show the lowest price from all simple tiers as the configurable price

Version 2.0.18 - 2023-03-22

Fixed
  • Fallback solution for DefaultConfigProvider on Original price, if e.g. configured_original_price is set

Version 2.0.17 - 2023-03-21

Added
  • Added cart condition rules for customer discount and customer group discount
Fixed
  • Added an additional check to prevent JS error for the discount text when oldPrice is not available from the template
  • Fallback solution for "configured_original_price" price type, previously resulted in an offset issue on admin order display

Version 2.0.16 - 2023-03-01

Fixed
  • Fixed an issue that disabled products were shown under my prices section in frontend

Version 2.0.15 - 2023-02-21

Fixed
  • Fixed a JS issue undefined priceSystem when module is not enabled on a specific website

Version 2.0.14 - 2023-02-15

Fixed
  • Fixed an issue when a custom price record was inserted with a qty of 0, it was falsely considered as tierprice within getTierPriceList function

Version 2.0.13 - 2023-02-14

Fixed
  • Fixed an issue which could lead to wrong prices when the config "Store View Code in URL" is active

Version 2.0.12 - 2023-02-09

Fixed
  • Fixed phpDoc for swagger for recent get-multi-price API feature

Version 2.0.11 - 2023-02-07

Added
  • New /V1/pricesystem/get-multi-price API call to retrieve final and tier prices for multiple skus

Version 2.0.10 - 2023-01-28

Fixed
  • Fixed /V1/pricesystem/get-final-price API call
Changed
  • Removed redundant ACL node MageB2B_PricesystemCore::pricesystem (use MageB2B_PricesystemCore::main instead)

Version 2.0.9 - 2023-01-25

Added
  • New configuration to show "My Prices" my account link only when custom prices are set to the customer

Version 2.0.8 - 2023-01-12

Added
  • Optional websiteId parameter is added to the PriceRequest to return website specific prices
  • Added trait PriceSelectByPriorityTrait
Changed
  • Changed categoryprice pricetype: It's now merged into one pricetype

Version 2.0.7 - 2022-11-28

Changed
  • Changed the CLI command to be pricesystem:get-final-price (previously mageb2b:product:get-customer-price), added a more descriptive text around the options of this CLI
  • Changed My Prices page to display all available tier qtys of a price type

Version 2.0.6 - 2022-11-25

Added
  • Added new method convertInputDate which will be used for all localizated date conversions into DB date for non post data processors
Fixed
  • Fixed issue occuring when access swagger page of Magento 2

Version 2.0.5 - 2022-11-24

Fixed
  • Fixed issue when fallback to regular price was taking into account: TypeError: MageB2B\PricesystemCore\Model\Catalog\Pricing\FinalPriceProvider::saveUsedPriceData(): Argument #1 ($usedPriceInfo) must be of type MageB2B\PricesystemCore\Model\Catalog\Pricing\Price\CustomizedPriceDecorator

Version 2.0.4 - 2022-11-24

Fixed
  • Fixed issue on pricelist product grid when neither customer nor a group was selected, the custom price renderer throwed an exception
  • Fixed issue with the pricesystem discount amount on admin order view grid, previously it was not displaying the amount in the ordered currency

Version 2.0.3 - 2022-11-17

Fixed
  • Fallback to the regular price is done, when custom price cannot be calculated

Version 2.0.2 - 2022-11-12

Changed
  • Changed function getWebsitesForForm to add default parameter $addAllWebsites, value false

Version 2.0.1 - 2022-11-11

Fixed
  • Fixed issue with infinite scroll price update

Version 2.0.0 - 2022-11-01

Added
  • Added new config "Hide price filter from layered navigation for customers"
  • Added new config "Reload prices with ajax for guests"
  • Added new config "Price Cache Lifetime"
  • Added new config "Skip greater tier prices"
  • Added new config "Show custom price column in backend grids (customer price grid, pricelist products grid)"
  • Added CLI to fetch final price based on pricesystem calculation (see: bin/magento mageb2b:product:get-customer-price)
  • Added API method to fetch final price based on pricesystem calculation
Changed
  • Magento 2 Compatibility only 2.4.x
  • Refactored the methods of calculating the prices using M2-core approach, it will improve the speed and compatibility of customizations
  • Refactored the logging to be more accurate and increase readability
  • Remove usage of own pricesystem index table
  • Changed the way pricesystem cache works: You can now define an own cache lifetime, considering that datasets can have dates in future its not recommend to increase it to more than 24 hours
  • Changed the price rendering to be ajax-based on detail page as well to prevent FPC-issues
  • Changed the way the custom price column in admin is rendered, its now done via AJAX to always get the correct amount
  • Removed some obsolete configuration settings
Fixed
  • Fixed issue with strike price now being applied correctly from the original price set from pricesystem
  • Fixed issue with display of the correct pricesystem discount and pricesystem price type

Version 1.1.11 - 2022-08-08

Fixed
  • Fixed issue with new customer group on admin save of pricesystem attributes

Version 1.1.9 - 2022-07-28

Fixed
  • Fixed Pricesystem API URL Checkout for getActual... methods

Version 1.1.8 - 2022-07-27

Changed
  • Change price box from display: none to visilbity:hidden to prevent custom theme issues/jumping of product blocks

Version 1.1.7 - 2022-07-25

Fixed
  • Whitelist additional routes

Version 1.1.6 - 2022-07-24

Fixed
  • Fixed issue on getTierPrice function
  • Fixed logger message issue when message is null
  • Ensure quote plugin is applied on checkout API calls (e.g. order placement)

Version 1.1.5 - 2022-07-21

Fixed
  • Fixed ID issue on price warming

Version 1.1.4 - 2022-07-21

Changed
  • Add prices reload for SM_SHOBY extension ajax pagination
  • Add price warming on category price ajax reqeust to ensure price index table

Version 1.1.3 - 2022-07-21

Changed
  • Added Sm_ShopBy for event ajax trigger on footer

Version 1.1.2 - 2022-07-20

Changed
  • Added new bind return for getCustomerprice()

Version 1.1.1 - 2022-07-20

Changed
  • Fixed tierprice issue on custom sort order

Version 1.1.10 - 2020-08-05

Fixed
  • Fixed isset issues of pricesystem attributes during save in admin
pricesystem-productcustomermatrix-importexport

Version 1.1.0 - 2026-01-16

Added
  • Added compatibility to pricesystem 2.3.0

Version 1.0.7 - 2025-10-28

Fixed
  • Return a proper download response for the sample file so the browser saves the file instead of rendering it inline

Version 1.0.6 - 2025-07-07

Added
  • Added README.md and CHANGELOG.md
Changed
  • Removed dependency of MageB2B\PricesystemCore\Helper\Data

Version 1.0.5 - 2025-07-07

Added
  • Added README.md and CHANGELOG.md
Changed
  • Removed dependency of MageB2B\PricesystemCore\Helper\Data

Version 1.0.4 - 2025-04-23

Changed
  • phpDocs

Version 1.0.3 - 2022-12-27

Fixed
  • Fixed undefined constant on sample file download

Version 1.0.2 - 2022-11-30

Fixed
  • Fixed setup:upgrade
  • Fixed composer.json version constraint

Version 1.0.1 - 2022-07-18

Fixed
  • Fixed composer.json,
  • Fixed constant in registration.php

Version 1.0.0 - 2022-05-28

pricesystem-productcustomermatrix-api

Version 1.0.2 - 2025-07-07

Added
  • Added CHANGELOG.md

Version 1.0.1 - 2024-07-25

Added
  • Added new API definitions for customer + attribute relations
Changed
  • Update phpDocs

Version 1.0.0 - 2022-05-11

Added
  • Initial version
pricesystem-productcustomermatrix-graph-ql

Version 2.0.0 - 2026-02-02

Added
  • Initial module version
pricesystem-hyva

Version 1.0.0 - 2025-07-27

Added
  • Initial version
Module-Specific Questions
What is the biggest day-to-day benefit of this module?

Pricing agreements are maintained as central rules instead of many isolated special prices, which reduces manual effort and errors.

How does matrix pricing work in practice?

A price rule applies only when product attributes and customer attributes match together, giving you controlled and context-based pricing.

How granular can product criteria become?

You can combine multiple product attributes in one matrix and define very specific pricing logic for selected assortments.

Can I still handle individual customer contracts?

Yes. In addition to segment logic, specific customers can be assigned directly to a matrix for dedicated pricing agreements.

What happens if multiple rules match at once?

Direct customer assignments are evaluated first. If multiple rules of the same assignment type still match, higher priority resolves the result.

How are quantity discounts implemented?

Use quantity tiers inside matrix logic. As cart quantity increases, the matching tier is applied automatically.

Can I schedule matrix pricing by time?

Yes. Matrix rules and customer assignments can both use start and end dates for planned pricing windows.

Where can customers see their assigned matrix prices?

Assigned prices are visible in the My Prices section for logged-in customers.

Is this extension only relevant for B2B stores?

No. It is especially strong for B2B agreements, but equally useful for B2C segment-based pricing strategies.

How does it support campaign logic in Magento?

The cart-rule condition lets you target promotions specifically to customers covered by matrix pricing.

General Questions
How many Magento installations is the license valid for?

The license is valid for one Magento installation, including multi-website operation. In addition, the module may be installed on any number of development or staging servers. You can find further details in our license terms.

Is installation included in the price?

Installation and configuration are not included in the price. On request, we can support you with a smooth integration into your system.

What payment methods are available?

You can pay by credit card (Stripe) or bank transfer (prepayment). For credit card payments, the order is processed immediately and the access credentials are provided directly in a separate follow-up email.

What does the order process look like?

After credit card payment, you immediately receive access credentials to obtain the module via Composer. For bank transfer, access is granted once the invoice is paid.

I need a custom modification of the module. Is that possible?

Custom requests are no problem. We tailor our Magento 2 modules to your project and maintain a dedicated internal version so we always know exactly what runs on your system for support.

Can I install a demo version locally?

On each module detail page, you can request your own demo instance and test the module intensively for 7 days. However, we do not provide a local demo version.

Is the source code encrypted?

No, the source code of our modules is not encrypted. If you need a customization, feel free to send us a request. We will get back to you promptly with a non-binding quote.

What is the update policy and support?

You can add a support package to your order. It includes assistance as well as updates and upgrades related to the module. No continuous subscription is required.

I already have a license. How can I perform an update?

You can complete the license update here. If you have an active support package, you receive updates automatically via Composer. If your support package has expired, you can renew your license here or in your account.

I have another question — how can I contact you?

You can reach us anytime via eMail.

Product-Customer Matrix Prices

×

Ideal for these industries & use cases

Wholesale Category Pricing

Create matrix "Wholesale Electronics" matching customer group Wholesale + product category Electronics. All wholesale customers automatically receive special pricing on electronics without individual price entries.

Regional Brand Pricing

Create matrices for regional brand pricing: "California Brand A" matching region California + brand Brand A. Different regions receive different pricing on same brands based on local market conditions.

VIP Product Line Access

Create "VIP Premium Products" matrix matching VIP customer group + premium product category with high priority. VIP customers get exclusive pricing on premium lines that regular customers cannot access.

Contract SKU Pricing

Create matrices for specific SKU patterns in customer contracts: "ACME Contract 2025" matching company ACME + SKU pattern "PRO-*". Contracted customers get special pricing on specific product SKUs only.

Seasonal Segment Pricing

Create time-limited matrices for seasonal campaigns targeting specific segments: "Summer Sale - Wholesale Outdoor" matching Wholesale group + Outdoor category + valid June-August. Automatic activation/deactivation.

Multi-Dimensional Targeting

Create complex matrices with AND/OR logic: "Enterprise West Coast Tech" matching (Group Enterprise AND Region California/Oregon/Washington) + (Category Tech OR Brand Microsoft/Dell). Multiple intersecting dimensions for precise pricing control.

Try it without risk

Request a personal demo instance and evaluate the module directly in backend and frontend under real conditions — without local installation.

For developers

Practical Magento 2 guides, technical developer documentation, and API references (REST, SOAP, GraphQL) for installation, configuration, and troubleshooting.

Go to Knowledge Base