Magento 2 Extension

Price Lists / B2B Pricelists

Magento 2 price list extension for contract prices, customer and group assignments, quantity tiers, validity periods, priorities, and optional CSV, API, GraphQL, and Hyvä support.

Current Version
2.2.10
Magento
2.4.6 - 2.4.9
PHP
8.2 - 8.5

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

Features

What the module does.

  1. Named pricelists as pricing containers

    Keep pricing logic, validity, and priorities in clear pricelist entities instead of scattered single rules.

  2. Customer-condition logic with attributes

    Define pricelists with customer attributes and optional address attributes using combinable condition logic.

  3. Direct customer assignment

    Assign pricelists directly to specific customers for contract-based pricing scenarios.

  4. Customer-group assignment

    Assign pricelists to full customer groups and scale segment-based pricing efficiently.

  5. Product prices with quantity tiers and price application

    Define multiple quantity levels per product and set the price application type per tier.

  6. Date control on list and product level

    Manage validity windows both on pricelist level and product-price level for planned rollouts.

  7. Priority and merge logic for overlaps

    Resolve overlaps by priority and optionally merge quantity tiers from equally prioritized pricelists; same-quantity tiers are reduced to one tier per quantity by strategy.

  8. Base pricelist fallback

    Define one base pricelist per website to avoid pricing gaps when no specific list applies.

  9. Website-scoped pricelist control

    Separate pricing strategies per website while keeping a centralized pricelist structure.

  10. Mass-copy pricelists

    Duplicate selected pricelists quickly for new campaigns, regions, or customer segments.

  11. Inline editing for assigned pricelist products

    Update price, quantity, price application, and date fields directly in assigned-product grids.

  12. Customer-account visibility and CSV download

    Assigned customers can view their prices in My Prices and download CSV files when enabled.

  13. Cart-rule condition support

    Use the condition customer has pricelist to target promotions to relevant customer segments.

Description

How it works.

SoftwareSilo Price Lists turns negotiated Magento 2 prices into manageable business records. Each named list brings products, customer coverage, validity, priority, and website scope together. Sales and ecommerce teams can maintain an agreement without hunting through individual product records.

Designed for recurring B2B agreements: Use a price list for a distributor program, annual customer contract, dealer level, framework agreement, purchasing association, or temporary sales period. The list name gives the commercial arrangement a clear identity in Magento.

Assign a list to individual customers or customer groups: Direct customer assignment fits negotiated accounts. Group assignment fits broader segments such as dealers, wholesalers, or partners. A customer may match more than one list, so the pricing rules include explicit conflict handling.

Automate assignment from customer data: A list can match a customer attribute, an address attribute, or both. This supports cases such as account type, sales region, country, or a custom classification. Exact or loose value comparison is configurable.

Set contract periods at two levels: A price list has an overall start and end date. Individual product entries can also carry their own validity window. This allows a yearly agreement with selected items changing at a different date.

Use fixed prices, surcharges, or discounts: Product rows support a fixed amount, a nominal or percentage surcharge, and a nominal or percentage discount. The common Price System package provides the calculation layer and the configurable strategy that selects the applicable result.

Add quantity tiers inside the same agreement: A product can have prices for several quantity thresholds. The buyer receives the price that applies to the ordered quantity, while the agreement remains grouped under one recognizable list.

Priorities resolve overlapping lists: When several active lists apply, priority determines which tier set is considered. Lists with the same highest priority can contribute quantity tiers. An optional setting also permits tiers from lower-priority lists to be merged.

A base price list can provide a fallback: One base list per website can cover cases where no customer-specific list matches. Validation can enforce that website-level rule, helping prevent accidental gaps or competing base lists.

Keep storefront pricing consistent: The shared Price System layer calculates list prices for product pages, category listings, cart, checkout, order items, and the customer price overview. Configurable products and AJAX price refresh are handled by the common pricing engine.

Let customers review their prices: Logged-in buyers can use My Prices to see the prices available to them. When enabled, an assigned price list can be downloaded as CSV with the configured delimiter and enclosure.

Daily administration stays practical: Administrators can copy complete price lists, assign customers and groups in searchable grids, add catalog products, edit assigned product rows, and control whether large product grids load automatically.

