Pricing that follows your rules, down to the last discount
Every quote line moves through the same price waterfall, base price, customer price list, pricing rules, manual discount, discount code, floor margin, and cost is never touched by any of it. Reps see the final number; managers see every step that produced it.
The problem
Most companies do not have one price. They have a list price, a negotiated price for each large account, a volume schedule, a regional adjustment, a seasonal promotion, and whatever the rep typed into the discount box to close the quarter. Those layers live in spreadsheets and email, and nobody can say with confidence what a customer should pay today.
The failure runs both ways. A rep misses the negotiated list, quotes too high, and loses the deal. Or a rep stacks a promotion on a contract price on a manual discount, sells below cost, and finance finds out at month end.
How pricing works on Neblex
Pricing on Neblex is a waterfall. Each quote line starts at a base price and passes through a fixed set of layers in a fixed order. Every step is stored on the line, so anyone with permission can see how the price was reached.
Base price is the list price from the part or product model in your master data. Base prices are entered in USD.
Price list override comes next. If the quote's customer has an active price list with an entry for that part or model, the entry replaces the base price. A price list is a named, dated, single-currency set of overrides with an optional floor margin. It is assigned to customers with a priority, and when a customer has several lists the platform picks the highest-priority one that is active and inside its dates. Reps never choose a price list.
Pricing rules apply conditional adjustments to that starting price. A rule is a percentage or a fixed amount, negative for a discount and positive for a surcharge, with zero or more qualifiers that must all be true for it to fire. There are 16 qualifier types: customer type, customer group, industry, country, state, and region; product type, product family, product line, and model name; part classification, part category, and part status; line quantity, line total, and quote currency. Seven operators cover equals, not equals, in a list, not in a list, at least, at most, and between.
Rules carry a priority from 0 to 9999, evaluated highest first, and rules with the same priority form a band. Inside a band, exclusive rules compete and the one with the largest adjustment wins; stackable rules all apply on top. A rule can also carry volume breaks: quantity ranges that each replace the base modifier, so one rule can express 5 percent off up to 49 units, 10 percent at 50 to 99, and 15 percent at 100 and above. Effective dates switch a rule on and off without anyone editing it.
Manual discount is what the rep enters on a line or in the quote footer, as a percentage or a fixed amount.
Discount code is a promotional code applied at the quote level or on a single line. Applying a code replaces any manual discount on the same target; the two never stack.
Floor margin is the last step, and it runs on the server. If the price list in force has a floor margin, net price is clamped so margin never falls below it. The floor price is cost divided by one minus the floor percentage, so a 20 percent floor on a part that costs $100 means the line cannot sell below $125. When a discount would breach the floor, it is capped at the largest value that lands exactly on the floor, and a warning is recorded on the quote naming the line. A floor of zero still floors at cost; leaving the floor empty turns enforcement off.
Cost is never overridden. Price lists override list price only. Rules, discounts, and codes adjust selling price only. Cost always comes from the part or model master record, and the only thing that ever touches it is currency conversion.
Bundle rules work across the whole quote. A rule has a trigger side and a target side, each built from up to eight dimensions: part, model, product type, product family, product line, part classification, part status, and part category. Require means the target must be present when the trigger is; exclude means it must not be; recommend shows a suggestion when the target is missing. Require and exclude violations block the save and roll back the whole update. Recommendations are dismissible and never block.
Multi-currency starts in quote settings, where an administrator lists the allowed currencies and each one's rate against USD. Each quote stores its own rate, taken from settings when the quote is created or its currency changes, and every line is repriced by the ratio if the rate moves. A currency that is not allowed, or has no rate, is rejected.
How you build it in Neblex
- Price list editor. Name, currency, status, floor margin, and effective dates at the top; a table of part and model overrides below. Add rows by searching for a part, or import a CSV with three columns, type, name, and listPrice. Import replaces every entry on the list in one transaction; export produces the same format.
- Customer assignment. Open a customer, go to the Price Lists tab, pick a list, and set a priority from 0 to 100. Higher numbers win when more than one list is active.
- Pricing rule editor. Set the modifier, scope, stacking mode, priority, and effective dates. Add qualifiers as WHEN conditions; the row reads back in plain language, such as WHEN Region = NAM THEN apply -30%. Add volume breaks as from, to, and modifier rows.
- Discount code editor. Enter the code, which is uppercased automatically and must be unique in your environment, the type and value, the scope, a currency for fixed amounts, and optional limits: minimum order value, maximum uses, and effective dates.
- Bundle rule editor. Pick require, exclude, or recommend, then add trigger and target dimensions with a pill picker. A rule can hold up to 20 dimensions and each dimension up to 100 values, and every part or model value must reference an active record when you save.
- Matt, the Neblex AI Assistant. Ask Matt how to express a pricing scenario and it explains which layer fits, or drafts a rule for you to review. Matt advises and drafts; it never saves or changes your pricing.
- Margin Analysis on the quote. The waterfall on every line shows which rules fired, in what order, what each did, and whether the floor was applied.
Pricing capabilities
- A six-step price waterfall stored on every quote line: base, price list, pricing rules, manual discount, discount code, floor margin
- Cost read from master data only, never overridden by any layer
- Dated, single-currency price lists with part and model overrides
- Per-customer assignment with priority, resolved automatically on every quote
- CSV import and export for price list entries, replaced in a single transaction
- 16 qualifier types with 7 operators
- Priority bands from 0 to 9999, with exclusive and stackable rules that can share a band
- Volume breaks by line quantity or line total that replace the base modifier per tier
- Line scope for quote lines and configuration scope for configured products
- A server-side floor margin clamp with a warning naming the affected line
- Discount codes at quote or line scope, with minimum order value, maximum uses, and effective dates
- Bundle rules that require, exclude, or recommend products across the quote, checked on every save
- Allowed currencies and rates set by an administrator, with the rate stored on each quote
- Cost, list price, and margin visibility gated by field permissions and enforced on the server
Worked example: a distributor order with a contract price and a promotion
The customer is a distributor with a negotiated price list. The part lists at $200 in master data and costs $100.
- The rep adds the part to a quote. The platform resolves the customer's highest-priority active price list. That list has an entry for the part at $180, so the line starts at $180 instead of $200. The list also carries a 20 percent floor margin.
- An enterprise discount fires. A stackable rule at priority 100 has one qualifier, customer type equals Distributor. It applies -10 percent, taking the line to $162.
- A volume break fires. A second rule at priority 50 has breaks: -5 percent from 1 to 49 units, -10 percent from 50 to 99, -15 percent from 100 up. The line has 60 units, so the 50 to 99 tier applies -5 percent. The line is now $153.90. The waterfall records both.
- The rep applies a promotional code. SUMMER25 is active, inside its dates, quote-scoped, and the quote total clears its minimum order value. It replaces the manual footer discount, and its usage counter goes up by one.
- The floor catches the last step. With the code applied, the net on this line would drop to $120 per unit, but the floor for a $100 cost at 20 percent margin is $125. The server caps the discount so the net lands exactly on $125, and a warning on the quote names the line and the floor percentage. Cost stays at $100 throughout.
- A bundle rule checks the whole quote. A require rule says any line in the Printers family must be accompanied by a toner part. The quote has the printer but no toner, so the save is rejected with the rule's message. The rep adds the toner and saves again.
- The manager reviews margin. On the Margin Analysis tab, the manager sees every step, including the floor clamp. A rep without the cost permission sees the same waterfall without cost or margin figures.
Frequently asked questions
What happens when two pricing rules both match a line?
Rules with the same priority form a band. Exclusive rules in a band compete, and only the one with the largest adjustment applies; stackable rules all apply. When a band has both, the exclusive winner goes first and every stackable rule layers on top. Bands run from highest priority to lowest.
Can a discount ever push a line below cost?
Not when a floor is in force. The server clamps the net price to the floor and caps the discount to whatever still lands on it. If no price list with a floor applies, a configuration session still warns when rules drop the price below cost, but the line is not blocked.
Do discount codes have an approval step or customer eligibility?
No. A discount code is a single flat adjustment, percentage or fixed, applied to the quote total or one line. There is no built-in approval workflow, no customer eligibility list, no per-customer usage cap, and no product scoping. For eligibility by customer, product, or quantity, use a pricing rule with qualifiers instead.
Can we quote in more than one currency?
Yes. An administrator lists the allowed currencies in quote settings and enters each one's rate against USD. Each quote stores the currency and rate it was priced with. A price list is single-currency, so a customer quoted in two currencies gets two price lists.
Who can see cost and margin?
Users whose field permissions include them. Cost, list price, and margin are each gated by a separate permission, and the server strips those fields from every response for users who lack them.
Bring one real product
Bring your price book and your worst over-discounted quote. We will rebuild both as price lists and rules against a live quote, floor included, in one session.