The margin analysis problem most manufacturers share
Revenue grew 8%. Gross margin fell 60 basis points. The team's explanation: cost pressure. But cost pressure from what, exactly? Raw material inflation? Labor inefficiency? Overhead absorption dropping as volume softened? Or was some of it actually a pricing problem, not a cost problem at all?
Most gross margin analysis stops at the income statement level: revenue minus COGS equals gross profit, expressed as a percentage. That number tells you what happened. It does not tell you why. And when the "why" is split across the cost side and the price side simultaneously, the net number actively obscures the diagnosis.
The core problem: a 60 bps margin decline driven entirely by material cost inflation requires a supplier negotiation. The same 60 bps driven by pricing compliance gaps requires a sales conversation. The net number is the same. The management response is completely different.
Gross margin has two sides, and both move independently
Gross margin per unit is the difference between what a customer pays and what it costs to produce. Both sides of that equation contain structure that most analyses ignore.
On the cost side, unit cost is not a single number. It is the sum of three distinct components, each driven by different factors and each requiring a different management response when it moves.
On the price side, realized price is not list price. It is list price after applying the customer's assigned price list, then applying any volume slope discounts earned by the order quantity. Two customers buying the same part on the same day can pay materially different prices, both legitimately, and the margin contribution from each will differ accordingly.
Your ERP records all of this. Every invoice, every cost roll, every price list assignment, every quantity break applied. The challenge is surfacing it in a form that supports management decisions rather than leaving it buried in transaction tables.
The cost side: labor, material, and burden
Manufacturing cost accounting separates unit cost into three components. Each responds to different pressures and signals a different problem when it rises.
The cost of raw materials and purchased components consumed to make one unit. Driven by commodity prices, supplier contracts, and yield rates. Can move fast and in large amounts when input costs spike.
The direct labor cost per unit: the time and wage cost of workers producing the part. Driven by wage rates, efficiency, rework, and staffing mix. Tends to move more slowly than material but reflects operational performance directly.
Allocated manufacturing overhead per unit: factory rent, utilities, equipment depreciation, indirect labor, maintenance. Fixed costs divided by production volume. When volume drops, burden per unit rises even if nothing else changes.
Material increases call for supplier negotiation or specification review. Labor increases call for efficiency analysis or workforce planning. Burden increases often resolve themselves as volume recovers, or signal a real capacity utilization problem. Lumping all three into "unit cost" makes it impossible to act on the right lever.
The price side: list price, price lists, and volume slopes
On the revenue side of gross margin, realized price is rarely equal to list price. Three layers of pricing structure sit between the list price in your item master and the number that appears on the invoice.
The base price for a part as set in the item master. The starting point before any customer-specific adjustments. Few customers outside of spot transactions actually pay list price, but it anchors the entire pricing structure and sets the ceiling for margin analysis.
A customer-specific or segment-specific pricing schedule that overrides list price. OEM customers, distribution partners, and key accounts typically operate on assigned price lists with pre-negotiated discounts. Two customers buying the same part will pay different prices if they are on different price lists.
Quantity break pricing that gives lower per-unit prices as order volume increases. A part priced at $248 at standard quantity might drop to $231 at 100 units and $209 at 500 units. The curve of that price decline is the slope. Steeper slopes reward volume buyers more aggressively.
A price list discount is a strategic choice. A volume slope applied to a large order is working as intended. But if realized price is falling because customers are consistently qualifying for the lowest volume break on small orders, that is a different problem entirely. Seeing each layer separately is the only way to distinguish intended margin from unintended erosion.
What complete margin anatomy looks like for a single part
Here is a worked example for a specialty valve assembly, showing how unit cost and realized price combine to produce the gross margin on a single part number.
minus $106.80 cost
The list price is $248. The customer pays $209. The $39 gap is not margin erosion, it is the intended pricing structure: an OEM price list agreement plus a volume break earned by the order size. Both are visible and expected. The gross margin at $209 realized price is 48.9%, which may be exactly on plan for this part's taxonomy tier.
Now consider what happens if the same customer places a smaller order next quarter, 80 units instead of 500, and misses the 500-unit volume break. Realized price moves from $209 to $226. The margin improves because the volume slope was not triggered. Without part-level price layer visibility, that looks like a pricing improvement. It is actually a volume change that accidentally improved margin, and the underlying demand signal is negative.
The trap: a volume slope not triggered can make margin look better while actually signaling weaker demand. Without decomposing the price side, that signal goes undetected until the revenue decline becomes obvious.
Extending PVM to gross margin: the full bridge
Price-volume-mix analysis is typically applied to revenue. The same framework extends to gross margin dollars, with one addition: cost effects join the bridge alongside price and mix. This produces a complete gross margin bridge that attributes every basis point of margin change to a specific driver.
The example below shows a manufacturer whose gross margin improved from 34.1% to 34.9% year over year, a net improvement of 80 basis points. The bridge shows that the result masked a significant headwind and several offsetting tailwinds.
The net result is an 80 bps improvement. But the bridge tells the real story: a $0.6M material cost headwind was more than offset by labor efficiency gains, better overhead absorption, partial price capture, and a favorable mix shift. Each driver points to a different team and a different set of next actions.
The material headwind is the most urgent question. Is it structural (a commodity that has repriced permanently) or temporary (a spot buy at elevated prices that normalizes next quarter)? That answer determines whether the pricing team needs to defend margin with a price increase or whether operations should wait it out.
Without the bridge, the only available read is "margin improved slightly." The full decomposition surfaces four separate business questions hidden inside that single number.
Your ERP already captures all of this
Every component in a gross margin bridge lives in your ERP. The cost records are captured in your standard cost rolls or cost layers. The price records are captured in the invoice and order tables, with price list and quantity break references included. The challenge is not collecting the data. It is joining, normalizing, and presenting it in a form that supports management decisions rather than requiring an analyst to rebuild the bridge from scratch each quarter.
The complexity is in joining these tables correctly and maintaining the join across periods as cost versions change, price lists are renegotiated, and quantity break structures are updated. In a single ERP, this is difficult but tractable. Across multiple ERPs with different schemas, it requires a purpose-built data layer.
How Marquis Pricing IQ surfaces both sides
Pricing IQ connects directly to your ERP and tracks both unit cost components (labor, material, burden) and the price layers applied to each transaction (list, price list, volume slope). The gross margin bridge updates each period as invoices post and cost rolls refresh.