How best-price evaluation works
The fundamental rule in Norce pricing is simple: regardless of how a price list is connected to a customer or request, the best (lowest) price is always returned. This page explains how Norce determines which price lists are eligible, how they compete, and what mechanisms can change that behavior.
Which price lists are eligible?
For any given API request, Norce collects all price lists that are allowed to participate in the evaluation:
- Public price lists — included automatically for all requests to the application.
- Customer price lists — price lists connected directly to the logged-in customer.
- Company price lists — price lists connected to the company the customer belongs to.
- PriceListSeed — a list of specific price list IDs passed in the API call to explicitly include additional price lists, or to control exactly which ones should participate.
All of these are evaluated together. The lowest valid price across all eligible price lists is the one returned. Assortment is the union: a product is available if it appears in any of the eligible price lists.
| Price list source | How it enters the evaluation |
|---|---|
| Public | Automatically included for the application |
| Customer | Linked to the customer in Norce |
| Company | Linked to the company in Norce |
| PriceListSeed | Passed explicitly in the API call |
How the competition works
All eligible price lists produce a price for each product, and Norce selects the lowest. This happens per product, not per price list — a customer can get the price from their agreement list for one product and the campaign price for another.
If price list types with different priorities are configured, Norce evaluates the highest-priority group first. Only if that group produces no price does it fall through to the next group. Within a group, the lowest price still wins.
The PriceListSeed
Passing price list IDs via PriceListSeed in an API call adds those price lists to the evaluation alongside public and customer/company lists. This is commonly used when additional context to the price evaluation is required, like showing outlet products, that can have special prices, or when a specific requirement is met for the customer that allows access to a specific price list.
See Using PriceListSeed for practical setup guidance.
Disregard public price lists
The When PriceListSeed is used in Norce API, disregard public price lists client setting (shortened in this document) changes behavior when price list IDs are passed via PriceListSeed. When enabled:
- Public price lists are ignored (when seed is provided instead) — only the seeded price lists compete.
- Products not on any of the seeded price lists are excluded from results.
This effectively turns PriceListSeed into a controlled context instead of an additive one.
If a customer or company has an exclusive price list, the Disregard public price lists setting has no effect — the exclusive price list always takes precedence. See below.
Exclusive price lists
A price list connected to a customer or company can be marked as exclusive. An exclusive price list overrides the normal best-price evaluation for both price and assortment.
The rules are:
- If a customer or company has at least one exclusive price list, only those exclusive lists are used — all other eligible price lists (public, PriceListSeed, non-exclusive customer/company lists) are ignored.
- Among multiple exclusive price lists belonging to the same customer or company, normal best-price logic applies.
- If both the customer and the company have exclusive price lists, the company's exclusive price lists win — the customer's are ignored.
- An exclusive price list always overrides Disregard public price lists as well.
Use exclusive price lists when a specific agreement must always apply, with no possibility of a campaign or public list undercutting or adding assortment outside the agreement.
API methods and how they differ
Two commonly used API methods behave differently from the standard best-price evaluation:
ListProductsByCustomer
Returns products connected to the logged-in customer's or company's price lists. The price returned is still the best price across all eligible lists, but the assortment is limited to only those products that appear on a customer- or company-connected price list.
If a customer price list contains one product from a category of ten,
ListProductsByCustomerreturns only that one product — but at the same best price thatListProductswould return.
This changes assortment, not the pricing logic.
ListProductsByPriceList
Returns products that exist on a specific price list (passed via PriceListSeed), and returns that price list's price — not the overall best price. This is the one method where the best-price rule does not apply.
If a price list has a price of 120 SEK but the best price across all lists is 100 SEK,
ListProductsByPriceListreturns 120 SEK.
This changes both assortment and price.
Summary
| Mechanism | Effect on price | Effect on assortment |
|---|---|---|
| Multiple public + customer/company lists | Best (lowest) price wins | Union of all assortments |
| PriceListSeed added | Seeded lists join the competition | Seeded assortment added |
| Disregard public (+ PriceListSeed active) | Only seeded lists compete | Only seeded assortment |
| Exclusive customer price list | Exclusive lists only | Exclusive assortment only |
| Exclusive company price list | Company exclusive wins over customer | Company exclusive assortment |
| Type priority configured | Highest-priority group evaluated first | No change |
| ListProductsByCustomer | Normal best-price | Customer/company lists only |
| ListProductsByPriceList | Specific price list's price | Specific price list's assortment |