A customer asks for 99 parts at $10 each. The quote totals $990.
The customer adds one part. NetSuite selects the 100-piece rate of $9.40 and the quote falls to $940.
The extra part reduced revenue by $50.
That result can be correct. It can also reveal a pricing rule that nobody tested. NetSuite supports two different ways to apply a quantity break:
- All-units pricing applies the selected rate to every unit on the line.
- Marginal pricing applies each rate only to the quantity inside its bracket.
The difference affects revenue, margin and what the customer expects on the next order. It is only one of the decisions behind a NetSuite quantity price. The account also needs to know which transaction lines contribute to the break, which unit the quantity uses, which customer price applies and what happens when the buyer changes a release schedule.
This guide explains those decisions with quote calculations an industrial OEM can test.
Start with the four pricing decisions
Before you build a quantity schedule, write down four answers.
| Decision | Options | What it changes |
|---|---|---|
| Discount method | All units or marginal | Whether the break reprices the full quantity or only the next bracket |
| Quantity scope | Line, item, parent or schedule | Which lines NetSuite adds together |
| Quantity unit | Each, case, metre, kilogram or another unit | What the break number measures |
| Customer price | Base level, group, item-specific or absolute | Which price table supplies the rate |
Oracle documents the first three on the item record in Setting Up Item Pricing. The fourth depends on the customer and item pricing records.
A label such as “100+ price” answers none of them. A usable pricing rule says:
Apply the Northfield OEM price level to item family AX. Count base eaches across all matrix children on one estimate. Use marginal rates above 100 and 250 eaches.
That sentence gives an administrator enough information to configure the rule and gives a tester enough information to prove it.
Choose all-units or marginal pricing
NetSuite calls the setting Use Marginal Rates. If you leave it clear, the price for the reached break applies to all units. If you select it, the quantity in each bracket receives that bracket’s rate.
Assume this schedule:
| Quantity | Rate |
|---|---|
| 0 to 99 | $10.00 each |
| 100 to 249 | $9.40 each |
| 250 and above | $8.90 each |
In all-units mode, reaching 100 selects $9.40 for the full line. In Oracle’s marginal-rate model, the first 100 units remain in the base bracket and the lower rate applies to units above 100. The test cases below make that boundary visible.
All-units pricing
At 150 pieces, the 100-piece rate applies to all 150:
150 × $9.40 = $1,410
At the first break, the total falls:
| Quantity | Rate | Total | Change from prior row |
|---|---|---|---|
| 99 | $10.00 | $990.00 | |
| 100 | $9.40 | $940.00 | -$50.00 |
| 101 | $9.40 | $949.40 | +$9.40 |
The customer has a reason to buy 100 instead of 99. The company gives up $50 in revenue at that point. This may fit a deliberate commercial policy, but the pricing owner must see the discontinuity before approving the schedule.
The same problem appears at the second break:
| Quantity | Rate | Total |
|---|---|---|
| 249 | $9.40 | $2,340.60 |
| 250 | $8.90 | $2,225.00 |
The extra part cuts the total by $115.60.
Marginal pricing
With marginal rates, each bracket keeps its own rate. At a quantity of 150, NetSuite prices the first 100 at the base rate and the next 50 at the lower rate:
(100 × $10.00) + (50 × $9.40) = $1,470
The total no longer falls at the break. The blended rate at 150 becomes:
$1,470 ÷ 150 = $9.80 each
The customer-facing line may show a blended result even though the schedule calculated two brackets. Confirm how your transaction form and printed proposal show the rate. A buyer who sees only $9.80 may expect that rate to apply to every future unit.
Oracle’s Quantity Pricing Schedules uses the same distinction: marginal rates price each bracket separately; a schedule without marginal rates applies the reached discount to every unit sold.
Use economics to choose the method
Do not choose marginal pricing because the curve looks tidy. Match the method to the cost and commercial promise.
All-units pricing can make sense when crossing the break changes the whole production run. A larger batch may spread setup, programming, inspection and handling across more pieces. The lower rate can apply to the full batch.
Marginal pricing can make sense when extra volume creates incremental savings without changing the cost of earlier units. It also prevents the order total from falling at a threshold.
Model contribution at the quantities around each break:
| Quantity | Revenue | Material | Conversion and setup | Contribution | Contribution % |
|---|---|---|---|---|---|
| 99 | Test | Test | Test | Test | Test |
| 100 | Test | Test | Test | Test | Test |
| 101 | Test | Test | Test | Test | Test |
| 249 | Test | Test | Test | Test | Test |
| 250 | Test | Test | Test | Test | Test |
| 251 | Test | Test | Test | Test | Test |
Use current costs. A schedule built from an old setup assumption can protect revenue and still destroy margin.
Decide which quantities count together
The Calculate Quantity Discounts field controls the quantity NetSuite uses to select a break. Oracle provides four choices.
By line quantity
NetSuite evaluates each transaction line on its own.
An estimate has two lines for the same item:
- 60 pieces for the first release
- 40 pieces for the second release
Neither line reaches a 100-piece break. Both receive the lower-quantity rate.
Use line quantity when each line represents a separate commercial or production commitment. It avoids pooling quantities that the business will not make, buy or ship together.
By overall item quantity
NetSuite adds all lines for the same item on the transaction. The two lines above total 100, so both can receive the 100-piece treatment.
This method fits split delivery dates when the customer commits to the full quantity and the OEM treats the transaction as one order. It does not prove that one production run will cover both releases. Check inventory ownership, cancellation rights and manufacturing plans before the commercial policy assumes one batch.
By overall parent quantity
NetSuite adds items that share a parent. Oracle notes that this can support matrix items.
Example:
| Matrix child | Quantity |
|---|---|
| AX valve, 2 inch | 40 |
| AX valve, 3 inch | 35 |
| AX valve, 4 inch | 25 |
| Parent-family total | 100 |
The family reaches the 100-piece break even though no child does.
Use this only when the variants create the savings behind the discount. If the 4-inch valve needs different material, routing and test work, pooling it with the 2-inch valve may grant a discount that the cost model does not support.
By overall schedule quantity
NetSuite adds all transaction items that use the same quantity pricing schedule. The items do not need to share the same item record or parent.
This is the broadest scope. It can support a family-wide or basket discount across related parts. It can also join unrelated items because an administrator reused the same schedule for convenience.
Treat schedule membership as a commercial decision. Give each reusable schedule a clear purpose, owner and list of eligible item families.
Compare the four modes on one test quote
Use a transaction that makes the modes produce different answers:
| Line | Item | Parent | Schedule | Quantity |
|---|---|---|---|---|
| 1 | AX-2 | AX | OEM volume | 60 |
| 2 | AX-2 | AX | OEM volume | 40 |
| 3 | AX-4 | AX | OEM volume | 30 |
| 4 | Seal kit | Service parts | OEM volume | 20 |
Expected qualifying quantities:
| Mode | Quantity used for line 1 |
|---|---|
| Line | 60 |
| Overall item | 100 |
| Overall parent | 130 |
| Overall schedule | 150 |
Save the expected tier and extension for every line. This test catches an accidental scope change immediately.
Put the break on the correct unit
A break at 100 has no meaning until the unit is known.
It could mean:
- 100 each
- 100 boxes of 20
- 100 metres
- 100 kilograms
- 100 assemblies
NetSuite quantity pricing schedules can use a units type and unit. Oracle also states that an item can use only a schedule with a matching units type. That guard does not prove that the chosen unit fits the commercial rule.
Suppose the customer asks for ten boxes and the item defines one box as 12 each. A 100-each break should qualify because the physical quantity equals 120 each. Test the actual estimate form with BOX12 selected. Do not assume the break will behave as a spreadsheet does.
Record these fields in the pricing design:
| Field | Example |
|---|---|
| Customer unit | BOX12 |
| Conversion | 12 EA per BOX12 |
| Schedule unit | EA |
| Transaction quantity | 10 BOX12 |
| Pricing quantity | 120 EA |
| Selected break | 100 EA |
Our NetSuite units-of-measure guide covers fixed packs, price-per-thousand, variable-weight products, cut lengths and serialized items. Prove the conversion before you investigate the price schedule.
Know which customer price wins
Quantity is only one input to the rate. NetSuite can also select prices from customer, item and pricing-group records.
Oracle’s customer price-level instructions state that an item-specific customer price level overrides the customer’s general price level and its pricing-group level. Oracle’s absolute pricing instructions go further: an absolute customer-and-item price overrides other pricing and appears on every sales transaction for that customer and item.
For each quoted line, identify:
- customer
- subsidiary, when relevant
- transaction currency
- item
- item-specific customer price
- pricing group
- general customer price level
- quantity schedule and break
- any transaction-level custom rate
A rep can otherwise see the right quantity and the wrong rate without knowing which record supplied it.
Test price precedence with named customers
Use test customers that each exercise one route:
| Customer | Pricing setup | Expected source |
|---|---|---|
| Standard account | General price level | General customer level |
| Distributor | Pricing group for AX family | Group price level |
| Contract OEM | Item-specific level for AX-2 | Item-specific level |
| Fixed-price customer | Absolute AX-2 price | Absolute customer-item price |
Run the same quantity for all four. The rate should differ for the reason in the last column.
If your account uses Advanced Pricing, inspect its conflict preference as well. Oracle’s Advanced Pricing preference chooses the lowest applicable price by default when NetSuite finds multiple prices for an item; an administrator can change it to the highest. Test the current account setting instead of relying on the default.
Use schedules for shared logic, not hidden policy
Quantity pricing schedules let one template generate item prices across price levels. They reduce repeated setup, but they also spread mistakes quickly.
Oracle documents several limits and behaviors:
- A schedule supports a maximum of four non-zero quantity levels.
- The schedule can apply different discount percentages by price level when the account preference allows it.
- Selecting a schedule on an item sets the marginal-rate and quantity-calculation fields from the schedule.
- A vendor pricing schedule can support negotiated purchase prices, but one vendor can link to each schedule.
- An item import that uses a schedule should supply the quantity-zero price; NetSuite calculates the other quantities.
The four-level limit matters for companies with dense price books. Do not compress ten commercial breaks into four without checking the lost behavior. If the contract truly needs more tiers or another pricing model, document the gap before choosing a custom implementation.
Name schedules by commercial meaning, not by discount numbers that will change:
Good:
- OEM valve family volume
- North America service parts
- Distributor annual commitment
Weak:
- 5-10-15 discount
- Schedule 3
- New pricing
The owner should be able to answer why the items share a schedule and what event allows the customer to qualify.
Separate sales breaks from supplier breaks
NetSuite can use quantity schedules on both sales and purchase pricing. The tiers solve different problems.
A customer may order 300 assemblies in three monthly releases. Your supplier may price castings by each purchase order, while you grant the customer a rate based on the full order. The customer schedule cannot stand in for the supplier schedule.
Model each basis:
| Layer | Quantity commitment | Break scope | Rate source |
|---|---|---|---|
| Customer quote | 300 assemblies | Full accepted order | Sales quantity schedule |
| Production | 3 runs of 100 | Per run | Routing and setup model |
| Supplier | 100 castings per PO | Per purchase order | Vendor schedule or quote |
| Freight | 100 assemblies per shipment | Per shipment | Carrier or lane rate |
The sales rate must cover the actual cost pattern. If the buyer can cancel later releases, the company may never receive the volume that funded the discount.
Put the commitment in the proposal:
- total committed quantity
- release period
- minimum release
- cancellation or rescheduling rule
- inventory ownership
- repricing trigger
The pricing table cannot carry these terms by itself.
Reprice revisions before you compare totals
Industrial quotes change. A buyer may split lines, remove a release, change one configuration or move from 240 to 260 pieces.
When quantity changes, recalculate in this order:
- normalize the quantity and unit
- determine which lines count together
- select the customer price source
- select the quantity break
- calculate the rate and extension
- update cost and contribution
- compare the new quote with the prior revision
Do not copy the old rate onto the new quantity. A reduction from 260 to 240 may lose a break. An increase may cross a break that lowers the all-units total. A configuration change may move the line to another item, parent or schedule.
Show the cause of each price change:
| Revision difference | Old | New | Commercial effect |
|---|---|---|---|
| Quantity | 240 EA | 260 EA | Crosses 250 break |
| Rate | $9.40 | $8.90 | Schedule-selected rate falls |
| Extension | $2,256 | $2,314 | Total rises by $58 |
| Unit cost | $7.20 | $7.05 | Purchase break also reached |
| Contribution | $528 | $481 | Dollars fall despite higher volume |
That last row deserves review. Revenue rose, but the selling discount exceeded the cost saving.
How Bourne reviews a quantity-priced line
NetSuite should own the approved price levels, schedules, item assignments and customer-specific prices used on transactions. Bourne connects those rules to the customer request and the work around it.
Bourne can:
- extract quantities, units and release dates from an RFQ
- match each request to the correct NetSuite item
- convert customer units to the schedule unit
- identify the customer price source
- show which lines NetSuite counts together
- calculate all-units or marginal extensions
- compare quantity breaks with supplier, routing and freight costs
- flag a lower total at a threshold
- reprice every affected line when the buyer changes quantity or configuration
- route an exception to the pricing owner
- prepare the estimate after approval
- reuse the accepted basis during customer PO review
The reviewer should see both the result and the reason:
Northfield requested 150 AX-2 valves in two releases. NetSuite pools both lines by overall item quantity and selects the 100-piece break. The Northfield item-specific price level supplies the rates. With marginal pricing, the first 100 units price at $10 and the next 50 at $9.40. Quote extension: $1,470. Contribution: $390. Approve?
This gives sales, finance and operations the same calculation.
Test quantity pricing before production
Use a sandbox or a controlled test account. Include every transaction form, script, integration and printed document that handles the quote.
| Test | Expected result |
|---|---|
| One unit below each break | Previous tier and known extension |
| Exactly at each break | New tier starts at the intended quantity |
| One unit above each break | Same new tier with correct extension |
| All-units schedule | Full quantity receives selected rate |
| Marginal schedule | Each bracket receives its own rate |
| Same item on two lines | Result matches line or overall-item setting |
| Matrix children | Result matches parent-quantity setting |
| Different items on one schedule | Result matches schedule-quantity setting |
| Same physical quantity in eaches and cases | Same qualifying quantity and extension |
| Item-specific customer level | Overrides customer and group levels as designed |
| Absolute customer-item price | Overrides other price sources |
| Multiple applicable Advanced Pricing rules | Account preference selects the expected price |
| Alternate currency | Correct price table and rate |
| Quantity reduced on revision | Break and margin recalculate |
| Quantity increased on revision | Threshold effect appears in comparison |
| Split releases | Eligibility matches the commercial commitment |
| Customer PO changes quantity | Order review recalculates before entry |
| CSV update to scheduled item | Quantity-zero source price produces expected tiers |
| Printed quote | Unit, quantity, rate and extension remain clear |
For all-units schedules, calculate total revenue immediately below and at every break. For marginal schedules, calculate the blended rate at every break. Review contribution dollars as well as margin percentage.
Watch the exceptions that reveal bad rules
Track these measures by schedule, item family and customer:
- quotes with a manual rate override
- lines whose total falls when quantity rises
- quantity breaks changed during approval
- customer-specific prices that hide the expected quantity rate
- lines assigned to the wrong schedule
- quote revisions that retain an old rate
- split lines that qualify differently from the commercial agreement
- orders reduced after receiving a volume discount
- margin exceptions near a break
- customer POs that use a different quantity or unit
- credits tied to disputed price breaks
A high override rate usually points to bad master data, an unclear policy or a schedule that does not fit the deal. Review the reason before you train people to work around it.
Frequently asked questions
Why did the quote total fall when quantity increased?
An all-units schedule applies the reached rate to the full line. If the discount at the break exceeds the value of the added units, the total falls. Check the quantities immediately below and at every break. Use marginal pricing only if it matches the intended commercial policy.
What does Use Marginal Rates change?
It applies each rate to the quantity inside that bracket. Without it, the reached rate applies to all units. Test the displayed transaction rate and extension because the customer may see a blended rate.
Can two quote lines combine to reach a break?
Yes, if the item uses overall item, overall parent or overall schedule quantity. By line quantity evaluates each line separately. The correct setting depends on what the customer commits to and what creates the underlying cost saving.
Can different products combine for one discount?
Overall parent quantity can pool related matrix children. Overall schedule quantity can pool any items assigned to the same schedule. Use either only when the combined products support the discount economics.
Does customer pricing override the quantity schedule?
The result depends on the type of customer price. Oracle states that item-specific customer price levels override the general customer and pricing-group levels. An absolute customer-and-item price overrides other pricing. Test the exact customer, item, currency and quantity in your account.
Should a 100-piece break apply to ten cases of 12?
It should if the schedule and item units evaluate the equivalent 120 eaches. Test the actual transaction with the case unit. A correct conversion on paper does not prove that a custom form or integration sends the right fields.
Can a customer combine several releases to earn a discount?
Only if the commercial agreement treats the releases as one committed quantity. Define cancellation rights, release dates, inventory ownership and repricing before you grant the full-volume rate.
How many breaks can a NetSuite quantity pricing schedule have?
Oracle documents a maximum of four non-zero quantity levels on a schedule. If the price book needs more, document the required behavior and test another supported design or a controlled extension.
Should AI calculate a separate quantity price?
Use NetSuite’s maintained pricing records for the transaction rate. AI can extract the request, select the relevant records, explain the calculation, test thresholds and route exceptions. A second price table will drift.
What should happen when the buyer changes quantity after approval?
Recalculate the unit conversion, aggregation scope, break, rate, extension, cost and contribution. Compare the new result with the approved revision and send any policy or margin exception back to the pricing owner.
Further reading
Lean Enterprise Institute: production changeovers
The distinction between setup work that stops a machine and work done while it runs.
Bourne for manufacturing
See what Bourne could do for your quoting team.
Bring a customer request and the steps your team takes to quote it. We’ll discuss the application, integrations and approvals you need.