* Sales - Pricing Items (for each unique customer)

Author: Reference Number: AA-01852 Created: 2012-02-28 09:38 Last Updated: 2021-10-05 09:42 0 Rating/ Voters

Overview of Pricing Tools

Pricing Tools - Explained

OneSource provides numerous ways to price items (or groups of items).  The following is a list of the various tools that can be used to automate how prices are calculated (when placed on Sales Transactions (Quotes, Sales Orders, Invoices, and Credit Memo's). 

  • Each item has a List / Retail Price field.  By default, all Sales Transactions use the price entered in the List / Retail Price field for the item (unless one of the pricing methods below over-ride that price).
  • Each item has a Matrix Pricing (TABLE) option. When enabled you can set up a 'matrix' of prices for that item.  Then you can then assign each customer to use one of the price levels on the matrix (using Default Pricing and/or Custom Pricing which is explained below)
  • Each customer record has a Default Pricing method (field) that can be set to over-ride the item List / Retail Price.  (This can be something like Discount 25%, or Markup 30%). 
  • Each customer record has a special Custom Pricing table (located on the Custom Pricing tab) that is the 'exception to the rule' -- meaning it over-rides the Default Pricing method you have selected for the customer.
    • NOTE: If you decide to use the Custom Pricing table you will quickly learn the flexibility of this tool.  However, it can be VERY time consuming to set up each customers Custom Pricing table. For this reason...OneSource also provides a way for you to create 1 or more Custom Pricing Templates (which can be set up with individual items and/or groups of items (called a Product Pricing Group)) and then quickly applied to new or existing customer records. 
  • (Also, this is a seldom used, but available option). Each transaction (Quote, Sales Order, etc) has an option to be linked to a Job.  For instance, suppose you have a Job/Project that needs to have special, one-time pricing that will apply to numerous Quotes, Sales Order, etc -- related to that Job/Project.  If this is the case, you can simply select that Job # (before you add items to the Quote or Sales Order) and the special prices you have set up for that job will be applied to that Quote or Sales Order (and Invoice and Credit Memo).   

Pricing Tools - Illustrated by Priority

The following diagram makes it easier to visualize how a price is determined (customer by customer) when items are added to a Sales Transaction :

Item List / Retail Pricing

  • Each product or service item in OneSource has a List / Retail Price field, which is located on the Inventory Management screen (on the Financial tab). 
  • The price entered in the List / Retail Price field is the price that will auto fill in the Price field on sales transactions.
  • Default Pricing, Custom Pricing, and Job Pricing (which are all explained in sections below) when setup for an item ALL over-ride the List / Retail Price when items are added to a sales transaction.


    When using Default Pricing and/or Custom Pricing, if you select any of the pricing methods that give any type of a discount, the List / Retail Price is the value from which the discount will be calculated. 

Item Price Matrix (table)

  • In addition to the List / Retail Price field, any item can have an unlimited number of additional prices using the item's Matrix Pricing table.
  • The Matrix Pricing table is visible on the Inventory Management screen, on the Financial tab. 
    • Note: If the Matrix Pricing table is not visible (on the Financial tab) make sure the Matrix Pricing option is enabled on the first visible tab on the screen.

Default Pricing (How to setup a default pricing calculation method for a customer)

Default Pricing provides a quick and easy way to price all items quoted or sold to a particular customer with one simple setting.

How to set the Default Pricing method for a customer 

  • On the Customers & Prospects screen, (on the Default Pricing tab) there is a field labeled Default Pricing.  The option you select here will determine the 'default' way items are priced for that customer.   

  The Default Pricing drop down list includes the following optional ways to price items quoted or sold to a particular customer based on:

  • a given Discount off of the List / Retail price, or 
  • a given Markup above cost (FIFO, LIFO, or average), or 
  • a given Multiplier of the List / Retail price, or
  • a given Price Code or Price Level (called Matrix by Code pricing),  or
  • a variable Price Code based on the quantity being sold to the customer (called Matrix by Qty),
  • a give Price Code + an extra discount (called Code + Discount), or
  • Markup by Divisor, or 
  • a Markup by Average Cost
  • Additional Notes
    • Each customer's Default Pricing setting is unique to that customer.
    • If no Default Pricing option is selected for a particular customer record, the List / Retail price (setup in each item record) will be used for all items added to a sales transaction (Quote, Sales Order, Invoice, and Credit Memo for that customer). 
    • Default Pricing is ignored (over-ridden) for items that have been given a different price level or price calculation with Custom Pricing or Job Pricing. 
    • Even if you use Custom Pricing to price your items, you may want to assign each customer a Default Pricing type as a 'catch all' (in case you are using Custom Pricing  and forget to place a certain item on the Custom Pricing grid or forget to put an item in a Pricing Group).

Custom Pricing (How to create custom price exceptions -- which override the Default Pricing for a customer) 

OneSource provides a way for you to create a list of categories called Product Pricing Groups to simplify and fine tune how items are priced.  This list is attached to a field called Product Pricing Group on the Financial tab of the Inventory Management form.  Each item can then be assigned a particular Product Pricing Group.  Each Product Pricing Group can be used on each Customer's Custom Pricing tab and/or on each Custom Pricing Template.

For example: Suppose you sell musical instruments. Now suppose you wanted to give a customer called Anaheim Music a 10% discount on all Upright Piano's, a 20% discount on all Grand Piano's, and a 25% discount on all Grand Piano's that have a finish of Polished Ebony.  To implement this example, you would:

  1.  Create a Product Pricing Group for each of the 3 groups needed called something like Piano-Upright, Piano-Grand, and Piano-Grand-Ebony
  2.  Look up each piano item that fits into one of these 3 groups for pricing purposes and assign a Product Pricing Group to the item
  3.  Assign each of the Product Pricing Groups to Anaheim Music's Custom Pricing tab.

Note: If you had several customers that you wanted to have these exact same pricing terms (or similar to them), you could setup one or more Custom Pricing Templates and then assign the appropriate Custom Pricing Template to each customer record.

The table of unique prices (for each customer) is stored on the Customers & Prospect screen on the Custom Pricing tab (as shown below).


Additional Notes

  • If an individual 'item' is on the a customer's Custom Pricing table AND that same item is also on the table again--as part of a Pricing Group--then the individual price will override the price of the item in the Pricing Group
  • If the same Pricing Group is on the Custom Pricing tab more than once, the group with the highest priority setting (in the Priority column) will take precedence).
  • The only method of pricing items that takes precedence over Custom Pricing is Job pricing (if a different item price has been entered on a Job--and the Job # has been entered on a Sales Transaction).

Pricing Templates (The tool that makes it easy to populate or update Custom Pricing tables)

A Pricing Template (as shown below) is simply a table of prices (individual items or groups of items) that you define that can be used as a template to quickly apply a given set of prices to new and existing customer records.   


Custom Pricing Templates serve the following general purposes:

Pricing Groups - (The tool that simplifies pricing groups of items on Custom Pricing tables and Custom Pricing templates)

How to create new Pricing Groups

  • Open the Inventory Management form.
  • Click on the Financial tab. 
  • Click on the magnifying glass button next to the Pricing Group field. 
  • After the tblPricingGroups table is displayed, enter a new Product Pricing Group name in the first available open field in the GroupName column (which is usually the field just to the right of the (AutoNumber) value in the PricingGroupID column.
  • Tip

    If feasible, create a separate Product Pricing Group for each type of item, and/or each price range of item.  This will help you adjust the discount or markup based on the appropriate profit margin to be as competitive as you need (or don't need) to be.

How to assign items to a particular Pricing Group

  • Open up the Inventory Management form.
  • If necessary, remove the filter to display all inventory items in your item list.
  • If desired, apply a filter to narrow down your search of the items displayed to a smaller list of items that the particular criteria of items that you would like to assign to a particular Product Pricing Group.
  • Click on the Financial tab.
  • If necessary, click on the button to rewind the record set to the first record in the record set.
  • Using the Product Pricing Group drop down list, select the appropriate product pricing group category that you would like to assign to the first item.
  • Click on the button to move to the next inventory item and repeat steps 6 and 7, as many times as necessary, until the process of assigning all items to a particular Product Pricing Group is complete.


    If you have several hundred (or several thousand) items, you may want to contact OneSource Support to help you perform this time consuming process using an update query.  

How to create Pricing Templates

  • Click on the Sales Menu. 
  • Select the Custom Pricing Templates option.
  • Click the New button. 
  • Enter a new Custom Pricing Name. 
  • Enter a new Description.
  • Add as many Product Pricing Groups and/or unique items as necessary.  (Note: Be sure to not select the Pricing Type of Specific if you have selected a Product Pricing Group). 
  • Depending on the Pricing Type selected, be sure to enter the additional variable if one exists (such as the amount of the discount, markup, etc)

How to assign (and update) Pricing Templates linked to customer records

How to apply a Pricing Template to a customer record (when adding a new customer)

  • When in the process of adding a new customer record (using the Add New Customer screen) click on the Sales Defaults tab. 
  • Select the Pricing Template of your choice from the Pricing Template drop down list.

How to apply a Pricing Template to a customer record (for an existing customer)

  • Find the appropriate customer record. 
  • Click on the Custom Pricing tab. 
  • Select the desired template from the Pricing Template drop down list. 
  • Select Add on the list to the right of the magnifying glass button.
  • Select Add Template from the next drop down list to the right.
  • Click the Go button.

How to modify a customers' Custom Pricing table

  • Find the appropriate customer record.
  • Click on the Custom Pricing tab. 
  • Click on the Edit button.
  • Make desired changes.

How to remove a Pricing Template from a customer

  • Find the appropriate customer record. 
  • Click on the Custom Pricing tab.
  • Select the desired template from the Pricing Template drop down list.
  • Select Remove on the list to the right of the magnifying glass button.
  • Select Remove All or Remove Template from the next drop down list to the right.
  • Click the Go button.

How to update the Custom Pricing table for all customers that are linked to a particular Pricing Template

  • Click on the Sales Menu.
  • Select the Pricing Templates option.
  • Using the Pricing Template Name drop down list, select the name of pricing template that you wish to change.
  • Click Edit and make the desired changes to the template.
  • Click on the button called Update All Customer Pricing Templates and select Yes when prompted.

Practical examples of how to make use of the various pricing tools in OneSource

Example 1 - Discount Pricing

Suppose you would like to give each customer a particular discount off of your list price.  Here is how to do that:

  1. Make sure you have set a List/Retail Price for each item.
  2. Lookup each customer > Click on the Pricing Defaults tab > in the Default Pricing field select Discount, then select the discount level you want that customer to receive on all sales transactions.

    Note: You may be able to import a list of default prices for all items and/or customers. Please contact support for help with this. 

Example 2 - Markup Pricing

Suppose you would like to give each customer a particular markup above each item's 'Default Supplier Cost'. Here is how to do that: 

  1. Make sure each item has a Default Supplier selected and a Default Supplier Cost.
  2. Lookup each customer > Click on the Pricing Defaults tab > in the Default Pricing field select Markup, then select the markup % (above your Default Supplier's cost) you want that customer to receive on all sales transactions.

    Note: You may be able to import a list of default prices for all items and/or customers. Please contact support for help with this. 

Example 3 - Matrix Pricing

Suppose you would like to determine several different 'price levels' -- for each part -- that don't really follow any given discount of your List/Retail price or any given markup % above your cost  For instance, you may want to have a Level 1 Price, Level 2 Price, Level 3 Price, etc.  Or, maybe you'd like to call the Prices Retail, Small Wholesale, Large Wholesale, etc.  You can define any name you wish for each price on your price matrix.  Now suppose you would like different customers to be assigned to different price levels. For instance, suppose you want ABC Customer to always get the Small Wholesale price you have set up for each item.  Here is how to do that: 

  1.  Make a list of price levels that will be consistent on many (if not all) of your items. In this level we will use price levels A, B, C, etc.
  2.  Look up each item and enable the Matrix Pricing option (on the Financial tab) and then enter price code A and then a Price for A, then price code B and then a Price for B, etc
  3. Lookup each customer > Click on the Pricing Defaults tab > in the Default Pricing field select Matrix by Code, then select the Price Code you would like that customer to receive on all sales transactions.

    : You may be able to import a list of default prices to all customers. Please contact support on how to go about doing that.

Example 4 - Combination of Discount Pricing + Various Discount Levels for different type products (on a Custom Pricing Template)

Suppose you like the idea of giving each customer their own 'Discount' level off all parts, but would also like to have certain types of parts priced with a higher (or lower) Discount--based on each customers sales volume.  Here is how to do that:

  1. First decide what 'types' of parts you would like to price with higher or lower discount levels.  (This will be the name of each 'product pricing group' you create).  For this example let's suppose you sell Auto Body Parts and that you would like to create these product pricing groups: 1--Bumpers, 2--Headlamps, 3--Grilles, 4--Cooling products, and 5--Misc lower priced items.  (See the section on 'Pricing Groups' above to learn how to create these 5 pricing groups).
  2. Next, if you would like to offer deeper discounts for higher volume customers, decide how many 'types' of customers you generally have and create a name for each type.  (These will be the names you will give each 'pricing template' you create later on in these instructions).  For this example let's suppose you had 3 different types of customers: 1--Low volume 'Walk-in' customers, 2--Medium volume 'Small Wholesale' customers, and 3--High volume 'Large Wholesale' customers.  (See the section above called How to Create Pricing Templates for instructions on how to create your own Pricing Templates.  Following our example here is how you will do that. 
    • 3a--Create a Template called Walk-In Customers.
    • 3b--Select Bumpers as the first Product Pricing Group.
    • 3c--Select Discount as the Default Pricing Type and then type the Discount % you would like your Walk-in Customers to receive for all Bumpers you sell them.
    • 3d--Repeat Steps 3b and 3c for the other 4 Product Pricing Groups.
    • 3e--To create the other 2 templates you can:
      • Repeat steps 3a through 3d above to create 2 more Templates for the other 2 types of Customers (Small Wholesale, and Large Wholesale)
      • Or... while still on the Walk-In Customers template (you have finished setting up) click: Tools > Copy Template > New > Then type the next template name, such as Small Wholesale > Then type the Description if desired > Then click Tools > Paste Template > Then update each discount for each Product Pricing Group to reflect the discount level you would like Small Wholesale customers to receive.   
  3. Finally, look up each customer and assign a Default Pricing method (following the steps in Example 1 above) and also one of the Pricing Templates (on each customers' Custom Pricing tab).

    : If you have 100's or 1000's of customers you may want to contact OneSource Support for help in making a few queries to update item List/Retail Prices, item Product Pricing Groups, customer Default Pricing levels, or customer Custom Pricing tables. 
    Note2: The 4 examples above are only 4 of 100's of pricing possibilities.  Using the various pricing tools outlined above you may be able find the right combination of the tools to create a near perfect pricing strategy for your company.  If you have pricing needs that you cannot figure out how to set up using the tools please contact OneSource Support for help. 

Example 5 - Markup by Average Cost (and how it finds the average cost)

In Example 2 above (Markup Pricing) the price is calculated by marking up the 'Default Supplier Cost' by a particular markup %.  This markup % is either hand type by you (or imported - using one of the OneSource importing tools) into the Default Supplier Cost field on the Inventory Management screen).  This may work fine for your needs. However, if your costs fluctuate and you would like the price to fluctuate with your costs, then the following pricing method (Markup by Average Cost) may be a better fit for your needs.

The way the 'cost' is determined using the Markup by Average Cost pricing method is by looking for the FIRST cost it can find following the priority list below.  For instance, if it finds a cost in the 1st method below it uses that costs and discontinues looking any further for a cost.  If it cannot find a cost it moves on to the next step, etc...until it finds a cost.  The following is the list of steps the code runs UNTIL a cost is found:

  • 1--Is there a cost entered in the 'Cost Used For Markup By Average Cost Pricing' on the Inventory Management screen for that item? If so, use that cost.  If not, then...
  • 2--Are there any items in stock?  If so then use the average cost of what is in stock.  If not then...
  • 3--Are we using the OPTION called:  [   ]  Calculate 'Special Order' supplier costs 1st (when calculating costs using PO History), if so proceed using the following logic below.  (If not continue on with Step 4 below)
    • Do we have any PO history for this item (within the last x number of days--depending on the value entered in the Company Setup)?
    • Get AVG PO SPECIAL ORDER SUPPLIER COST (CHECK TO SEE CSP 5.9.2 option is enabled. [   ]  Calculate 'Special Order' supplier costs 1st (when calculating costs using PO History) 
    • NOTE: Markup's are usually based on the Costs we usually plan to pay, such as $10 for fender that we buy in a container in Taiwan.  On the other hand, if we are OUT of stock of that item and have to pay $20 from a 'local' supplier then using the same markup may end up making the Price too high.  The following logic will help to solve the problem:
      • OneSource will first determine, using ALL PO history for x days, how much did I pay for the part (using a pure--weighted--average--meaning all container AND special order POs in the range)?  In this example let us suppose we paid, for all taiwan and local PO an avg of $12.77.
        • Weighted Average example: ON PO's I bought: 5 at $10, 6 at $11, 1 at $20, 1 at $30 = $12.77 each.
      • Then calculate what the price would be using the predefined markup.  In this case lets say 90%. So, 12.77 x 1.90 = $24.26
      • Then calculate how much we 'would' have made if we had items in stock (so $24.26 minus $12.77 = $11.49 (This is the PROFIT we would have made if we had a bunch of items in stock that we bought mainly from Taiwan--but in this case we have NONE in stock and need to buy from a Local supplier at a higher price..)
      • Now that we have the calculations above....Now check to see if we have a Special Order Supplier for the part and determine what the average cost would be for that part from that supplier using PO History for the previous X days (and then, alternatively, if there is no PO history for that item from that Spec Order Supplier, then look at the Special Order Supplier Cost field).
        • Assuming we found a cost of $20 from the Special Order Supplier then IF we marked it up 90% ($20 x 1.90 = $38) which may be TOO HIGH--especially if the costs of the items are closer to $100 or more...  That's a $13.74 difference. So, the 'happy medium' solution that allows the seller to make some profit and the buyer to pay less than $38 is this:  Take the Cost from the local supplier ($20) and add what we 'would have made in profit, if we had it from our normal supplier ($11.49), which would make the price $31.49 (or a dynamic markup of 63.5%, rounded up to 64%, which makes the final price: $32.80.
      • Then...If we cannot find an Average cost for a Special Order Supplier, then...
  • 4--Get the AVG PO Supplier Cost (for X days of PO History).  If none, then...
  • 5--Get cost from Def Supplier Cost, if none then...
  • 6--Discount the price X off Retail Price.  
  • 7--If no retail price then.  Price=0