Pricing and discounts
The Pricing module decides what customers pay for catalog items. Each product's sales price in the Product Catalog is its list price. On top of it you can add price books (price lists for a currency, a customer group or a season), discount rules (promotions, quantity breaks, deals for a group) and discount limits that cap the discounts people may type by hand. Opportunities, quotations, sales orders and invoices price their catalog lines here.
Before you begin
- The Pricing module requires the Product Catalog. Give your products a Sales price and its Currency there: that is the list price.
- Open the module by selecting Pricing in the sidebar (
/m/pricing), or search for "Pricing", "price book", "price list" or "discount" in the command palette. - To view prices, price books, discounts, customer groups and the Price check, you need
pricing.price.read(members have it by default). - To create or change price books, discounts, customer groups and discount limits, you need
pricing.manage(administrators by default). Only people with this permission see the Discount limits tab.
Key concepts
| Concept | What it is |
|---|---|
| List price | The product's (or variant's) Sales price in the Product Catalog. It applies only to sales in the same currency as that price. |
| Price book | A price list in one currency, for everyone or for one customer group, optionally valid for a period. It holds book prices for some items. |
| Book price | The price of one product, or one variant, in a price book. |
| Customer group | A segment of customers priced alike, such as wholesale or partners. A company or contact belongs to at most one group. |
| Discount rule | A percentage or an amount off each unit, applied after the book or list price. With dates it is a promotion; with a minimum quantity it is a quantity break. |
| Discount limit | The largest discount (in percent) the members of a role may type on a document line. |
The Pricing page has five tabs: Price books, Discounts, Customer groups, Discount limits and Price check.
How a price is chosen
For each catalog line on a document, Modulix works out the price in three steps.
1. The unit price. Modulix looks for the first applicable price book that has the item. A book is applicable when it is active, in the sale's currency, valid on the document's date, and for the customer's group or for everyone. The customer group's books are tried first, then the books for everyone; within each, the lowest Priority number comes first. If no applicable book has the item, the list price is used, if the catalog price is in the sale's currency. Otherwise there is no price and you must type one.
2. The discount. Modulix finds the discount rules that fit the line: active, valid on the document's date, for the customer's group or everyone, for the item's variant, product or category (or everything), and reached by the line's quantity. Rules giving an amount off apply only in their currency. If several rules fit, the lowest Priority number wins, then the largest discount. A discount never takes the price below zero.
3. What you type. On a quotation, order or invoice, you can type your own unit price or discount on a line. A discount you type is checked against your discount limit; a discount that comes from a discount rule is not.
The customer whose group counts is the document's customer company. Documents are dated by their issue date (quotations and invoices) or order date (orders); opportunities are priced for today.
Manage price books
Without price books, customers pay the catalog's list prices. Add books for other currencies, for customer groups or for seasons.
Create a price book
-
Open the Price books tab and select New price book.
-
Fill in the fields:
Field What to enter Name For example Wholesale CADorSpring 2026.Currency The currency of the book's prices. You cannot change it later. Customer group Optional. Leave empty for a book that applies to Everyone. Valid from, Valid until Optional. Outside these dates the book is not used. Valid until must be on or after Valid from. Priority A number from 0 to 1000 (default 100). Lower numbers are tried first. Active Inactive books are never used. Description Optional notes. -
Select Save, then select the book's name in the list to open it and add prices.
The list shows each book's currency, its customer group (or Everyone), its validity (or Always), its priority and how many prices it holds.
Add prices to a book
- Open the price book.
- Select Add a price.
- Under Item, choose a product, or a variant of a product sold in variants.
- Enter the Book price and select Save.
A book holds one price per item. Items without a price in the book keep their list price, or the price of the next applicable book.
The book's page lists each item with its List price, its Book price and how far it is Below list (in percent). The list price appears only when the catalog price is in the book's currency. Use Search by product or SKU to find an item.
To change a price, select the item and edit its Book price. To remove one, open it and select Delete; the item falls back to the next book's price, or its list price.
Import and export book prices
On a price book's page, use Import to add many prices from a CSV or Excel file, and Export to download them. The columns are Price book, Product and Book price.
Edit or delete a book
On the book's page, select Edit to change its details, or the delete button to delete it. Deleting a book deletes its prices too. Documents that were already priced keep their prices.
Set up discounts and promotions
-
Open the Discounts tab and select New discount.
-
Fill in the fields:
Field What to enter Name Shown on the price check, for example Spring promotionor10+ units.Discount Percentage off, or Amount off each unit. Value The percentage (up to 100) or the amount off each unit. Currency Required for an amount off. The rule applies only to sales in this currency. Product Optional. Limit the rule to one product. Variant Optional. Limit it to one variant (choose its Product too). Product category Optional. Limit it to products of one category. Products of its subcategories are not included. Customer group Optional. Leave empty for everyone. From quantity Optional. The line quantity from which the rule applies. Valid from, Valid until Optional. Set them to make a time-limited promotion. Priority A number from 0 to 1000 (default 100). Lower numbers win when several rules fit. Active Inactive rules are ignored. Description Optional notes. -
Select Save.
A rule with no product, variant or category applies to Everything. Rules with dates show a Promotion badge in the list.
Quantity breaks
To give larger discounts on larger quantities, create one rule per step with the same Priority, for example:
| Name | Discount | Value | From quantity | Priority |
|---|---|---|---|---|
| 10+ units | Percentage off | 5 | 10 | 100 |
| 50+ units | Percentage off | 12 | 50 | 100 |
A line of 60 units fits both rules. They have the same priority, so the larger discount (12 %) applies. A line of 20 units gets 5 %.
Use priority to make one rule win over others regardless of size. For example, give a contract discount for a customer group priority 10 so that it applies instead of a general promotion with priority 100, even when the promotion is larger.
What happens to rules when things are deleted
When the product, variant, category or customer group of a rule is deleted, the rule is turned off. Deleting a rule does not change documents that were already priced.
Manage customer groups
Create a group
- Open the Customer groups tab and select New customer group.
- Enter a Code (unique; saved in upper case) and a Name, and optionally a Description.
- Select Save.
Add customers to a group
From the group's page:
- Select the group's name in the list.
- In the Customers card, choose Company or Contact, then pick the customer in Add a customer.
To take a customer out, select Remove from the group (the cross) next to them.
From the customer's page in Contacts: the Pricing card shows the Customer group. If you have pricing.manage, choose another group, or No group, from the list.
A customer belongs to at most one group: adding them to a group moves them out of their previous one. When a customer is deleted, they leave their group; when two customers are merged, the kept record keeps its own group, or takes the other's if it had none.
Quotations, orders, invoices and opportunities are priced for the customer company, so set the group on the company.
Delete a group
Deleting a customer group takes its customers out of it. Its price books are kept, but become inactive and for everyone, so check them before you turn them on again. Its discount rules are turned off.
Set discount limits
Discount limits stop people from giving larger discounts than they should on document lines.
- Open the Discount limits tab. Every role of your organization is listed.
- In Largest discount, enter a percentage for a role. Leave it empty to use the Default.
- Select Save on that row.
How the limit of a person is worked out:
- A person with several roles gets the largest limit among them.
- A role without its own limit uses the organization's default: Administration → Settings, Pricing tab, Largest discount (percent) of roles without their own limit (100 by default).
- People with
pricing.discount.unlimited(Give any discount (no limit)) have no limit.
Because a role without its own limit uses the default, and the default is 100 %, a person with any such role can give any discount. To enforce limits, lower the default or set a limit on every role.
The limit applies to discounts you type in the Discount % of a line on opportunities, quotations, sales orders and invoices. The Edit lines dialog shows "Your largest discount: …". A larger discount is refused with "Your largest discount is … %". Discounts that come from discount rules, and the prices and discounts of an invoice made from an order, are not checked.
Check a price
Use Price check to see what a customer pays for an item on a day, and where the price comes from.
- Open the Price check tab.
- Under Customer, choose Company or Contact and pick the customer, or leave it empty for a customer without a group.
- Choose the Item, the Currency, the Day and the Quantity.
- Select Check.
The result shows:
- the List price and the Book price (with its percentage below list);
- the price used and its source: From price book "…", List price, or No price in this currency;
- the discount rule that applies, if any (Discount "…", amount per unit and percentage), and the Price after discount.
Next to the Check button you also see your own largest discount.
How pricing appears on documents
When you add a catalog item to a quotation, sales order or invoice and leave Unit price empty ("Empty: the price book's"), the line gets:
- Unit price: the book price or list price;
- Discount %: the discount of the best discount rule, as a percentage of the unit price (an amount off each unit is converted to a percentage).
You can type over either. Once a line is saved, its unit price and discount are kept when you edit the lines again, or when you change the customer, currency or date. To get the price book's price again, clear the line's Unit price and save.
Free-text lines are not priced by this module: you enter their price.
Taxes are worked out after the discount; see Taxes. For the documents themselves, see Quotations, Sales orders and Invoicing. Opportunity product lines are priced the same way; see Opportunities and pipelines.
Settings
| Setting | Where | Default | Effect |
|---|---|---|---|
| Largest discount (percent) of roles without their own limit | Administration → Settings, Pricing tab | 100 | The discount limit of roles that have no limit on the Discount limits tab. |
Permissions
| Permission key | What it allows | Granted by default to |
|---|---|---|
pricing.price.read | View price books, prices, discounts and customer groups; see customers' groups; use Price check. | Admin, Member |
pricing.manage | Create, change and delete price books, prices, discounts and customer groups; put customers in groups; set discount limits. | Admin |
pricing.discount.unlimited | Give any discount on document lines, whatever the limits. | Admin |
Troubleshooting
"No price in this currency: enter one." The item has no book price in an applicable book and its catalog price is in another currency. Add the item to a price book in the document's currency, or type a unit price.
A customer does not get their group's prices. Check that the group is set on the customer company (documents are priced for the company), that the book is active, in the document's currency and valid on the document's date, and that it holds a price for that exact item (a variant's price is separate from its product's).
Saving lines fails with "Your largest discount is … %". A discount on one of the lines is above your limit. If the discount came from a discount rule and you are editing the lines again, it now counts as typed by you: clear the line's Discount % to let the rule apply again, or ask someone with a higher limit.