Bulk and integration options are separate: CSV Import/Export supports repeatable file exchange and command-line imports. SOAP/REST provides CRUD and bulk operations for lists, products, customers, and groups. GraphQL exposes filtered price list data for headless projects. Hyvä compatibility is sold separately.

Price Lists includes the required Price System base package: The base package is the shared calculation framework, not a second price list license. Other Price System modules, such as Customer Specific Prices, Category Specific Prices, or Product-Customer Matrix Prices, are independent products for different pricing models.

Price lists are not private catalogs: This module changes applicable prices. It does not hide products or categories. If each company must see a different assortment, combine pricing with a catalog-visibility solution and test both decisions together.

Plan ownership before importing thousands of prices: Decide whether Magento or the ERP owns each list, how customer assignments are identified, how expired agreements are replaced, and which rule wins when several prices match. A small test set with real customers, quantities, dates, websites, currencies, tax settings, and configurable products should pass before full rollout.

Screenshots

What it looks like.

Changelog

What has changed.

Price Lists / B2B Pricelists

Version 2.2.10 - 2026-10-19

Changed
  • Switched pricelist grid exports to normalized CSV with configurable assignment identifiers and reduced memory usage
Fixed
  • Honored selected and excluded rows when removing pricelist customer, group and product assignments
  • Limited exports to the selected rows and the pricelist being edited
  • Corrected bulk product price updates when API product aliases are configured
  • Respected global customer account sharing in API pricelist assignments
  • Allowed removing the NOT LOGGED IN customer group from pricelists
  • Redirected guests downloading pricelists to the storefront customer login
  • Restricted save and delete buttons to administrators with the appropriate permissions
  • Preserved product assignment validity dates entered in localized admin formats
  • Refreshed calculated prices after pricelist or assignment changes
  • Preserved pricelist form input after rejected saves
  • Restored product assignment form loading

Version 2.2.9 - 2026-06-22

Added
  • Added assigned customer and customer group counts with assignment filters to the admin pricelist grid
  • Added configuration to control whether the Catalog Products grid auto-loads on pricelist edit pages
Fixed
  • Fixed API pricelist relation saves to resolve configured product, customer, and customer group identifiers before persistence, including embedded relation payloads on full pricelist saves
  • Fixed assigned pricelist product grid price and quantity fields so they can be edited inline with numeric values
  • Fixed base pricelist validation config lookup to use website scope instead of treating website IDs as store IDs

Version 2.2.8 - 2026-06-16

Added
  • Added configuration to control whether base pricelist prices are merged under the Pricelist type in My Prices or exposed separately
  • Added SSO compatibility by lazy-loading the customer session in pricelist model construction
Changed
  • Changed admin ACL hierarchy and explicit permissions for pricelist export, mass copy, and mass delete actions
  • Changed frontend pricelist download links so assigned pricelists without products are not offered
Fixed
  • Fixed resolve table names through Magento's table-name resolver
  • Fixed admin price displays to use Magento currency formatting
  • Fixed admin pricelist edit performance by preventing the full catalog product assignment grid from auto-rendering on page load
  • Fixed direct frontend pricelist CSV downloads so the download enablement flag is enforced
  • Fixed frontend pricelist download access and links so inactive, expired, future, and foreign-website pricelists are not exposed
  • Fixed frontend pricelist CSV generation to use unique safe server filenames and stable download filenames
  • Fixed pricelist CSV product joins so they are restricted to the requested pricelist
  • Fixed sales rule pricelist condition checks for customers assigned to multiple pricelists
  • Fixed admin pricelist export product SKU resolution by exporting the assigned catalog product ID
Pricesystem

Version 2.4.1 - 2026-10-19

Fixed
  • Restored Pricesystem cache cleaning on Magento versions before 2.4.9

Version 2.4.0 - 2026-10-19

Added
  • Added a customer group identifier alias source for configurable import and export columns
  • Added Breeze storefront compatibility
  • Updated native bundle customer prices and tier-price notices on cached product pages using combined bundle and selection quantities
Changed
  • Raised the minimum supported PHP version to 8.2
  • Improved price adjustment jobs, cache warmup and product attribute lookup performance
