# Gross Margin Bridge

Decompose the year-over-year change in gross profit into five clean drivers - Volume, Price, Mix, Cost, FX - across a five-SKU portfolio. PY and CY side-by-side P&L by SKU, per-SKU and portfolio decomposition, and a one-page Summary waterfall that reconciles PY GP to CY GP within a tolerance check.

- Canonical: https://finamodel.com/templates/gross-margin-bridge
- Excel download: https://finamodel.com/templates/gross-margin-bridge.xlsx
- Category: Corporate Finance
- Model type: Operating model
- Difficulty: Intermediate
- Audiences: CFOs & FP&A, Founders & operators, CFOs, FP&A teams, Controllers, Divisional finance leads
- Tags: gross margin, variance bridge, price volume mix, fx impact, fp&a

## Overview

A gross margin bridge decomposes the year-over-year change in gross profit (GP) into five clean drivers - Volume, Price, Mix, Cost, and FX - across a five-SKU portfolio (Premium, Standard, Economy, Service, Bundle). The workbook is organised as Assumptions, Period_View, Bridge_Calc, and Summary, with every effect formula sized on a SKU-by-SKU basis and a portfolio total that reconciles PY GP to CY GP to the cent through a tolerance-based check.

The Assumptions sheet holds per-SKU inputs for PY and CY: units, price per unit, cost per unit, plus a CY FX translation factor for revenue. The Period_View sheet computes PY and CY revenue, COGS, gross profit, and gross margin % by SKU, applies the FX factor to CY revenue, and sums to a portfolio total column. The Bridge_Calc sheet computes a portfolio PY average gross profit per unit as the helper for the standard volume / mix split, then derives five effects per SKU: Volume = (CY_units − PY_units) × portfolio PY avg GP per unit, Price = (CY_price − PY_price) × CY_units, Mix = (CY_units − PY_units) × (SKU PY GP per unit − portfolio PY avg), Cost = (PY_cost − CY_cost) × CY_units, and FX = CY_units × CY_price × (CY_FX − 1).

The Summary sheet walks PY GP through the five drivers in order to a bridge total, anchors that against CY GP actual from Period_View, and prints a residual along with a check status that fires "Reconciles" when the absolute residual is within the user-set tolerance (default $1). CFOs, FP&A leaders, controllers, and divisional finance teams use this template for quarterly earnings walks, board packs, and 10-K MD&A narrative - flexing CY units, price, cost, and FX factor by SKU and watching the bridge reconcile in real time.

## What's included

- Per-SKU PY and CY assumptions: units, price, cost, plus a CY FX translation factor
- Period_View with PY and CY revenue, COGS, gross profit, and gross margin % by SKU
- Bridge_Calc with Volume, Price, Mix, Cost, FX effects by SKU and portfolio
- Standard volume / mix split using the portfolio PY average gross profit per unit
- Summary walk from PY GP to CY GP with a tolerance-based reconciliation check
- Seed data for five SKUs (Premium, Standard, Economy, Service, Bundle) so the report works out of the box
- Bridge_Calc with Volume, Price, Mix, Cost, FX effects by SKU and a portfolio total
- Summary waterfall from PY GP to CY GP with a tolerance-based reconciliation check

## Gross Margin Bridge: How the Model Works

A gross margin bridge explains the year-over-year change in gross profit by isolating the impact of volume, price, mix, cost, and FX. This template provides a structured framework across a twelve-SKU portfolio, helping CFOs and FP&A teams present a clear reconciliation from prior-year to current-year gross profit.

### Operating Drivers Behind the Bridge

The model decomposes the change in gross profit into six drivers: volume, price, mix, cost, FX price, and FX cost. Volume reflects the effect of selling more or fewer units, holding the prior-year product mix constant.

- Price captures the impact of changes in selling prices. Mix measures how shifts in the relative sales of higher- versus lower-margin SKUs affect gross profit.

- Cost reflects changes in unit costs, positively when costs fall. FX price and FX cost isolate currency translation effects on revenue and costs, allowing separate treatment when they differ.

### Calculation Flow and Conventions

The bridge follows a standard convention where price and cost effects are calculated using current-year units, which cleanly allocates cross-effects and avoids residual amounts. Volume and mix are based on the portfolio's prior-year average gross profit per unit, with mix capturing the difference between SKU-level and portfolio averages.

