> For the complete documentation index, see [llms.txt](https://help.modelreef.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.modelreef.io/use-cases/saas-and-subscription-businesses/multi-product-saas-p-and-l.md).

# Multi-Product SaaS P\&L

This use case describes how to design a SaaS P\&L in Model Reef that supports multiple products or lines of business. The aim is to see both:

* Product level performance and unit economics.
* Consolidated SaaS P\&L for the whole company.

You will use branches, categories and variables to separate product streams while maintaining a clean group view.

## When to use this pattern

Use this pattern when:

* You sell more than one product or price tier and want separate P\&L visibility.
* You intend to allocate shared costs across products for contribution margin analysis.
* You need to understand which product lines drive growth, margin and cash.

If you only have one core product, you may still use this structure to prepare for future expansion.

## Architecture overview

The multi product P\&L structure has three main elements:

1. Branch structure
   * Branch per product or product family.
   * Optional head office or shared services branch.
2. Product specific variables
   * Revenue, COGS and product specific costs per branch.
   * Product specific drivers such as customer counts or usage metrics.
3. Shared costs and allocations
   * Central costs (for example general and administrative, platform engineering).
   * Allocation logic where you want to see product level contribution after shared costs.

Branches roll up into a consolidated group view automatically.

## Steps to implement

{% stepper %}
{% step %}

### Design the branch and category structure

Create a Model Reef model with branches, for example:

* `Group`
  * `Product A`
  * `Product B`
  * `Product C`
  * `Shared` (optional, for central functions)

Within each branch, use the same category structure for P\&L:

* Revenue
* COGS
* Gross profit
* Opex (sales and marketing, research and development, general and administrative)
* EBITDA and below

This consistency makes product-to-product comparison straightforward.
{% endstep %}

{% step %}

### Create product level revenue and COGS variables

In each product branch:

* Define Revenue variables such as:
  * `Revenue - MRR - Product A`
  * `Revenue - Add Ons - Product A`
* Link them to product specific drivers:
  * Customer counts for that product
  * ARPA or pricing for that product
  * Conversion or attach rates for add ons
* Define COGS variables such as:
  * `COGS - Hosting - Product A`
  * `COGS - Payment Fees - Product A`
  * `COGS - Third Party Licences - Product A`

Use the same naming pattern across branches so you can easily see how costs differ by product.
{% endstep %}

{% step %}

### Separate shared and product specific costs

Decide which costs are:

* Directly attributable to a product (for example product specific advertising, dedicated customer success)
* Shared across products (for example platform engineering, finance, HR)

Implement this by:

* Placing product specific Opex and Staff variables inside the relevant product branch
* Placing shared Opex and Staff variables inside the `Shared` or `Group` branch

This separation is important when computing contribution margin by product.
{% endstep %}

{% step %}

### Add optional cost allocation logic

If you want to see product level results after some or all shared costs are allocated:

* Decide on allocation keys, for example:
  * Revenue share
  * Gross profit share
  * Active customer share
* Create drivers in the Data Library for these keys, such as:
  * `Driver - Shared Cost Allocation - Revenue Share`
* In each product branch, create allocation variables such as:
  * `Allocated Shared Opex - Product A`
* Use formulas that:
  * Take the total shared cost variable
  * Multiply by the allocation key for that product

You can decide whether to leave the original shared cost in the `Shared` branch for transparency or treat allocations as the only view for decision making.

For more detail, see **Build Cross Branch Drivers and Dependencies**.
{% endstep %}

{% step %}

### Build product level and consolidated P\&L views

Use reports and dashboards to provide:

* Product level P\&L:
  * Revenue, COGS, gross margin
  * Product specific Opex
  * Optional allocated shared costs
  * Product contribution margin
* Consolidated SaaS P\&L at `Group` level:
  * Total revenue and gross profit
  * Total Opex, EBITDA and below

Create custom reports or dashboards grouped by branch to show product comparisons side by side.
{% endstep %}

{% step %}

### Integrate with SaaS metrics and valuation

Finally, connect the multi product P\&L to:

* MRR and ARR metrics per product, from your ARR/MRR forecasting structure
* CAC and LTV analysis by product where acquisition costs and retention differ
* Valuation models that either:
  * Use consolidated cashflows, or
  * Model product specific cashflows where required

Keep product specific drivers in the Data Library and ensure naming makes it easy to see which product each driver relates to.
{% endstep %}
{% endstepper %}

## Check your work

<details>

<summary>Checklist</summary>

* Product branches contain only variables relevant to that product.
* Shared costs are clearly identified and, if allocated, allocation logic is documented.
* Product level and group level P and L views reconcile to each other.
* Product comparisons help answer questions about growth, margin and investment priorities.

</details>

## Troubleshooting

<details>

<summary>Branches become cluttered</summary>

Introduce a consistent naming and subcategory pattern, and archive or merge rarely used variables.

</details>

<details>

<summary>Allocations make product results hard to interpret</summary>

Provide both pre-allocation and post-allocation views so stakeholders can see raw contribution and fully loaded results.

</details>

<details>

<summary>Difficult to align SaaS metrics to product P&#x26;L</summary>

Make sure customer, ARR and MRR drivers are segmented by product in the same way as revenue variables.

</details>

## Related guides

* [Build a Multi Division Model](/how-tos/core-modelling/build-a-multi-division-model.md)
* [Build a Multi Period Comparison Dashboard](/how-tos/dashboards-and-reporting/build-a-multi-period-comparison-dashboard.md)
* [P\&L Overview](/help/financial-outputs-and-valuation/p-and-l-overview.md)
* [Common Size Mode](/syntax/chart-and-table-syntax/common-size-mode.md)
