Assigning and Selecting Price Books

When is a single price book appropriate?

At least one price book must be configured and active in order to add products to either an opportunity or a quote.

When are multiple price books appropriate?

The use of multiple price books will allow organizations to price products independently for different groups of customers.

Open Example

My organization sells a number of different products to individual consumers, enterprise, and SMB customers.  The standard sale price of each product for individuals is MSRP, while Enterprise and SMB customers are offered lower pricing on some products.

For instance, the product “Generator X90” has an MSRP of $90,000. However, Enterprise customers are expected to pay $60,000, while SMB customers pay $80,000.

Another product “Generator Accessory A” has an MSRP of $5,000. Enterprise customers pay $4,800, while SMB customers pay the MSRP of $5,000.

Generator X90 MSRP: $90,000.
Enterprise Price: $60,000. Discount from MSRP: 33%
SMB Pricing: $80,000. Discount from MSRP: 11%

Generator Accessory A MSRP: $5,000.
Enterprise Price: $4,800. Discount from MSRP: 4%
SMB Price: $5,000. Discount from MSRP: 0%

In this scenario I would create 3 price books:

  1. MSRP (using default prices)
  2. Enterprise
  3. SMB

How can you determine which price books are assigned to a user?

By default, the org-wide default setting for price book is “Use”.  This means that any user with read access to both the “Product” and “Price Book” object will be able to select any active price book.

How can I restrict visibility/use to certain price books?

1. Set the org-wide default for price book to “View Only” or “No Access”.

2. Share each individual price book with the appropriate role, group, and users.

How are price books selected?

If only a single price book is active, or the user only has “Use” permissions to a single price book, then that price book is automatically selected.

If the user has “Use” access to more than one active price book, then they must manually select the price book prior to adding products to an opportunity or a quote.

Important Note:

  • The products object does not use the standard record sharing model.  Access to manipulate products is controlled by object-level security (profile & permission sets).