Fixed
  • Preserved customer and customer group form input after rejected saves
  • Calculated displayed savings using the configured tax, currency and rounding rules
  • Corrected zero-price handling and limited savings to the catalog value
  • Corrected configurable starting prices and customer tier-price updates
  • Corrected bundle prices and savings for selected options and quantities
  • Preserved applied price types and savings in cart and order details, including formula and bundle pricing
  • Displayed additional customer and group discounts correctly at checkout and in order details
  • Prevented stale or mixed prices when pricing data or customer, store or currency context changes
  • Preserved Magento cart price rules when Pricesystem catalog-rule pricing is disabled
  • Prevented scheduled price adjustments from being applied more than once
  • Preserved customer assignments, validity dates and product conditions when scheduling matrix price changes
  • Respected selected directions, modes and price-type filters in price adjustment jobs
  • Restored CSV downloads from price adjustment previews
  • Prevented separate price imports from interfering with one another
  • Rejected invalid and out-of-range localized dates
  • Kept product price widgets usable after failed or invalid asynchronous price reloads
  • Corrected customer-specific CLI pricing without a storefront login, including zero prices and fractional quantities
  • Kept all My Prices columns accessible on narrow storefront screens
  • Prevented anonymous price API requests from selecting another customer's pricing context
  • Prevented customers from changing `pricesystem_price` and `pricesystem_price_type` through customer API writes

Version 2.3.13 - 2026-05-13

Fixed
  • Fixed configurable product detail price updates after option selection when Pricesystem initializes the product price box asynchronously
Add-On: CSV Import / Export

Version 1.1.3 - 2026-10-19

Added
  • Added normalized pricelist CSV imports and exports with configurable identifiers and separate customer, group and product assignment rows
  • Retained the previous CSV format as Pricesystem Pricelist (Legacy), with explicit CLI format selection
Fixed
  • Limited import and delete operations to the current CSV import's validated data
  • Preserved fractional quantity tiers in pricelist imports and exports
  • Rejected invalid or reversed validity periods, including localized dates
  • Resolved legacy product assignments using the configured product identifiers
  • Reduced memory usage when exporting pricelists from large catalogs
  • Validated customer and group assignments using configured separators and Magento account-sharing settings
  • Preserved customer attribute assignment rules with zero values or omitted update columns
  • Imported pricelists and their assignments correctly in Replace mode
  • Stopped failed CLI imports without crashes or source-file deletion
  • Restored CLI exports, including Magento 2.4.9 compatibility
  • Restored sample CSV downloads with valid open date bounds
  • Refreshed cached prices after pricelist imports

Version 1.1.2 - 2026-03-08

Added
  • Added compatibility to pricesystem/pricelist 2.2.5
Fixed
  • Fixed pricelist import date range handling

Version 1.1.1 - 2026-01-16

Added
  • Added compatibility to pricesystem 2.3.0
Add-On: SOAP / REST API Interface

Version 1.0.3 - 2026-10-19

Fixed
  • Fixed the price list customer delete endpoint requiring a permission of the customer price module instead of `pricelist/customer_delete`

Version 1.0.2 - 2025-07-06

Added
  • Added CHANGELOG.md

Version 1.0.1 - 2024-07-25

Added
  • added new API method to delete all pricelists
Changed
  • Update composer.json
Add-On: GraphQL API

Version 2.0.1 - 2026-10-14

Fixed
  • Required matching pricelist read permissions for administrator and integration GraphQL queries

Version 2.0.0 - 2026-02-02

Added
  • Initial module version
Add-On: Hyvä Theme Compatibility

Version 1.0.3 - 2026-10-19

Fixed
  • Ensured Hyvä fallback support is installed and loaded before Pricesystem compatibility
  • Corrected fixed bundle customization totals by applying each selected option surcharge only once
  • Displayed product names and SKUs on the My Prices page
  • Fixed configurable customer price reloads and native tier rendering on Hyvä product pages
  • Updated product discount messages when native Hyvä quantity pricing changes
  • Applied customer and tier prices to native Hyvä dynamic bundle options and totals while keeping selections consistent with available products

Version 1.0.2 - 2026-10-13

Changed
  • Require mageb2b/pricesystem >=2.4.0
Fixed
  • Fixed dynamic pricing and discount displays when Hyvä's strict Content Security Policy mode is enabled
  • Fixed correctly calculated item prices remaining hidden in the Hyvä cart and limited price visibility handling to Pricesystem-managed price boxes
  • Fixed dynamic customer prices on Hyvä search result pages

