All resources
Sales

Price lists and contract rates: pricing when you make and distribute

A sweets maker sells the same 500 g box at the counter, to a distributor and to a hotel on a yearly contract: three prices for one item. Most SME systems hold one selling price and leave the rest to memory and overtyping. Here is how to model it properly, and what to watch for.

In short

  • Keep three layers: a standard selling price on the item, named price lists (price levels) with a rate per item, and contract rates for one customer and one item.
  • Resolve in a fixed order on every document: contract rate, then the customer's list, then the standard price. The rate stays editable; the order is what makes it predictable.
  • Treat MRP as a legal ceiling on packaged goods, not a price: no list or contract rate may exceed it.
  • Do not store 'which list priced this line' on the invoice. The invoice carries the rate that was charged; the lists are only how it was proposed.
  • Assign a default list so an unassigned customer still gets a sensible rate, and let the system re-price only lines you have not hand-edited when the customer on a form changes.

Once a manufacturer sells through more than one channel, one selling price per item stops working. The counter buys one box at a time, the distributor buys by the carton and expects 20% off, and a hotel chain negotiated a rate in April that is not on any list. If the item master holds a single price, the sales desk keeps a spreadsheet of "real" prices beside it, and every quotation is a copy-paste exercise with a margin error waiting inside.

What is a price list?

A price list, called a price level in Tally, is a named set of rates: Retail, Wholesale, Distributor, Export. Each list holds a rate for some or all items. An item that is not on a list falls back to its standard selling price, so you only enter the rates that differ. A customer is assigned to one list, and that list proposes the rate whenever the customer is picked on a quotation, order or invoice.

What is a contract rate?

A contract rate is narrower: a rate for one item for one customer, usually negotiated for a period. It sits above the price list. If the hotel chain pays ₹212 a box while every other wholesale customer pays ₹230, that ₹212 is a contract rate; the hotel still gets the wholesale rate for every item without a contract.

Three layers, one resolution order

The three pricing layers and the order they are resolved in
LayerLives onAnswers the question
Contract rateCustomer × itemDid we agree something specific with this buyer for this item?
Price list ratePrice list × item (customer is assigned a list)What does this class of buyer pay for this item?
Standard selling priceItem masterWhat does it cost if nothing else applies?

The order matters more than the data. On every quote, sales order and invoice, the system should look for a contract rate first, then the customer's list, then the item's standard price, and prefill the line with the first hit. Everyone on the sales desk can then predict the number before it appears, and an unexpected rate is a data problem to fix in a master, not a judgement call on each line.

Where MRP fits

For pre-packaged goods sold to consumers, the Legal Metrology (Packaged Commodities) Rules, 2011 require the maximum retail price to be printed on the pack and prohibit selling above it. That makes MRP a ceiling, not a price. The practical rule in your system: the standard selling price, every list rate and every contract rate must be at or below the item's MRP, and the software should refuse to save a rate above it. Wholesale and distributor rates will be well below MRP anyway; the check catches the typo that puts ₹2,300 where ₹230 belonged.

What to store on the invoice

Nothing about the list. The invoice line carries the rate that was actually charged, the same way it did before you had price lists. That rate may have come from a contract, a list, the standard price or an edit by the sales person; the GST return, the ledger and the customer's statement only care what was billed. Keeping the lists out of the document means turning the feature on or off later changes nothing you have already issued.

Four rules that keep it tidy

  1. One default list. Mark one list as the default for customers with no list of their own. New customers get a sensible rate from day one.
  2. Rates are proposals, not locks. The prefilled rate stays editable. A system that forbids edits pushes people back to the spreadsheet.
  3. Re-price only untouched lines. When the customer on a half-built order is changed, lines still at the rate the system filled in should move to the new customer's rate; a line someone typed over should stay. Otherwise a customer swap silently undoes negotiated edits.
  4. Review contract rates on a date. A contract rate without a review date becomes a permanent discount. Put the renewal in the calendar even if the software does not enforce validity dates.

Coming from Tally

Tally's price levels map one-to-one onto price lists: each level is a list, the price list under each level is the rate sheet, and the ledger's default price level is the customer's assigned list. What Tally does not have is the contract rate per customer per item; those were typically handled as a separate level per large customer, which does not scale past a handful. Quantity slabs (a lower rate above 100 units) are the one Tally feature not covered by this three-layer model; if you depend on them, check before you move.

How Dravyaa does it

In Dravyaa's sales module, price lists live under Masters once the feature is switched on in Inventory settings. Each list holds a rate per item with an MRP check on save, one list can be the default, and a customer is assigned a list on their master. Contract rates are entered on the customer. On every quotation, sales order and invoice the item search is priced for the chosen customer, so the line prefills with the resolved rate and shows where it came from; a customer change re-prices only untouched lines. The purchase side, point of sale (which prices at MRP) and accounting are unaffected.

Frequently asked questions

What is the difference between a price list and a contract rate?

A price list holds a rate per item for a class of customer, such as Wholesale, and many customers share it. A contract rate is a rate for one item for one specific customer, usually negotiated, and it overrides the customer's price list for that item only.

Can a selling price or list rate be higher than MRP?

Not for pre-packaged consumer goods. The Legal Metrology (Packaged Commodities) Rules, 2011 prohibit retail sale above the printed MRP, so a pricing system should refuse any selling price, list rate or contract rate above the item's MRP.

Should the invoice record which price list was used?

No. The invoice should carry the rate actually charged, exactly as it did before price lists existed. The list only proposes the rate; storing it on the document adds nothing to GST, accounting or the customer statement and makes later changes to lists harder.

How do Tally price levels map to price lists?

Each Tally price level is a price list, its price list entries are the per-item rates, and the ledger's default price level is the customer's assigned list. Per-customer contract rates have no direct Tally equivalent.

What happens to a half-filled order when the customer is changed?

Lines still at the rate the system prefilled should move to the new customer's rate; lines whose rate was typed over by the user should be left alone, so a customer swap never silently undoes a negotiated edit.

Sources

Facts checked as of October 23, 2026. Rules change: confirm current requirements with the official source or your tax adviser.

One item, every price, no spreadsheet

See price lists and contract rates prefill a quotation and an invoice for two different customers in a 20-minute walkthrough.

Keep reading

Book a Demo