34 Responses to “Assigning and Selecting Price Books”

  1. Naved July 28, 2017 at 12:38 pm #

    Hi John,

    Upon creation of new product if I don’t flag ACTIVE product checkbox and assign standard price, I am still able to add this product (surprisingly) on my opportunities while If I update any existing product and uncheck the ACTIVE checkbox this product can’t be add on oppy.

  2. alubin December 13, 2016 at 9:26 am #

    Is there a way to grant access to pricebook using the SOAP api?

  3. nk005347 October 11, 2016 at 10:15 am #

    Hi John, i so far did not come across any way to have SF used to do sales & service for recurring products like telephone subscriptions etc. Pricing also don’t seem to support recurring price type.
    Am I missing something or it is a different licence product that I need to go for.


    • JohnCoppedge October 12, 2016 at 5:04 pm #

      Typically a CPQ product is used to model more complex pricing and product modules (e.g. bundles)

  4. Rupesh Jha September 9, 2016 at 6:18 pm #

    While assigning Pricebook to product , will the standard pricebook be assigned automatically to product if no pricebook is selected.

    • JohnCoppedge September 14, 2016 at 12:51 am #

      No – you need to assign a price book. To auto assign one, you can use process builder.

  5. May 12, 2016 at 2:24 pm #

    Hi John,

    Thank you for this chapter.

    Did I understand it correctly that sharing when OWD is most restrictive:
    Price Book – can be done only by using the ‘sharing’ button (by user with Edit rights or Admin)
    Product – is done via permission set, profile

    Thank you,

    • JohnCoppedge May 12, 2016 at 8:43 pm #

      Both products and price books have object-level security controls at the profile/permission set. The big difference is that you can’t set record-level permission on products, and record-level permissions on the price book are only set through manual sharing (no sharing rules). Hope that clarifies!

  6. vijay24805 April 5, 2016 at 6:27 pm #

    Hi John,

    in your statment – The products object does not use the standard record sharing model. Access to manipulate products is controlled by object-level security (profile & permission sets).

    Does that mean Product does not have a share button as price books have? Products can be accessed only through profile settings?

    • molad April 26, 2016 at 5:50 pm #

      Yes Vijay. On the product detail view, there is no sharing button. So providing access to view/ update products has to be via profile or permission sets.

  7. March 14, 2016 at 5:23 pm #

    Hi John..
    Can we have duplicate products in price books?
    can we have same products with different currencies in single price book?

    • JohnCoppedge August 19, 2016 at 11:04 pm #

      To set up different prices, you would use different price books. E.g. USD Price Book, EUR Price Book

  8. December 9, 2015 at 5:09 pm #

    hi John, I have question like
    What if i have more then one price book …and i want to set each one with different security level as view only or use .

    Price book 1- No access
    Price book-2 -no access
    price book 3 – Use/Active

    Can i do that at OWD settings…i m owd only working for standard object …not on record?

    or what other privacy settings i need to do to achieve this ..?

  9. ancrabtree September 24, 2015 at 8:36 pm #

    Can you do multiple currencies in pricebooks?

  10. Rena Bennett-Dellwo April 28, 2015 at 9:23 pm #

    Throughout the discussion of using price books, quotes and opportunities are the only objects mentioned. We have a custom object “Parts” (the detail in a master-detail relationship) that tracks the use of parts that we use for repairs, then totals up the costs in a roll-up summary field to its parent object. It seems (based on the beginnings of experimentation) that we could create multiple lookups between Parts and Products objects to bring data from the Products object into the Parts object. Yes? Or am I missing/misunderstanding something? Thanks!

    • JohnCoppedge May 1, 2015 at 11:02 pm #

      Yes, I think so from your description – would need to understand your org better to say for sure.

      • Rena Bennett-Dellwo May 1, 2015 at 11:06 pm #

        Knowing that it might be possible makes helps. So, thanks again!

  11. moshtagh Foroohar Pak February 12, 2015 at 10:01 pm #

    Hello John,
    I am looking for the answer of this question. We have a price book entry for a product in standard price book and a different price book entry for the same product in a custom price book. If we delete the price book entry in the standard price book, what will happen to the price book entry in the custom price book?

    • JohnCoppedge February 13, 2015 at 1:09 am #

      The product has to have a standard price – that price is not associated with any price book. When create a price for a specific price book you can specify the price or use the standard price.

      [EDIT: The below was a mistake on my part. I was testing using a price book called “standard”; you cannot delete the standard price when a custom price exists]
      If you have a standard price book entry (using the standard price) and a custom price book using a specified price, there is no impact to the custom price book entry if you delete the standard price book entry (a standard price still exists, but is ignored). If that doesn’t make sense, I would test it out in a dev org- hard to explain but fairly straightforward.

      • December 15, 2016 at 4:43 am #

        Hi John,
        I tried deleting the standard price book entry for a product that is also associated to another custom price book. I got a warning below:

        Your attempt to delete XXXX Product (Standard Price Book) could not be completed because it is still associated with records in other price books. These records are shown below
        Click OK to continue and also delete the records shown or Cancel to return to the previous page.

        I think this means deleting a standard price book entry does have impact on custom price book entries for the same product, right?

        • JohnCoppedge January 20, 2017 at 10:47 pm #

          Hey jobzmpons – thanks for pointing this out! I made an edit to comment above; I was testing a price book called standard and deleted the wrong entry when I was testing. Sorry for the confusion!

  12. Evan Samuels December 28, 2014 at 1:16 pm #

    Let’s say I want to use products from multiple pricebooks for an opportunity. Will I need to add these products manually since I can’t use multiple products from different pricebooks?

    • JohnCoppedge December 29, 2014 at 1:55 pm #

      You cannot choose more than one price book – I’m not sure exactly how that scenario would play out but yes there would be some additional manual steps or perhaps customization that would need to occur.

  13. Flavia Mich December 13, 2014 at 9:43 pm #

    I can’t find the org-wide default settings. Where should I look?

  14. kalyani loganathan October 7, 2014 at 8:44 pm #

    Hi John

    The OWD on price book is ‘USE’ . users under a specific profile is unable to access the opportunity products when creating an opportunity and gets the error” insufficient privilege access to perform this operation” . We have multi-currency org. Products were created and added to pricebook in all the currencies and opportunity line item table were uploaded with the correct currency code.
    Don’t understand where i’m missing and try to fix this.

    Appreciate your help! Thank you very much in advance!

  15. Roger Grilo March 14, 2014 at 8:18 am #

    “Generator X90 MSRP: $90,000.
    Enterprise Price: $60,000. Discount from MSRP: 33%
    SMB Pricing: $80,000. Discount from MSRP: 11%”

    —> how do you set those discounts?

    • JohnCoppedge March 16, 2014 at 8:42 pm #

      The standard price (MSRP) is established on the product, then Enterprise and SMB prices are established via separate price books.

  16. Kaira Bergstra January 26, 2014 at 2:26 am #

    Any idea why Products don’t support Record Types? Seems logical, e.g. for product and service companies, to have different picklist values and layouts (e.g. service might have an associated geographical area).

    • JohnCoppedge January 26, 2014 at 4:58 pm #

      Thanks for pointing this out – products now support record types. However, the standard security policies do not apply (I believe this has to do with reducing processing time for security).

Leave a Reply