> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesbricks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MRR & ARR Calculations

> Formulas, amortization rules, lifecycle behavior, and reconciliation guidelines for MRR and ARR in Salesbricks

## Overview

Monthly Recurring Revenue (**MRR**) and Annual Recurring Revenue (**ARR**) are the core operational metrics used to measure the normalized predictable revenue generated by active subscriptions.

Salesbricks reports recurring revenue across three primary views:

* **[Monthly Revenue Report](https://docs.salesbricks.com/reports/reports-and-charts.md#revenue-2)**: High-level monthly run-rate segmented by revenue type (Recurring, Non-Recurring, Usage, Overage, and Milestone).
* **Customer MRR Report**: Customer-level recurring revenue grid showing active subscription MRR or ARR month-over-month.
* **Brick MRR Report**: Product- and Brick-level recurring revenue grid detailing subscription line items.

> [!NOTE]
>
> In Salesbricks, MRR and ARR measure **in-force operational contract run rates**. They reflect the
> steady-state monthly value of active customer commitments rather than invoice cash receipts or
> GAAP/ASC 606 deferred revenue recognition schedules.

***

## Core Formulas

### Monthly Recurring Revenue (MRR)

For any recurring line item on an active contract, MRR is calculated using whole calendar month normalization:

```text theme={null}
MRR = floor( Net Recurring Non-Prorated Total / Service Window Months )
```

Where:

* **Net Recurring Non-Prorated Total**: The full-period recurring amount of the line item before daily proration, minus:
  * Line-level sales discounts (percentage or fixed discount).
  * Line-level one-time discounts.
  * Contract discounts (renewing and non-renewing) allocated across the contract term.
  * Duration discounts (free-months waivers).
* **Service Window Months**: The duration of the line item or ramp phase measured in whole calendar contract months (`arr_span_months`). For an annual contract, this is 12; for a quarterly contract, 3; for a monthly contract, 1.
* **`floor(...)`**: Integer division rounded down to the nearest currency cent, preventing fractional-cent rounding overstatements.

> [!TIP]
>
> **Why non-prorated totals?** If a customer begins a 12-month agreement on September 15th, their
> first partial calendar month is billed on a prorated basis, but their ongoing subscription
> commitment is \$1,200/year. Using the non-prorated total ensures their ongoing monthly run rate
> reflects \$100/month rather than an artificially depressed \$50 figure.

### Pre-Discount MRR

Pre-Discount MRR reflects the gross monthly run rate of the subscription before any sales or contract discounts are applied:

```text theme={null}
Pre-Discount MRR = floor( Base Non-Prorated Subtotal / Service Window Months )
```

***

## Annual Recurring Revenue (ARR)

Depending on context, "ARR" can refer to three distinct calculations in subscription business models. Salesbricks clearly differentiates between them:

### 1. Report ARR ("Show as ARR")

In the Customer MRR Report and Brick MRR Report, toggling **Show as ARR** converts the active monthly run rate into an annualized figure:

```text theme={null}
Report ARR = MRR * 12
```

This represents the annualized run-rate currently in effect for that month.

### 2. Order Form ARR

Displayed alongside Total Contract Value (TCV) on the order form and in closed-won notifications (and used as the fallback for open deals in CRM before revenue sync has run):

* **Contracts of 12+ months**: Represents the **weighted recurring commitment over the first 12 contract months**, net of all discounts in force during those months. For multi-year agreements with ramps or phases, it blends the line items active across the first 12 months weighted by their duration.
* **Contracts under 12 months**: Annualizes the recurring contract total across the agreement's duration (`(Recurring Total / Contract Months) * 12`).

> [!NOTE]
>
> **Rounding comparison with Report ARR**: Order Form ARR annualizes from the unrounded line total
> (`floor((Net Total / Months) * 12)`), whereas Report ARR ("Show as ARR") multiplies the
> already-floored monthly MRR by 12 (`floor(Net Total / Months) * 12`). Because of per-month cent
> flooring, a flat \$10,000/year line item reports \$10,000.00 in Order Form ARR, while its \$833.33
> monthly MRR displays as \$9,999.96 under **Show as ARR**.

### 3. Exit ARR (Current ARR)

Exit ARR (stored as `post_discount_arr` and synced to CRM once revenue sync has run) measures the annualized run rate of the subscription's **latest active earning month**. Rather than multiplying a rounded monthly MRR by 12, it is computed per recurring line item from the unrounded period total and summed across the latest non-zero earning month:

```text theme={null}
Renewable Total = Base Total - Sales Discount - One-Time Discount - Non-Renewing Contract Discount
Line Exit ARR   = floor((Renewable Total / Span Months) * 12)
```

Non-renewing discounts (one-time discounts and non-renewing contract discounts) are deducted from Exit ARR during the active term so that the step-up in price when those discounts expire at renewal is recognized as expansion/growth at renewal, rather than being priced into ARR ahead of time.

> [!NOTE]
>
> **Exit ARR vs. Renewable MRR**: In the underlying revenue table, `renewable_mrr` is a separate
> monthly field (`Pre-Discount MRR - Sales Discount - Renewing Contract Discount`) used to
> forward-fill active MRR continuation in reports, and does not equal `Exit ARR / 12`.

***

## Revenue Classification Matrix

Not all contract charges represent recurring revenue. The matrix below defines how Salesbricks classifies different order elements:

| Component | Included in MRR/ARR? | Report Classification | Treatment & Rationale |
| :- | :-: | :- | :- |
| **Recurring Subscription Bricks** | **Yes** | Recurring Revenue | Flat-rate and per-unit subscription fees divided across contract months. |
| **Recurring Add-Ons** | **Yes** | Recurring Revenue | Ongoing add-on subscriptions attached to base plans. |
| **Recurring Pre-Commitments** | **Yes** | Recurring Revenue | Committed usage pools resetting on periodic cycles (Monthly, Quarterly, Semi-Annually, Annually). |
| **Sales Discounts** | **Yes** (Deducted) | Recurring Revenue | Line-item discounts that carry forward throughout the subscription term. |
| **Contract Discounts (Amortized)** | **Yes** (Deducted) | Recurring Revenue | One-time or term discounts amortized evenly across the service window. |
| **One-Time Purchase Bricks** | **No** | Non-Recurring Revenue | Setup, onboarding, or integration fees billed once upon agreement execution. |
| **Pay-As-You-Go Usage** | **No** | Usage Revenue | Metered consumption billed in arrears based on actual customer usage events. |
| **One-Time Pre-Commitments** | **No** | Recurring Revenue (\$0 MRR) | Upfront usage allowances without recurring reset cycles; recorded as \$0 MRR entries. |
| **Milestone Bricks** | **No** | Milestone Revenue | Deliverable-based charges invoiced upon achieving agreed project milestones. |
| **Usage Overages** | **No** | Overage Revenue | Consumption exceeding pre-committed allowances, invoiced in arrears. |
| **Sales Taxes & Surcharges** | **No** | Not Reported (—) | Government sales taxes and VAT are excluded from commercial revenue metrics. |

***

## Lifecycle & Timing Rules

### Month-End Snapshot Rule

Salesbricks reports recurring revenue using a **month-end snapshot** model:

* The MRR/ARR reported for any given calendar month reflects the active subscription status on the **final calendar day of that month**.
* Mid-month cancellations or pauses that take effect before month end will result in \$0 MRR for that month.
* An agreement starting on the 20th of a month is evaluated on the final day of the month as active, recording its normalized monthly run rate.

### Paused Subscriptions

When a subscription is paused:

* If the subscription is paused as of month end, all recurring revenue fields (`pre_discount_mrr`, `post_discount_mrr`, `renewable_mrr`) are recorded as **\$0**.
* Invoiced amounts that occurred prior to the pause boundary remain preserved in invoice receivable and billing reports.

### Active MRR Continuation (Future Projections)

For active subscriptions that have not yet reached their end date:

* When viewing future months beyond an active agreement's scheduled `ends_at` date, MRR reports forward-fill those future months using the agreement's **Renewable MRR** (`renewable_mrr`, which excludes non-renewing discounts) under a going-concern assumption.
* Once an agreement's `ends_at` date actually passes without a closed renewal, the order is marked as ended (`ended_at`), future continuation is zeroed out (**\$0 MRR**), and the subscription enters the **Lapsed** state in [Reports & Charts](https://docs.salesbricks.com/reports/reports-and-charts.md).

### Ramped & Phased Agreements

For agreements structured with multiple pricing phases or ramping quantities:

* Each phase is evaluated against its own specific service window duration (`arr_span_months`).
* Rather than blending multi-year total contract value evenly across the entire contract, Salesbricks reports the exact in-force run rate corresponding to each phase's active date window.

### Multi-Currency Support

* Subscriptions maintain their native contract currency (e.g., USD, EUR, GBP).
* In the Customer MRR and Brick MRR reports, line items and subtotals are grouped and totaled by their native transaction currency to prevent artificial exchange-rate fluctuations.

***

## Reconciliation FAQ

### Why does Salesbricks MRR differ from our CRM (Salesforce / HubSpot)?

Traditional CRM deal desks often calculate annual contract value by taking Total Contract Value (TCV) and dividing it evenly by the contract term in years:

* **Example**: A 2-year ramped contract with \$10,000 in Year 1 and \$20,000 in Year 2 (Total \$30,000).
* **CRM Approach**: Averages the contract at \$15,000/year (\$1,250/month) throughout both years.
* **Salesbricks Approach**: Reports actual in-force run rate: \$833/month (\$10,000 ARR) in Year 1, stepping up to \$1,666/month (\$20,000 ARR) in Year 2.

Salesbricks reflects what the customer is contracted to pay during each specific month.

### Why does Salesbricks MRR differ from Stripe Billing or ChartMogul?

Some billing engines compute MRR by deriving a daily rate and multiplying by the number of days in the month:

```text theme={null}
Daily MRR = (Annual Total / 365) * Days in Month (28, 30, or 31)
```

Under this method, February displays lower MRR than January for the exact same subscription.

Salesbricks uses **calendar month normalization** (`Net Total / Service Window Months`). An annual \$12,000 subscription reports exactly \$1,000 MRR in February, March, and April.

### How does MRR relate to GAAP / ASC 606 Revenue Recognition?

**MRR is an operational commercial metric, not a statutory accounting measure.**

* **MRR / ARR**: Measures the ongoing annualized value of recurring customer contracts under active management.
* **GAAP / ASC 606**: Recognizes revenue as performance obligations are satisfied over time, amortizing prepaid balances from deferred revenue accounts.
* While MRR and recognized subscription revenue often trend together, one-time fees, mid-period service delivery timing, and contract modifications create standard differences between operational MRR and recognized accounting revenue.


## Related topics

- [Reports & Charts](https://docs.salesbricks.com/reports/reports-and-charts.md)
- [MCP](https://docs.salesbricks.com/integrations/mcp.md)
- [BrIQ AI Assistant](https://docs.salesbricks.com/agents/briq.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.