Northfield receives a quote for 40 AX-2 valves at £98 each. Its buyer replies:
Our contract price is £92.
The rep opens the customer record and sees the OEM price level. The AX-2 item shows £104 at base price. A pricing group shows £98. An item-specific level shows £94. An absolute customer-item price shows £92.
Which one should the quote use?
For this customer and item, Oracle says the absolute price wins. It overrides other prices and price levels. The disputed line is wrong if the estimate shows £98.
That answer depends on the exact customer, item, unit, quantity, currency and transaction. Change any one and NetSuite may select another rate. A reliable investigation therefore starts with the quote line and traces backward. It does not start with a general price-list screenshot.
The standard NetSuite customer-price order
NetSuite’s Multiple Pricing feature supports several layers. The layers let a company share broad price levels while making narrower agreements for a product family, one item or one customer-item pair.
For the common customer-pricing setup, inspect the sources from most specific to most general:
| Price source | Stored on | Example | Relationship to broader pricing |
|---|---|---|---|
| Absolute customer-item price | Customer, Item Pricing, Custom | Northfield pays £92 for AX-2 | Oracle says it overrides all other pricing |
| Item-specific price level | Customer, Item Pricing | Northfield gets Contract OEM level for AX-2 | Overrides customer and group price levels |
| Pricing-group level | Customer, Group Pricing | Northfield gets Distributor level for AX valves | Overrides the general customer level, but not item pricing |
| General customer price level | Customer financial settings | Northfield gets OEM Standard | Applies when a more specific assignment does not |
| Base item price | Item pricing matrix | AX-2 base price £104 | Fallback when no customer assignment supplies another level |
Oracle documents the precedence in three places:
- Setting Up Price Levels for Customers states that item price levels override the general customer level and pricing-group levels.
- Creating Pricing Groups states that a group level overrides the customer’s price level, but not item pricing.
- Absolute Pricing for Customers states that an absolute customer-item price overrides all other prices.
That hierarchy explains the source NetSuite should use. It does not prove that the source still matches the commercial agreement. A contract can expire while its absolute price remains on the customer record.
Reconstruct one disputed quote line
Do not compare rates until all quote inputs agree.
For the Northfield line, collect:
| Field | Quote value |
|---|---|
| Customer record | Northfield Engineering Ltd |
| Parent account | Northfield Group |
| Subsidiary | Bourne UK |
| Item | AX-2 valve |
| Customer part | NF-AX-200 |
| Quantity | 40 |
| Sale unit | Each |
| Transaction currency | GBP |
| Estimate date | 20 September 2026 |
| Estimate form | Industrial OEM estimate |
| Displayed price level | Distributor |
| Displayed rate | £98 |
| Manual-rate flag | No |
Then collect every candidate price in the same currency, unit and quantity:
| Candidate | Rate | Applies? | Reason |
|---|---|---|---|
| Base item price | £104 | Yes | GBP price exists |
| OEM Standard customer level | £100 | Yes | General customer setting |
| AX pricing group | £98 | Yes | Customer has group level |
| AX-2 item-specific level | £94 | Yes | Customer has item assignment |
| Absolute AX-2 price | £92 | Yes | Customer-item custom price |
The expected rate is £92. If the estimate shows £98, investigate why the absolute price did not reach the line:
- The transaction uses a different customer or subcustomer.
- The item does not match AX-2.
- The absolute price exists in another currency.
- An integration sends an explicit price level or custom rate.
- A script changes the line after NetSuite sources it.
- The quote came from a connected application with its own price table.
- The user copied an old estimate whose line retained an earlier rate.
The line itself gives the starting evidence. Rebuilding a new estimate with the same six commercial inputs helps separate bad master data from a stale or overridden transaction.
Confirm the buying account
An industrial account may contain a parent company, plants, legal entities, projects and ship-to records. The buyer may call all of them “Northfield,” but NetSuite prices the customer selected on the transaction.
Oracle’s subcustomer documentation says a subcustomer has the same fields and functions as a customer. It can act as the customer on a sales transaction and can use a different subsidiary from its parent in OneWorld.
Treat each customer record as its own pricing subject unless your configuration explicitly copies or assigns shared rules. Do not assume the parent’s item price applies to a plant subcustomer.
Check:
- legal buying entity on the RFQ
- customer internal ID
- parent and subcustomer path
- subsidiary access
- transaction currency
- project or job selected on the estimate
- agreement party and covered sites
If the contract names Northfield Group but the purchase order will come from Northfield Engineering Ltd, confirm whether the agreement covers that entity. This is a commercial decision before it becomes a NetSuite field.
Confirm the item, unit and quantity
Customer pricing is specific to the selected item. A near-duplicate item, matrix child, configured assembly or replacement part can carry a different pricing group and price matrix.
Resolve the line through the item record:
- NetSuite internal ID
- customer part number
- manufacturer part number
- revision or configuration
- sale unit
- pricing group
- price level matrix
- quantity pricing schedule
If the customer requests 40 cases and the price table uses eaches, normalize the unit before comparing rates. A £92 case rate and £92 each rate are different agreements even when the number matches.
Quantity also matters. The selected customer level can point to a pricing matrix that changes at volume breaks. Our NetSuite quantity-pricing guide explains marginal rates, all-units rates and the line, item, parent and schedule aggregation modes.
The investigation should state:
The customer requested 40 EA. The absolute price applies to AX-2 in GBP at £92 per EA. No quantity break changes that rate at 40 EA.
That sentence is stronger evidence than “the customer gets contract pricing.”
Distinguish a price level from an absolute price
A price level points to a row in the item’s pricing matrix. Change that matrix price and every customer assigned to the level can receive the new rate.
An absolute price stores a fixed unit price for one customer, item and currency. On the customer record, select Custom on the Item Pricing subtab and enter the unit price. Oracle says that value applies to every transaction or price list for that customer and item.
Use a price level when many customers follow the same pricing policy:
- Distributor
- OEM Standard
- OEM Strategic
- Service Partner
Use an absolute price when the agreement truly names one fixed customer-item rate:
- Northfield AX-2 at £92 each
- Westport seal kit at €420 per kit
- Atlas retrofit assembly at $18,750 each
Absolute prices are powerful and easy to forget. The native record does not explain the contract, expiration, minimum quantity or covered configuration. Store those facts in controlled agreement data and audit absolute prices against it.
Do not turn every negotiation into master data
A one-time concession belongs on the transaction with approval and a reason. A recurring contractual rate belongs in maintained pricing.
Oracle’s estimate instructions let a user choose Custom in the line’s Price Level column and enter a unit price for that transaction. The line rate does not become a customer master price.
Use transaction-level Custom for cases such as:
- one bid with approved project economics
- a recovery offer after a service failure
- a launch order with a written concession
- a negotiated close that should not affect later orders
Record:
- approved rate
- normal selected rate
- reason
- approver
- agreement or opportunity
- expiration or one-order scope
- margin result
Without that evidence, the next reviewer cannot tell a valid concession from a typed-over rate.
Treat currency as part of the price key
A price without a currency is incomplete.
With Multiple Currencies, NetSuite can store item prices by currency and price level. Oracle’s foreign-currency item pricing guide says NetSuite uses the entered foreign-currency item price when one exists. If the item lacks that foreign-currency price, standard item pricing can convert the base-currency price into the customer’s foreign currency.
The transaction has its own rules:
- The customer’s primary currency appears by default.
- A user can choose another currency from the customer’s currencies before saving.
- The estimate-to-order-to-invoice path retains the original transaction currency.
- The currency cannot change after the user saves the transaction.
- If a user enters a custom line price and then changes currency before saving, NetSuite does not convert that custom rate.
Oracle documents those behaviors in Currency on Customer Transactions.
That custom-rate exception can create a serious error:
- Rep enters a custom price of 100 on a USD estimate.
- Rep changes the transaction to GBP.
- The custom line remains 100.
- The proposal now shows £100, not the converted GBP value.
Test currency changes with and without a custom rate. Block or warn on a currency change after manual pricing.
Advanced Pricing has stricter currency selection
If the account uses Advanced Pricing and several prices qualify, currency availability can remove candidates before the tie-breaker runs.
Oracle’s Advanced Pricing conflict guide describes this order:
- customer-specific pricing
- price-rule configuration
- the account preference for highest or lowest price
In a multi-currency account, NetSuite first needs a qualifying price in the transaction currency. If only one candidate has that currency, it wins without a highest-or-lowest comparison. If no transaction-currency price exists, NetSuite checks the subsidiary primary currency; if it still finds none, the item price stays blank.
Create a test matrix for every selling currency:
| Price source | USD | GBP | EUR |
|---|---|---|---|
| Base | Test | Test | Test |
| OEM Standard | Test | Test | Test |
| AX group | Test | Test | Test |
| AX-2 item level | Test | Test | Test |
| Absolute customer item | Test | Test | Test |
A missing cell can change which rule wins.
Add Advanced Pricing rules deliberately
Advanced Pricing adds date-specific price rules that can target selected customers, customer groups, items and item collections. Oracle documents the fields in Creating Price Rules.
A rule can express:
From 1 October through 31 December, apply Year-End OEM price level to members of the Strategic Accounts group for the AX item collection.
That is useful for a controlled campaign or contract period. It also adds another source that can qualify for the same line.
For every rule, record:
- business owner
- selected price level
- customer or group scope
- item or collection scope
- start and end date
- currencies populated at that price level
- expected conflict behavior
- approval reference
Test the day before the start, the start date, the end date and the next day. Test a customer inside and outside the group. Test one eligible and one ineligible item.
Do not use the lowest-price preference as a substitute for rule design. A tie-breaker resolves overlapping candidates; it does not explain why both qualified.
Handle contract dates without stale rates
Basic absolute customer pricing has no contract-expiration logic in the price itself. If a £92 agreement ends on 30 September and nobody changes the customer record, the rate can continue into October.
Use a controlled renewal process:
- store the governing agreement and rate table
- assign an owner
- record effective and expiration dates
- alert before expiration
- prepare the approved replacement
- verify the new rate on a test estimate
- remove or replace the old customer pricing
- sample the first production quote after the change
The Effective Date Pricing SuiteApp can schedule certain price changes. Oracle’s process guide describes start dates, optional end dates and automatic reversion through a background script. It supports item, category, customer and customer-group update types, subject to its feature and record limits.
This is an execution mechanism, not the contract source. Monitor failed updates and overlapping records. Oracle notes that an update created for today after the scheduled script ran will not take effect automatically that day unless the script runs again.
Compare the quote with the agreement
Once you identify the NetSuite source, compare it with the commercial authority.
| Agreement fact | NetSuite fact | Result |
|---|---|---|
| Northfield Engineering Ltd | Customer internal ID 1042 | Match |
| AX-2 valve, standard trim | Item 6190, standard trim | Match |
| £92 per EA | Absolute item price £92 per EA | Match |
| 1 Jan to 30 Sep 2026 | No expiration on absolute price | Needs date control |
| Minimum 25 EA per release | Quote 40 EA | Match |
| UK purchases in GBP | Estimate currency GBP | Match |
| Excludes engineered trim | Item configuration standard | Match |
The selected rate can be technically correct in NetSuite and commercially expired. It can also be commercially valid but absent from NetSuite. Those cases need different fixes.
- Correct record, expired agreement: stop automatic use and seek a renewal or exception.
- Wrong record, valid agreement: correct the maintained price through the authorized owner.
- One-time concession: approve a transaction rate without changing recurring pricing.
- Unclear scope: hold the quote line and ask the agreement owner.
Check imports, integrations and copied quotes
Pricing can diverge outside the native estimate form.
Imports and APIs
An integration may send:
- an item and quantity, allowing NetSuite to source the rate
- a price level
- a custom rate
- a complete line amount
These are not equivalent. If NetSuite should own pricing, send the commercial inputs and read the saved result. If an external application owns an approved price, mark the line as an explicit override with its source.
Log the request and the saved response. A successful API call proves that NetSuite accepted the transaction, not that the price source matched policy.
Copied estimates
A copied estimate can carry line values from an old transaction. Re-source or validate the rate when the date, quantity, currency, item configuration or customer agreement changes.
Customer portals and ecommerce
Oracle says the Online Price can override other prices for online orders. A portal may also calculate externally and send Custom pricing. Compare the native estimate and channel order with the same customer, item, unit, quantity and currency.
Printed price lists
Oracle’s pricing search guide can generate customer price lists that include item, quantity range, sale unit and unit price. With Multiple Currencies, results use the customer’s currency.
Use the price list as a test artifact. A file exported months ago is not proof of the current rate.
How Bourne traces a customer price
NetSuite should own the customer, item, price levels, absolute prices, quantity matrices and approved rules used on the estimate. Bourne connects those records to the incoming request, agreement and approval.
Bourne can:
- identify the buying entity from the RFQ and CRM account
- match the customer part to the NetSuite item
- normalize quantity and unit
- select the transaction currency
- retrieve every applicable price source
- show why one source wins
- compare the selected rate with the agreement and effective dates
- identify a copied, custom or integration-supplied rate
- calculate quantity breaks and contribution
- block expired, missing or conflicting prices
- prepare an approval with the exact difference
- write the approved estimate without creating a second price table
For Northfield, the reviewer should see:
NetSuite selected the absolute customer-item price of £92 per EA for AX-2. It overrides the £94 item level, £98 group level and £100 general customer level. The agreement covers Northfield Engineering Ltd, standard trim and releases of at least 25 EA through 30 September. This quote requests 40 EA on 20 September. Approve the line at £92?
That explanation lets the rep answer the buyer and lets finance audit the rate.
Test the complete pricing path
Run these cases in a sandbox or controlled account:
| Test | Expected result |
|---|---|
| Customer with only a general price level | General level supplies the rate |
| Customer with eligible pricing group | Group level overrides general level |
| Customer with item-specific level | Item level overrides group and general levels |
| Customer with absolute item price | Absolute price overrides other price levels |
| Parent account and plant subcustomer | Each uses its own configured pricing |
| Wrong but similar item | Workflow detects the item difference |
| Same item in another sale unit | Rate basis and extension remain correct |
| Quantity immediately below and at a break | Expected tier and total |
| GBP price present | Stored GBP price applies |
| GBP price missing | Documented fallback or blank result appears |
| Custom line followed by currency change | Workflow catches unconverted custom rate |
| Advanced rule start date | Rule begins on the expected date |
| Advanced rule end date | Rule stops on the expected date |
| Two Advanced rules qualify | Rule configuration and tie-breaker select the expected price |
| Expired absolute price | Workflow blocks or routes an exception |
| One-time transaction concession | Master pricing remains unchanged |
| Copied estimate | Current pricing validation runs |
| API-created estimate | Saved rate and price source match policy |
| Customer price-list export | Unit, quantity range, currency and rate match the estimate |
| Estimate converted to sales order | Accepted currency and line price remain intact |
Record the expected price source with the expected number. Two wrong paths can produce the same rate today and diverge tomorrow.
Measure customer-pricing quality
Track:
- quote lines with Custom pricing
- manual price-level changes
- price disputes by customer and item family
- lines that used expired agreement terms
- absolute prices without an agreement owner or expiration
- Advanced Pricing rule conflicts
- missing currency prices
- rates changed after quantity or unit correction
- copied quotes with stale rates
- integration-created lines that bypassed native sourcing
- margin exceptions caused by customer pricing
- order acknowledgements whose rate differs from the accepted quote
- credits tied to incorrect contract pricing
Review the rate of exceptions, then inspect the largest causes. A few expired absolute prices can create most of the disputes.
Frequently asked questions
Why does an item use a different rate from the customer’s general price level?
Check absolute customer-item pricing, item-specific price levels and pricing groups. The more specific source may override the general level. Then check quantity, currency, Advanced Pricing rules and a transaction-level custom rate.
What is the difference between item pricing and group pricing?
Item pricing assigns a price level or absolute price to one customer-item pair. Group pricing assigns a customer price level to a group of items that share a pricing group. Oracle says item pricing overrides group pricing.
Does an absolute customer price override quantity pricing?
Oracle says an absolute customer-item price overrides all other pricing. Test the exact item, currency, unit and quantity in your account, especially if scripts or Advanced Pricing also affect the line.
Can a child account use its parent’s price?
A subcustomer is a full customer record and can appear on a sales transaction. Use an explicit assignment or controlled pricing rule for shared terms. Do not infer the parent’s price from the hierarchy alone.
What happens when the transaction currency changes?
Before the first save, NetSuite recalculates many currency amounts. It does not convert a custom line price. After save, the transaction currency cannot change. Test currency before the quote leaves review.
Should every strategic customer get a separate price level?
Use a shared level when several customers follow the same calculation. Use item-specific or absolute pricing for real customer-item exceptions. Thousands of near-duplicate levels make updates and audits harder.
How should we handle a price that expires?
Record the contract end date outside the bare absolute-price field, assign an owner and schedule or prepare the approved change. Test the day before, the last valid day and the next day. Monitor any scheduled update job.
Can AI choose the selling price?
AI can retrieve the applicable records, trace their precedence, compare the result with the agreement and prepare an exception. Your pricing policy should define when it can post the supported rate and when a person must approve a change.
Should Bourne maintain another customer price table?
No. NetSuite should remain the transaction pricing source. Bourne should read the maintained records, connect them to customer evidence and write the approved result back to the estimate.
Further reading
BLS: price adjustment guide
Selecting and specifying price indexes for commercial adjustments.
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.