- This ensures that the sum of volume and mix effects equals the total unit change multiplied by each SKU's prior-year gross profit per unit. FX effects are split into price and cost components, each formula adjusting for the change in translation rates.

- The result is a decomposition that exactly reconciles to the total gross profit change within a defined tolerance.

### Outputs and Reporting Views

The model produces three key outputs: a side-by-side period view showing prior-year and current-year P&L by SKU, a detailed bridge calculation sheet with per-SKU driver effects and channel rollups, and a one-page summary waterfall that walks from prior-year gross profit to current-year gross profit.

- The summary includes a reconciliation check that compares the bridge total to the actual current-year gross profit, with a status indicator that flags any residual beyond tolerance. A channel rollup distributes each driver across DTC, Wholesale, and Marketplace based on SKU-level mix.

- A tornado sensitivity strip shows the impact of scaling each driver by plus or minus ten percent.

### Practical Use for Financial Analysis

This template is designed for CFOs, controllers, and FP&A leads who need to explain gross margin movements to a board or earnings audience. It supports three current-year scenarios—Base, Upside, and Downside—selectable from the cover sheet, with all current-year inputs linked to the active scenario.

- The model is a gross-profit-only walk; it excludes balance sheet, cash flow, and operating expenses. Each SKU includes a reporting currency, channel mix, and a free-text rationale field.

- The reconciliation check and conditional formatting flag reconciliation differences and common errors such as sign flips or missing FX factors.

## Built for the earnings walk

When the question is "why did gross margin move year over year", a bridge is the cleanest answer. This template lays out the five reportable drivers and reconciles to CY GP to the cent.

## Standard volume / mix split

Volume holds the SKU mix at PY proportions; Mix isolates the residual from selling more or fewer of higher-margin SKUs. The portfolio PY average GP per unit is the helper that makes the split clean.

## Audit-friendly mechanics

Every input is in column C of Assumptions, every formula is one operation, and the Summary has a tolerance check so a sign-error or misreference shows up immediately.

## Built for the earnings walk

When the question is "why did gross margin move year over year", a bridge is the cleanest answer. This template lays out the five reportable drivers and reconciles to CY GP to the cent.

## Standard volume / mix split

Volume holds the SKU mix at PY proportions; Mix isolates the residual from selling more or fewer of higher-margin SKUs. The portfolio PY average GP per unit is the helper that makes the split clean.

## Audit-friendly mechanics

Every input is in column C of Assumptions, every formula is one operation, and the Summary has a tolerance check so a sign-error or misreference shows up immediately.

## Workbook structure

### Cover

Workbook overview, sheet legend, and tab-colour key for navigation.

- Title and scope framing
- Sheet-by-sheet purpose summary
- Tab-colour legend

### Assumptions

Every driver in one sheet: PY and CY per-SKU inputs plus a reconciliation tolerance.

- Prior period units, price, and cost per SKU
- Current period units, price, and cost per SKU
- Current period FX factor per SKU (1.0 = no FX effect)
- Reconciliation tolerance for the Summary check

### Period_View

PY and CY revenue, COGS, gross profit, and gross margin % by SKU with a portfolio total column.

- PY revenue = PY_units × PY_price
- CY revenue = CY_units × CY_price × CY_FX
- PY and CY COGS and gross profit
- PY and CY gross margin %
- GP delta and GP delta % per SKU and portfolio

### Bridge_Calc

Five-driver decomposition by SKU and portfolio.

- Portfolio helpers: PY GP total, PY units total, PY avg GP per unit
- Volume effect = (CY_units − PY_units) × portfolio PY avg GP per unit
- Price effect = (CY_price − PY_price) × CY_units
- Mix effect = (CY_units − PY_units) × (SKU PY GP per unit − portfolio PY avg)
- Cost effect = (PY_cost − CY_cost) × CY_units (positive = favourable)
- FX effect = CY_units × CY_price × (CY_FX − 1)
- Total effect per SKU and portfolio total

### Summary

PY GP walked to CY GP through the five drivers with a tolerance-based reconciliation.

- PY gross profit anchor
- + Volume, + Price, + Mix, + Cost, + FX in order
- CY gross profit (bridge) = sum of PY GP and five drivers
- CY gross profit actual from Period_View
- Residual = bridge − actual; Check status against tolerance
- GP delta $ and GP delta % for the headline movement