Version 1.0.1 - 2026-06-16

Changed
  • Aligned Hyvä frontend price AJAX handling with pricesystem 2.4.0, including chunked list price requests, configurable list price updates, discount text rounding, and safer product detail fallback behavior
  • Added missing Hyvä compatibility handles for customer account navigation, cart discount text, configurable cart item editing, and the price AJAX render context
Fixed
  • Scoped all Hyvä compatibility layout handles with the `hyva_` prefix so the module no longer overrides Luma price system storefront pages when installed in mixed-theme shops
  • Added the missing `Hyva_CompatModuleFallback` module sequence used by the scoped compatibility handles
  • Added Hyva Tailwind 4 module CSS source registration while keeping Tailwind 3 source compatibility
  • Fixed module CSS so it no longer declares global Tailwind directives or applies the circular `hidden` utility
  • Fixed the Hyvä customer price overview so the special `All prices` option renders without calling regular price type metadata

FAQ

Common questions.

About the module

What is a Magento 2 B2B price list extension?

It groups product prices into named agreements and applies them to selected customers or customer groups. SoftwareSilo adds dates, quantity tiers, priorities, a website-level base list, attribute assignment, and a customer price overview.

Who is SoftwareSilo Price Lists best for?

It fits wholesalers, manufacturers, distributors, dealers, procurement portals, and mixed B2B/B2C stores that repeatedly maintain agreed prices for accounts or customer segments.

What is included in the base license?

The license includes Price Lists and the required Price System calculation package. Named lists, products, customer and group assignments, attribute conditions, dates, quantity tiers, priorities, base-list fallback, copying, My Prices, and optional customer CSV download are included.

Why is the Price System package required?

Price System is the shared calculation framework used by the price-list module. It connects the applicable result with Magento catalog, cart, checkout, order, customer price display, strategy, and cache behavior.

Is Price System a separate purchase for this module?

No. The required base package belongs to the Price Lists product. Other pricing modules built on the same framework remain separate products.

Can I assign a price list to one customer?

Yes. Direct assignment is suitable for a negotiated contract with a particular account. Administrators can add or remove customers through searchable grids.

Can I assign a price list to a customer group?

Yes. Group assignment applies one list to all members of a Magento customer group, which is useful for wholesale, dealer, or partner levels.

Can customers receive price lists automatically?

Yes. Automatic assignment can match customer attributes, address attributes, or both. The merchant controls whether both conditions must match and whether value comparison is strict.

Can one customer have several price lists?

Yes. A customer can qualify through direct, group, or attribute-based assignment. Priority and merge settings determine how overlapping lists contribute prices.

How does price-list priority work?

The applicable lists are ordered by priority. The highest-priority tier set normally leads the calculation. Lists sharing the same highest priority can contribute their quantity tiers.

Can quantity tiers from different lists be combined?

Yes. Same-priority lists can contribute tiers, and an optional setting allows lower-priority tiers to be merged as well. Test identical quantities because the selected price strategy still resolves conflicts.

What is a base price list?

It is a website-level fallback price source for cases where no regular assigned list applies. Validation can limit a website to one base list.

Can a price list have a start and end date?

Yes. The whole list can be scheduled, and individual product rows can have separate start and end dates for controlled price changes within a longer agreement.

Are quantity-based contract prices supported?

Yes. A product can have several quantity thresholds inside a list, allowing negotiated volume pricing without creating a separate agreement for each tier.

Which price calculation types are available?

A product row can use a fixed price, nominal surcharge, percentage surcharge, nominal discount, or percentage discount.

Which price wins if several Magento prices apply?

That depends on the configured Price System strategy and price-type order. The system can select the lowest, highest, or configured sort-order result. The project should define this rule before launch.

Can administrators copy an existing price list?

Yes. Mass copy creates a new list from an existing one, which is useful when preparing a new contract period or a variation for another customer segment.

Can assigned products be maintained in bulk?

The admin grids support product selection and editing of assigned rows. For recurring high-volume exchanges, use the separate CSV Import/Export or API option.

Can customers see their assigned prices?

Yes. Logged-in customers can open My Prices to review applicable pricing. Price-list display can include the base list according to configuration.

Can customers download their price list?

