Using PriceListSeed to control price evaluation
By default, Norce evaluates all public price lists plus any price lists connected to the logged-in customer or company. PriceListSeed lets you override this by explicitly specifying which price lists should be included in the evaluation for a given API call.
This is most commonly used in B2B portals, where a customer may have multiple contract price lists and the application needs to choose the right one for the current context.
What PriceListSeed does
Passing price list IDs in PriceListSeed adds those price lists to the evaluation. By default, this is additive — the seeded lists compete alongside public and customer/company lists.
The Disregard public price lists setting changes this behavior: when enabled, only the seeded price lists are used. Public and customer/company lists are ignored, and only products on the seeded lists are returned.
| Setup | Price source | Assortment source |
|---|---|---|
| No PriceListSeed | Public + customer/company lists | Union of all |
| PriceListSeed (default) | Best price across public + customer/company + seeded lists | Union of all |
| PriceListSeed + Disregard public | Best price from seeded lists only | Seeded lists only |
How to find which price lists to seed
Use the Commerce Services API (Product Service) to gather the information your storefront needs:
ListPriceLists— returns all price lists with their names, codes, and IDs. Call this once and cache the result client-side. It gives your application a complete map of all available price lists to work with.GetCustomerorGetCompany— returns the customer or company record, which includes the connected price list IDs as a property (comma-separated list of IDs).
Together, these two calls give the storefront everything it needs to determine which price lists are available to a given customer or company, and to decide which ones to add to the current context.
Building context-dependent PriceListSeed logic
The typical B2B pattern is:
- At login, retrieve the customer's and company's connected price lists.
- Determine which price lists are relevant for the current context — for example, the customer may have one contract for a specific project and another for general ordering.
- Pass the relevant price list IDs via
PriceListSeedin product and price API calls.
This lets a single customer have multiple contract contexts without needing separate logins or applications.
A customer has two company price lists: one for project P-2025-001 and one for their standard ongoing orders. The portal lets the customer switch context. When the project context is active, only the project price list ID is seeded. When the standard context is active, the standard contract is seeded.
Using Disregard public price lists
Enable this setting under Pricing > Settings > Client pricing settings when you want complete control over what the seeded context returns. With this setting active:
- Public price lists do not participate in price or assortment — but only when a
PriceListSeedis provided. Without any price list seed, all public price lists are used normally. - Products not on any seeded price list are not returned.
- The customer effectively only sees the assortment and prices in their explicit context.
This is appropriate for closed B2B portals where a customer should only see their contracted assortment.
If a customer or company has an exclusive price list, the Disregard public price lists setting is ignored — the exclusive list always wins. See How best-price evaluation works.
PriceListLocked
PriceListLocked is a related mechanism that goes one step further: it locks in a specific price list as the source of truth and prevents the best-price evaluation from switching to a lower price from another list. This is used when a contract price must be honored exactly — even if a public campaign would give the customer a lower price.
See the design article Price list priority for the technical details.