List Price
The List Price in Salesforce is the published price of a product as recorded on a Price Book Entry.
Definition
The List Price in Salesforce is the published price of a product as recorded on a Price Book Entry. Every product can sit in more than one price book, and each Price Book Entry stores the list price for that product in that specific book. When a user adds the product to an Opportunity, Quote, or Order, Salesforce defaults the line's price to this list price, which the user can then override with negotiated pricing.
The list price is the starting point for almost every pricing flow on the platform, from basic Sales Cloud opportunity lines to Salesforce CPQ quote lines. It lives on the PricebookEntry object, identified by the pairing of a Pricebook2 (the price book) and a Product2 (the product). In Salesforce CPQ the list price is the quote line's initial price, and CPQ pulls it from the product's list price entry in your price book before any discount logic runs.
How list price flows from price book to deal
Where the list price actually lives
The list price is not a field on the product. It sits on a separate record called a Price Book Entry, which is the link between one product and one price book. In the API this is the PricebookEntry object, and each record carries a UnitPrice (the list price), a Pricebook2Id, and a Product2Id. That three-way design is what lets the same product carry different list prices in different books. A laptop can be 1,200 in your direct price book and 1,050 in your reseller book, and both values are real list prices, just in different contexts. The entry also has an IsActive flag. If the entry is inactive, the product cannot be added to a line item from that book, even though the price value still exists on the record. This separation matters when you debug the classic "No standard price defined for this product" error. The product exists, but it has no active standard Price Book Entry, so nothing downstream can price it.
Standard price book versus custom price books
Salesforce creates the standard price book automatically when you start adding products. It holds the standard price for every product, and that standard price acts as the master reference. Custom price books are separate lists you build for different market segments, regions, or sales channels, and the prices in them are the custom list prices. The important rule is order of operations. A product needs an active entry in the standard price book before you can add it to any custom price book. So you set the standard price first, then layer custom list prices on top for each book that needs a different number. Each Price Book Entry in a custom book can also choose to inherit the standard price instead of setting its own. That is the UseStandardPrice option. When it is on, the entry tracks the standard price; when it is off, you type an independent list price for that book. Most orgs keep a single master standard price and override it only where a segment genuinely sells at a different rate.
How the price defaults onto an opportunity or quote
When a rep adds a product to an Opportunity, Salesforce reads the active price book on that opportunity, finds the matching Price Book Entry, and copies its list price onto the new line. That copied value becomes the line's Sales Price, and the list price stays on the line as a reference. If the rep types a lower number, Salesforce calculates the Discount field from the gap between list price and the entered price. This is why the list price is worth protecting. It is the denominator in every discount calculation, so a wrong list price quietly distorts every discount percentage in your reports. The opportunity can only use one price book at a time. Changing the price book on an opportunity with existing lines forces you to clear those lines first, because their prices came from the old book. Picking the right price book up front, ideally by automation based on the account's region or segment, saves reps from re-keying an entire line set later.
List price as the first step in CPQ pricing
Salesforce CPQ treats the list price as the quote line's initial price, then runs a defined sequence of fields to reach the final number. The order is List Unit Price, then Special Price, then Regular Unit Price, then Customer Unit Price, then Net Unit Price. Discount schedules and volume tiers shape the Regular price, discretionary discounts shape the Customer price, and contracted or partner adjustments feed the rest. Every step traces back to the list price CPQ pulled at the start. The product's Pricing Method field decides where that starting price comes from. The default is List, which uses the Price Book Entry. Cost prices from the product cost plus a markup, and Block prices from quantity ranges rather than a single per-unit figure. Subscription products can use Percent of Total, where the price is a share of other lines rather than a list value. Knowing which method is set tells you whether the Price Book Entry list price is even in play for a given product, which is the first thing to check when a quote line prices unexpectedly.
Multi-currency and the list price
In a multi-currency org, list price is set per currency, not converted on the fly. You create one Price Book Entry per currency for each product in each book, and you type the actual local list price into each one. The euro list price is not just the dollar price run through a conversion rate. It is an independently set number that can reflect local market conditions, rounding to clean price points, and regional positioning. Some teams keep only the corporate currency price and let the conversion engine derive the rest for forecasting, accepting that the derived numbers are approximate. Teams that sell seriously in multiple regions maintain real per-currency list prices so quotes show locally credible figures. Either way, the currency on the line item and the currency on the Price Book Entry must match for the price to default correctly. A missing entry for the line's currency produces the same "no price" symptom as a missing entry altogether, which trips up orgs that add a new currency without backfilling price book entries.
Reporting on list price versus what was sold
The most useful reporting built on list price is discount analysis. You compare the negotiated price on each line to the list price across opportunities, regions, products, and reps. Lines discounted far past list, say more than twenty percent off, surface as candidates for a sales-process review. The same reports flag reps who rarely discount and may be leaving room on the table, and products that always discount heavily, which often means the list price itself is set too high. Because Salesforce captures the list price on the line at the moment it is added, your historical reporting stays accurate even after someone updates the Price Book Entry later. That snapshot behavior is what makes retroactive discount analysis trustworthy. If the line only referenced a live lookup, every price book edit would rewrite history. Pair these reports with approval rules so the analysis is not purely after the fact. A common pattern fires manager approval when the discount from list crosses a threshold, which keeps governance on the deal without forcing a manual review of every line.
How to set a list price with a price book entry
You set a list price by creating a Price Book Entry that links a product to a price book. Start in the standard price book, then add custom price book entries for any book that sells at a different rate. The steps below cover the standard entry, which every product needs first.
- Open the product record
From the Products tab, open the product you want to price. The product must already exist as a Product2 record before it can carry any price.
- Add a standard price
In the Price Book Entries (or Standard Price) related list, choose Add to Price Book, select the Standard Price Book, and enter the standard list price. Save it active so the product becomes sellable.
- Add to a custom price book
Use Add to Price Book again, pick a custom price book, and either keep Use Standard Price on to inherit the master price or turn it off and type a book-specific list price.
- Confirm the entry is active
Check that the IsActive flag is set on each entry. An inactive entry stores a price but cannot be added to opportunity, quote, or order lines.
The Product2 record the price applies to. It must exist and be active before any price book entry can reference it.
The Pricebook2 the entry belongs to. The standard price book entry must exist before any custom price book entry can be created.
The published per-unit price stored on the entry. In a custom book this can inherit the standard price or be set independently.
Controls whether the entry can be used on line items. Only active entries default a price onto opportunities, quotes, and orders.
- You cannot add a product to a custom price book until it has an active entry in the standard price book first.
- In multi-currency orgs you need one price book entry per currency, or lines in a missing currency will not get a price.
- Changing the price book on an opportunity that already has line items forces you to clear those lines, because their prices came from the old book.
Prefer this walkthrough as its own page? How to List Price in Salesforce, step by step
Trust & references
Cross-checked against the following references.
Straight from the source - Salesforce's reference material on List Price.
Hands-on resources to go deeper on List Price.
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. On which standard object does the List Price for a product in a given price book actually live?
Q2. When a user adds a product to an Opportunity, how is the line's Unit Price initially populated?
Q3. Why do many orgs build approval rules that reference the discount from List Price?
Discussion
Loading discussion…