### Cover

Workbook overview, sheet legend, and tab-colour key for navigation.

- Title and scope framing
- Sheet-by-sheet purpose summary
- Tab-colour legend

### Assumptions

Every driver in one sheet: PY and CY per-SKU inputs plus a reconciliation tolerance.

- Prior period units, price, and cost per SKU
- Current period units, price, and cost per SKU
- Current period FX factor per SKU (1.0 = no FX effect)
- Reconciliation tolerance for the Summary check

### Period_View

PY and CY revenue, COGS, gross profit, and gross margin % by SKU with a portfolio total column.

- PY revenue = PY_units × PY_price
- CY revenue = CY_units × CY_price × CY_FX
- PY and CY COGS and gross profit
- PY and CY gross margin %
- GP delta and GP delta % per SKU and portfolio

### Bridge_Calc

Five-driver decomposition by SKU and portfolio.

- Portfolio helpers: PY GP total, PY units total, PY avg GP per unit
- Volume effect = (CY_units − PY_units) × portfolio PY avg GP per unit
- Price effect = (CY_price − PY_price) × CY_units
- Mix effect = (CY_units − PY_units) × (SKU PY GP per unit − portfolio PY avg)
- Cost effect = (PY_cost − CY_cost) × CY_units (positive = favourable)
- FX effect = CY_units × CY_price × (CY_FX − 1)
- Total effect per SKU and portfolio total

### Summary

PY GP walked to CY GP through the five drivers with a tolerance-based reconciliation.

- PY gross profit anchor
- + Volume, + Price, + Mix, + Cost, + FX in order
- CY gross profit (bridge) = sum of PY GP and five drivers
- CY gross profit actual from Period_View
- Residual = bridge − actual; Check status against tolerance
- GP delta $ and GP delta % for the headline movement

## Features

- **Five-driver decomposition:** Volume, Price, Mix, Cost, and FX effects per SKU and rolled to a portfolio total. Reconciles to CY GP exactly by construction.
- **Standard volume / mix split:** Volume effect uses the portfolio PY average gross profit per unit; Mix isolates the residual from selling a different SKU mix than PY.
- **Reconciliation tolerance:** Summary residual = bridge minus actual. Status flips to Off if absolute residual exceeds the user-set tolerance.

## Use cases

- **Earnings walk:** Explain the gross margin movement to investors and analysts with a one-page bridge anchored in five reportable drivers.
- **Board and IC packs:** Drop the Summary onto a slide and answer the standard 'why did margin move' question with a defensible decomposition.
- **10-K MD&A walk:** Build the gross profit narrative for the annual report using a model that holds together to the cent.

## Frequently asked questions

### What is a gross margin bridge?

A gross margin bridge decomposes the year-over-year change in gross profit into named drivers - typically Volume, Price, Mix, Cost, and FX - so a finance leader can explain exactly what moved the number. The drivers sum to the actual GP change to the cent.

### How is the Mix effect different from the Volume effect?

Volume holds the SKU mix at PY proportions and only flexes total unit count, valued at the portfolio PY average gross profit per unit. Mix is the residual that captures the impact of selling more or fewer of higher-margin SKUs than the PY portfolio shape. Together they sum to the SKU-by-SKU volume contribution at PY economics.

### How is FX applied?

FX is applied to CY revenue per SKU through a translation factor. Factor > 1.0 means the CY currency strengthened against PY; factor = 1.0 means no FX effect. The FX_Effect formula is CY_units × CY_price × (CY_FX − 1).

### Why is the Cost-effect sign flipped from the others?

By convention, positive numbers in the bridge are favourable to gross profit. A unit cost reduction is favourable, so Cost_Effect is computed as (PY_cost − CY_cost) × CY_units, which lands as a positive when costs fell.

### How do I plug in my own SKUs?

Replace the seed values in the Assumptions sheet (PY and CY units, price, cost, and CY FX factor for each of the five SKU slots). The Period_View, Bridge_Calc, and Summary sheets recalculate from those cells.

## Related templates

- [Budget vs Actuals Tracker](https://finamodel.com/templates/budget-vs-actuals)
- [Revenue Waterfall](https://finamodel.com/templates/revenue-waterfall)
- [3 Statement Model](https://finamodel.com/templates/3-statement-model)