Yes, when the download link is enabled. Only a list assigned to the logged-in customer through the supported assignment paths can be downloaded, and CSV delimiter and enclosure are configurable.

Does the module hide products or categories?

No. It changes pricing, not catalog visibility. Use a custom or private catalog solution when customers must also receive different product assortments.

Does it support multiple Magento websites?

Yes. Price lists have website scope, and the base-list rule applies per website. Test website, currency, tax, and customer assignments together.

Does it work with configurable products?

The shared Price System contains configurable-product price handling. Test the exact parent-child setup, quantity tiers, category display, product page, cart, and checkout used by the store.

What does the CSV Import/Export add-on provide?

It adds Magento import and export handling plus console commands for price-list files. The format can carry list data, products, quantities, price types, validity, customers, and groups.

What does the SOAP/REST API add-on provide?

It adds protected CRUD and bulk endpoints for price lists and their product, customer, and group relations, allowing ERP, CRM, PIM, or middleware integration.

What does the GraphQL add-on provide?

It exposes filtered queries for lists, product rows, customer relations, and group relations. It is intended for integrations and headless administration data, not as a replacement for testing storefront price calculation.

Does Price Lists support Hyvä?

Hyvä compatibility is available as a separate option. Test product lists, configurable products, cart editing, My Prices, checkout, and every installed pricing module together.

Is it an alternative to Adobe Commerce Shared Catalogs?

It can be an alternative when the requirement is price lists in Magento Open Source. Adobe Shared Catalogs also control product and category visibility and are tied to Adobe Commerce company accounts, so the scopes are not identical.

How should an ERP integration be designed?

Choose one owner for list definitions and prices, use stable identifiers for lists, products, customers, groups, and websites, define full versus delta updates, and log validation failures before switching production prices.

What should be tested before launch?

Test direct, group, attribute, and base assignments; priorities; equal quantities; dates and time zones; fixed and relative prices; configurable products; websites; currencies; tax display; cart, checkout, orders, My Prices, cache, imports, and every purchased add-on.

Purchase, license and support

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.

How do I install a module?

Composer is PHP's package manager, and Magento 2 uses it to install modules and their dependencies. After purchase, the commands for your module are available under Licenses in your customer account. First add the private SoftwareSilo repository and your license token. Then install the listed package with composer require and run php bin/magento setup:upgrade and php bin/magento cache:clean.

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.

$349.00

Use cases

Ideal for these industries & use cases

  • Wholesale Tier Pricing

    Create separate pricelists for wholesale tiers (Bronze, Silver, Gold) with automatic assignment based on purchase volume or company attributes. Each tier receives graduated quantity discounts appropriate for their segment.

  • Regional Pricing Management

    Create pricelists for different regions (US, EU, APAC) with automatic assignment based on customer country or postcode. Each region receives pricing in appropriate currency with region-specific quantity tiers and promotional campaigns.

  • Seasonal Campaign Pricing

    Create time-limited pricelists for seasonal campaigns (Black Friday, Summer Sale, Holiday Specials) with date ranges that automatically activate and deactivate. Use high priority values to override standard pricing during campaign periods.

  • VIP Customer Programs

    Create exclusive VIP pricelists with premium pricing and early access to new products. Assign customers to VIP lists based on lifetime purchase value, company attributes, or manual selection. Use highest priority to ensure VIP pricing always applies.

  • Contract-Based Pricing

    Manage annual or multi-year customer contracts as named pricelists with precise date ranges matching contract terms. Create separate pricelists for each contract period, allowing easy contract renewal by activating new pricelists when old ones expire.

  • Multi-Brand Pricing

    Create separate pricelists for different brands or product lines within your catalog. Assign customers to brand-specific pricelists based on their authorized dealer status or purchase history, ensuring proper pricing segregation across multiple brands.

Next steps

Try it first. Then buy.

  • Technical documentation

    Practical Magento 2 guides, developer documentation, and API references for installation, configuration, and troubleshooting.

    Go to Knowledge Base
  • Try before you buy

    Request a personal demo and test the module with realistic sample data in Magento Admin and the storefront. Take your time to see whether it fits your requirements and workflows.

  • Do you need a custom solution?

    Do your requirements go beyond the capabilities of our Magento 2 modules? We develop suitable Magento 2 modules and integrations for your business processes.

    Request now

Further reading

Guides for this module