Price Book Entry
A Price Book Entry in Salesforce, called PricebookEntry in the API, is the record that links one Product (Product2) to one Price Book (Pricebook2) and stores the price that the product carries inside that price book.
Definition
A Price Book Entry in Salesforce, called PricebookEntry in the API, is the record that links one Product (Product2) to one Price Book (Pricebook2) and stores the price that the product carries inside that price book. It is the row a sales team actually selects from when adding a product to an Opportunity, Quote, or Order. Without a Price Book Entry, a product has a definition but no sellable price.
Each entry holds a UnitPrice, an IsActive flag, a UseStandardPrice flag, a ProductCode copied from the parent product, and a CurrencyIsoCode in multi-currency orgs. Every product needs a Price Book Entry in the Standard Price Book before it can appear in any custom price book or on a transaction. Custom price books then add their own entries to offer different prices to different segments.
How Price Book Entries connect products, prices, and deals
The junction that makes a product sellable
A Product2 record on its own is just a catalog definition. It has a name, a code, and a family, but no price a rep can put on a deal. The Price Book Entry is the bridge that supplies that price. It is a junction record with two lookups, Pricebook2Id and Product2Id, plus a UnitPrice that says what the product costs inside that specific price book. This design lets one product live in many price books at different prices. A laptop might be 1,200 in the Standard Price Book, 1,000 in a Partner price book, and 960 in a Government price book. Each of those is a separate Price Book Entry pointing at the same Product2 record. The product is defined once and priced many times. Salesforce enforces a prerequisite here. A product must have an active entry in the Standard Price Book before you can create an entry for it in any custom price book. The Standard entry sets the baseline list price. Skip it and you hit the classic "No Standard Price Defined for This Product" error.
UnitPrice and the UseStandardPrice flag
Two fields decide what a Price Book Entry charges. UnitPrice is the price itself. UseStandardPrice is a Boolean that tells the entry whether to keep its own price or borrow the one from the Standard Price Book. For an entry in the Standard Price Book, UnitPrice is simply the standard price you set for the product. For an entry in a custom price book, the flag changes the behavior. When UseStandardPrice is TRUE, the entry inherits the price from the Standard Price Book entry, and you should not specify a UnitPrice yourself. When UseStandardPrice is FALSE, the entry uses its own custom UnitPrice, which is what you set for that segment. This matters most in the API and in data loads. If you try to insert a custom entry with UseStandardPrice set to TRUE and also pass a UnitPrice, the operation fails because the two instructions conflict. Set the flag to FALSE whenever the custom book needs a price that differs from the standard list price, then provide the number you want.
The Standard Price Book prerequisite chain
New admins trip over the ordering rule more than any other part of pricing. The Standard Price Book is a special, system-managed price book that holds the default list price for every product. It exists in every org, although it can be hidden until you make it active. The chain runs in one direction. First the Product2 record exists. Then a Price Book Entry in the Standard Price Book gives that product its baseline price and marks it as active. Only after that can you add entries to custom price books, whether those entries reuse the standard price or set their own. If you deactivate the Standard Price Book entry by setting IsActive to FALSE, the product effectively drops out of every custom book that points back to it through UseStandardPrice. That single flag becomes a master switch for retiring a product across price books. When you script product setup with Data Loader or Apex, load Standard entries in the first pass and custom entries in a second pass, or the custom inserts will fail.
Multi-currency adds a price per currency
Turning on multi-currency changes the shape of the data. Each Price Book Entry gains a CurrencyIsoCode, and a single product can have several entries in the same price book, one for each currency the company sells in. A product priced in USD, EUR, and GBP needs three Standard Price Book entries before those currencies are sellable. This is a frequent source of surprise duplicates. A SOQL query that pulls Price Book Entries for a product without filtering on CurrencyIsoCode returns every currency variant. In a formula, an Apex price lookup, or a report, that can silently pick the wrong row or inflate counts. Always add a CurrencyIsoCode filter, or a LIMIT with an ORDER BY, when you expect one price back. The currency on the entry also drives how amounts convert. An Opportunity in EUR pulls the EUR Price Book Entry, not the USD one. If the matching currency entry does not exist, the product cannot be added to that record. Keeping currency coverage complete across the Standard Price Book is part of routine pricing hygiene.
Line items snapshot the price, they do not track it
When a rep adds a product to an Opportunity, Quote, or Order, Salesforce copies values from the Price Book Entry into a new line item. An OpportunityLineItem, QuoteLineItem, or OrderItem is created with its own UnitPrice taken from the entry at that moment. From then on the two records are independent. This is deliberate. If you later raise the UnitPrice on the Price Book Entry, existing line items keep the old price. Open deals do not reprice automatically, and historical pipeline values stay stable for reporting. The trade-off is confusion when someone expects a price change to ripple into deals already in flight. To reprice an open Opportunity, you remove the line item and add it back so it copies the new entry price, or you edit the line item UnitPrice by hand. Some teams build a Flow to re-add lines in bulk. Salesforce CPQ takes a different route and offers explicit reprice actions, which is one reason high-volume quoting orgs move pricing logic into CPQ rather than relying on raw Price Book Entries.
Deleting, archiving, and deactivating entries
Price Book Entries are reference data, so Salesforce protects them once they are in use. You cannot delete an entry that any OpportunityLineItem, QuoteLineItem, or OrderItem references. The platform blocks the delete to avoid orphaning historical transactions. The same protection applies to deleting the parent product. The safe pattern is to deactivate rather than delete. Set IsActive to FALSE on the entry, and reps can no longer select that price on new records, while existing line items and reports keep working. Deactivation is reversible, deletion of in-use data is not allowed, so deactivation is almost always the right tool for retiring a price. Entries also carry an IsArchived state tied to product archiving. When a product is archived, its entries move out of active selection but remain attached to past deals. For bulk maintenance, query the entries you want to retire, flip IsActive in a single update, and verify against open Opportunities first. A quick check of which entries still back open pipeline saves you from disabling a price a rep is mid-quote on.
How to add a Price Book Entry
You create a Price Book Entry whenever you give a product a price inside a price book. In the UI you do this by adding a product to a price book. The Standard Price Book entry must exist first, then you can add the same product to any custom price book.
- Activate the Standard Price Book
From the App Launcher open Price Books, then open the Standard Price Book and make sure it is active. Every product needs a Standard entry before it can be priced anywhere else.
- Add the product to the Standard Price Book
Open the product record, go to the Price Books related list, click Add Standard Price, and enter the list price. This creates the Standard Price Book Entry that all other entries depend on.
- Create or open a custom Price Book
From Price Books, create a custom price book for the segment you are pricing, such as Partner or Government, or open an existing one.
- Add the product with its custom price
Click Add Products on the custom price book, select the product, then either keep Use Standard Price to inherit the list price or clear it and type a custom List Price for that book.
The price book the entry belongs to, set automatically when you add the product from a price book page.
The product being priced. It must already have an active Standard Price Book entry.
The price for the product in this book. Required unless Use Standard Price is selected, in which case the standard price is used.
Controls whether reps can select this price on new records. Set it true to make the entry usable.
- Adding a product to a custom price book fails with "No Standard Price Defined for This Product" if the Standard Price Book entry does not exist yet.
- Do not pass a UnitPrice when Use Standard Price is checked, the two settings conflict and the save is rejected.
- In multi-currency orgs you need one entry per currency, so add the product once for each currency you sell in.
- You cannot delete an entry that any Opportunity, Quote, or Order line item already uses, deactivate it instead.
Prefer this walkthrough as its own page? How to Price Book Entry in Salesforce, step by step
Trust & references
Cross-checked against the following references.
Straight from the source - Salesforce's reference material on Price Book Entry.
Hands-on resources to go deeper on Price Book Entry.
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.
Discussion
Loading discussion…