Pricing & Discounts
Price lists with quantity breaks, discount rules with explicit stacking control, and commission schemes.
Price Lists and Quantity Breaks
A price list is a set of item prices that applies in a context: one customer, a customer class or everyone; sales, purchases or both; one currency; a date range. Each item on it can have quantity breaks. The Sales console, quotes and orders price every line from these lists, and the price simulator shows exactly which list and which break were used.
Where to find it
Admin Panel → Sales:
- Pricing — the Pricing & Commission console: price lists and their item prices, rules, the price simulator and commission
Architect Panel → ERP - Trading & Analytics:
- Pricing — the same console for architects
- Price Lists — the lists as a datastore
Who can change prices
Holders of ERP: Sales create and edit price lists and rules. ERP: Reporting can open the console read-only. Finance and ERP administration can open it to pay commission but see prices read-only. The Company selector at the top decides which company's lists you are working on.
Creating a price list
- On the Price lists tab press New price list.
- Give it a Name.
- Direction: sale, purchase, or Both sale and purchase. Purchase lists price requisition and order lines and are what a PunchOut basket is compared with.
- Scope it: a Customer class (or Any class), or one Customer for a customer-specific list.
- Currency: blank prices any currency, but a list for one currency is clearer.
- Priority breaks ties between equally specific lists; higher wins. Set Valid from and Valid to for seasonal lists.
- Tick Prices include tax if the prices already include tax, and For every company in the group to share the list with every company.
- Save, then open the list's Prices to fill in the item grid.
Item prices and quantity breaks
Each grid row has Item, Unit, From quantity and either a Price or a Discount %. Several rows for the same item form the breaks: one from 1, one from 10, one from 100. The row with the highest From quantity that the line's quantity reaches is used. A row with a unit applies only to lines in that unit; Any unit applies to all. Press Save prices when done.
Which list wins
- Only lists in the right direction, currency and date range are considered.
- A list for this customer beats one for their class, which beats a general list.
- At the same level, a company's own list beats a group-wide one.
- Priority breaks any remaining tie.
Discount rules then adjust the list price (see Discount Rules and Stacking in this section).
Set the tax flag deliberately
A list marked as including tax and one marked as excluding it are both normal; a list marked wrongly puts every price out by the tax rate, uniformly enough to look like a pricing decision. Check it on every list.
A separate list per currency
Hold a euro list rather than relying on converted sterling prices. A separate list is a commercial decision made once; a converted price changes with the exchange rate every day.
What goes wrong
- A line has no price: no list covers that item, direction, currency and date. Run the price simulator with the same customer and date.
- The wrong list is used: a more specific list (a customer list, or the company's own) is winning. The simulator names the list.
- Quantities of 1 to 4 have no price: the breaks start at 5. Start every break structure at 1.
Worked example
A wholesaler has a general Trade list in sterling: a cable kit at 4.80 from 1, 4.35 from 24 and 3.95 from 240. Its largest customer has agreed 3.80 from 1 on a customer-specific list. An order for 30 kits from an ordinary trade customer takes 4.35; the same order from the large customer takes 3.80, because a customer list beats a class or general list. The simulator shows both, list by list.
Recommendations
- Use customer lists for contract prices rather than rules.
- Start breaks at 1 and leave no gaps.
- Use validity dates instead of editing prices back and forth.
- Prove changes in the simulator before the first order.
Discount Rules and Stacking
A price list gives the starting price; rules adjust it. A rule can take a percentage or an amount off, set a fixed price or give free units, on each line or on the whole document, under conditions you set. Whether later rules still apply is explicit on every rule, and the price simulator proves the result line by line before anything is sold.
Where to find it
Admin Panel → Sales:
- Pricing — the Rules tab to build rules, and the Price simulator tab to prove them
Architect Panel → ERP - Trading & Analytics:
- Pricing — the same console
- Price Rules — the rules as a datastore
Building a rule
- On the Rules tab press New rule (ERP: Sales only).
- Name it and choose Applies to: Each line or The whole document.
- Does: Percentage off, Amount off each unit, Fixed price, or Free units (n free per quantity bought). Enter the Value, and for free units the Per quantity bought (for example 1 free per 10).
- Currency: required for an amount off or a fixed price, so a rule never takes pounds off a dollar price. A percentage can apply to any currency.
- Under Only when (all must hold; none = always), add conditions as Field, Comparison and Value rows, such as customer class equals Trade or quantity at least 50.
- Set Priority, tick Stackable - later rules still apply only if it is meant to combine with others, and set Starts, Ends and an optional Budget cap.
- Press Save rule.
A whole-document rule can only take a percentage or an amount off; a fixed price or free units is a line rule. A percentage off is at most 100.
Order and stacking
Rules apply in priority order, highest first. A rule that is not stackable ends evaluation, which is how you say "this promotion instead of the contract discount, not on top of it". With percentages the order matters (10% then 5% is not 5% then 10% of the same base), so the order is a commercial decision.
Budget caps and usage
The rules list shows each rule's Budget and how many times it was Used on sales. A rule's usage and the amount it has given away count only when a sale is committed, that is when the invoice posts, never when a quote is priced or the simulator is run. Once the amount given away reaches the Budget cap, the rule stops applying. Rules outside their dates are marked Not current.
The price simulator
- Open Price simulator. Enter the Customer (or a Customer class), Currency, On date and Direction. Choose how to Express prices (as the list holds them, net of tax or including tax) and the Tax rate %.
- Add lines: Item reference, Quantity, Unit of measure, and optionally Unit cost (for margin).
- Press Price it.
The result shows each line's list, list price, discount per unit, unit price and margin, the whole-document rules, and for every line a step-by-step explanation of how it was priced. Simulating stores nothing and never counts against a rule's usage or budget; it calls the same pricing the sales documents use.
What goes wrong
- A rule never applies: its conditions are wrong, it is outside its dates, its currency does not match, or a higher-priority rule that is not stackable ends evaluation first. The simulator shows which.
- Two discounts compounded: both were stackable. Untick stackable on the one meant as an alternative.
- "An amount or a fixed price is money in ONE currency": choose the rule's currency.
Worked example
A retailer runs a 15% seasonal promotion at priority 100, not stackable, capped at 20,000, for six weeks. Contract discounts sit at priority 50 and are stackable. In the simulator a contract customer's order shows the promotion applied and the contract discount not applied, because the promotion ends evaluation. After a week, the rules list shows the promotion used on 140 sales; when 20,000 has been given away on posted invoices, it stops.
Recommendations
- Decide stacking on every rule; never leave it to chance.
- Cap every promotion.
- Simulate a qualifying and a non-qualifying order before a rule goes live.
- Let finished promotions lapse on their end date rather than deleting them; their usage is history.
Commission Schemes
A commission scheme says who earns commission, on what, at what rate or tier, and which accounts the cost goes to. Commission is accrued when a sales invoice posts, clawed back when it is credited, and paid by Finance, never by the person who earned it.
Where to find it
Admin Panel → Sales:
- Pricing — the Commission schemes and Commission earnings tabs
Architect Panel → ERP - Trading & Analytics:
- Pricing — the same console; its badge counts commission accrued and not yet paid
- Commission Schemes — the schemes as a datastore
Who does what
Holders of ERP: Sales set up schemes. Paying commission, and accruing commission a sale missed, is for ERP: Finance or ERP: Administration; nobody can mark their own earnings paid. ERP: Reporting can read both tabs.
Setting up a scheme
- On Commission schemes press New scheme and give it a Name.
- Payee (salesperson): one salesperson, or Everyone - a catch-all for the whole sales team. A payee's own scheme beats the catch-all. Commission always goes to the document's salesperson, which a new document takes from the customer's account manager.
- Pays on: Revenue (net sales value) or Margin (revenue less cost).
- For margin schemes, Lines with no unit cost: Refuse the document until every line is costed (the default, which can never over-pay), Leave uncosted lines out of the commission, or Count uncosted lines as pure margin (zero cost). Freight, licences and services often have no cost.
- Rate %, used when there are no tiers. Or add Tiers (optional), worked out on each sale's commission base: rows of From amount and Rate percent, and choose How tiers pay: Flat - the whole sale at the band it reaches, or Marginal - each band at its own rate.
- Expense account and Accrued commission account: with both set, accruals post to the ledger (debit expense, credit the accrual).
- Optionally limit it under Only for sales where (none = every sale), tick Enabled, and press Save scheme.
Accrual, clawback and payment
- Accrual: posting a sales invoice accrues commission to its salesperson under the matching scheme, dated with the sale, so the cost lands in the month it was earned.
- Reversal and clawback: posting a credit note reverses the commission on the credited lines. If that commission was already paid, a clawback entry is recorded against the paid earning.
- Payment: on Commission earnings, filter by Payee and Status (Accrued (unpaid), Paid, Reversed, Clawed back), tick earnings and press Mark selected paid.... Enter the Payment reference, Paid on and the Settlement account to post the settlement.
Sales with no commission
Below the earnings, Sales with no commission lists posted sales with a salesperson where nothing was accrued when they posted, why (no scheme matched, a margin scheme refused an uncosted line, accounts not set), and what would accrue now under today's schemes. Once the scheme is put right, Finance ticks them and presses Accrue commission on selected...; each accrues at its sale's date.
What goes wrong
- Margin commission is nothing on most invoices: the scheme refuses documents with an uncosted line. Choose how uncosted lines are treated, then catch up from Sales with no commission.
- Accruals are not in the ledger: one of the two accounts is blank.
- You cannot mark earnings paid: you are not Finance or ERP administration, or they are your own.
Worked example
A distributor pays its whole sales team 3% of an invoice's margin up to 5,000 and 5% on margin above that, as marginal tiers (from 0 at 3%, from 5,000 at 5%). Freight lines carry no cost, so the scheme leaves uncosted lines out of the commission. An invoice with two costed product lines and one freight line accrues commission on the product margin only, and the earning notes the excluded freight line. At month end Finance filters Accrued (unpaid), marks the month's earnings paid with the payroll reference, and posts the settlement.
Recommendations
- Pay on margin wherever your cost data supports it.
- Decide uncosted lines explicitly on every margin scheme.
- Set both accounts so accruals reach the ledger.
- Review Sales with no commission monthly; it finds what a misconfigured scheme missed.