---
title: "Metric definitions"
description: "Every metric in this system ships with its formula, period, inputs and source. A KPI without a definition is a number people argue about in meetings."
canonical: "https://lopifi.com/docs/domain/metrics"
---

# Metric definitions

> Every metric in this system ships with its formula, period, inputs and source. A KPI without a definition is a number people argue about in meetings.

Source: https://lopifi.com/docs/domain/metrics
Part of: Lopifi — Planned: US GAAP books on autopilot, checked by a CPA (https://lopifi.com)

---

# Metric definitions

Every metric in this system ships with its formula, period, inputs and source. A KPI without a definition is a number people argue about in meetings.

> **The rule:** `MetricCard` requires a `definition`, and no variant skips it. An info affordance on the card opens `MetricDefinition`, which shows the formula with this period's input values filled in.

---

## Why this is a design problem

Ask four companies what "ARR" means and you'll get at least four answers. "Burn" might be gross or net. "DSO" has two accepted formulas that give different answers. Print any of these to one decimal place without a definition and it looks precise while meaning something different to everyone reading it.

`MetricDefinition` renders:
```
  Net Revenue Retention                                    104.6%
  ────────────────────────────────────────────────────────────────
  (Starting MRR + Expansion − Contraction − Churn) ÷ Starting MRR
  (  412,000    +  61,400   −    18,200    − 24,100 ) ÷  412,000

  Cohort:  customers active on Sep 1, 2026
  Period:  Sep 1–30, 2026
  Source:  subscription ledger · excludes one-time fees
  Note:    new customers excluded by definition
```

Formula, substituted values, cohort, period, source and the caveat. The component is that block.

---

## Liquidity & working capital

| Metric | Formula | Note |
|---|---|---|
| **Working capital** | `Current assets − Current liabilities` | Absolute, not a ratio |
| **Current ratio** | `Current assets ÷ Current liabilities` | > 1 means current assets cover current liabilities — liquidity, not solvency or health |
| **Quick ratio** | `(Cash and equivalents + Short-term investments + Accounts receivable) ÷ Current liabilities` | The acid test. The shortcut `(Current assets − Inventory − Prepaids) ÷ Current liabilities` keeps other current assets in and reads higher — state which |
| **Cash ratio** | `Cash and equivalents ÷ Current liabilities` | Most conservative |
| **CCC** | `DSO + DIO − DPO` | Days cash is tied up. Negative is excellent. |
| **DSO** | `(Ending AR ÷ Credit sales for the period) × Days in the period` | Two formulas exist — see [order to cash](https://lopifi.com/md/docs/domain/order-to-cash#9-ar-metrics) |
| **DIO** | `(Inventory ÷ COGS for the period) × Days in the period` | Ending or average inventory — state which |
| **DPO** | `(Ending AP ÷ COGS for the period) × Days in the period` | Some use purchases rather than COGS, which suits a business whose AP is mostly opex. Polarity `neutral`; render with on-time payment rate adjacent — see [procure to pay](https://lopifi.com/md/docs/domain/procure-to-pay#9-ap-metrics) |
| **Receivables turnover** | `Credit sales ÷ Average AR` | Times per period; `Days in the period ÷ turnover` is DSO on average AR |
| **Inventory turnover** | `COGS ÷ Average inventory` | Times per period; `Days ÷ turnover` is DIO |
| **CEI** / **Collection effectiveness index** | `(Opening AR + Credit sales − Closing total AR) ÷ (Opening AR + Credit sales − Closing current AR)` | Percent of collectible AR actually collected; 100% is perfect. See [order to cash](https://lopifi.com/md/docs/domain/order-to-cash#9-ar-metrics) |

---

## Profitability

| Metric | Formula | Note |
|---|---|---|
| **Gross margin** | `(Revenue − COGS) ÷ Revenue` | Requires a COGS classification; omit the metric if there isn't one |
| **Contribution margin** | `(Revenue − Variable costs) ÷ Revenue` | Strictly the ratio form — the amount is `Revenue − Variable costs`. Variable-cost classification is a judgment; state it |
| **Operating margin** | `Operating income ÷ Revenue` | |
| **EBIT** | `Net income + Interest expense + Income tax expense` | Close to operating income, but also carries other non-operating income and expense. Non-GAAP |
| **Net margin** | `Net income ÷ Revenue` | |
| **EBITDA** | `Net income + interest + income taxes + D&A` (≈ operating income + D&A with no other non-operating items) | **Non-GAAP** — see below |
| **EBITDA margin** | `EBITDA ÷ Revenue` | |
| **Rule of 40** | `Revenue growth % + EBITDA margin %` | SaaS heuristic, not an accounting measure. Many use free-cash-flow margin instead of EBITDA margin, and year-over-year ARR growth instead of revenue growth — label which |

### EBITDA {#ebitda}
Not a GAAP or IFRS line. Wherever it appears it must:
1. Sit **below** net income, in a separate non-GAAP block, never inside the P&L.
2. Show its **reconciliation to net income**, line by line.
3. State every adjustment. Nobody can check "Adjusted EBITDA" with unnamed adjustments, so the component requires the adjustment list.

The same rules apply to free cash flow, adjusted net income and every other non-GAAP measure. `NonGaapReconciliation` exists so none of this can be skipped.

---

## Cash & runway

| Metric | Formula | Note |
|---|---|---|
| **Gross burn** | All cash out in the month, before any cash in | Ignores revenue. The cost base: what the month would cost if no customer paid |
| **Net burn** | `Gross burn − cash in`, excluding financing inflows | The one that matters for runway. Equity raised or debt drawn is not negative burn. A one-off (a vehicle bought outright, a year of insurance paid up front) is named and shown beside a run-rate figure, never silently dropped |
| **Runway** | `Cash ÷ net monthly burn` | **State which burn.** Gross-burn runway is a different, shorter number. |
| **Months of cash** | Same as runway | Say one thing, not both |
| **Free cash flow** | `Operating cash flow − Capital expenditures` | Non-GAAP; state whether capitalized software and finance-lease principal are deducted |
| **Burn multiple** | `Net burn ÷ Net new ARR`, over the same period | Efficiency; lower is better. Popularized by David Sacks (Craft Ventures, 2020), whose post states the formula; quote bands only with their source. Undefined when net new ARR is zero or negative |

**Worked example.** Cash and equivalents of $4,200,000; net burn of $210,000 in July, $230,000 in August and $250,000 in September, so trailing-3-month net burn is $230,000. Runway is `4,200,000 ÷ 230,000 = 18.26`, rendered "18.3 months at trailing-3-month net burn". On September alone it is `4,200,000 ÷ 250,000 = 16.8` months. Changing the window moved runway by 1.5 months, which is why the window is stated. If the quarter's net burn of $690,000 bought $460,000 of net new ARR, the burn multiple is `690,000 ÷ 460,000 = 1.5×`.

**On a real month.** The [finance track](/learn/finance) works burn and runway on Northwind Traders' September, where two one-offs (the van, and a year of insurance paid up front) are larger than the whole month's net burn. Both figures are shown, with the one-offs named, because each answers a different question.

**Runway rules:**
- **The burn basis is on the card**: "18.3 months at trailing-3-month net burn."
- **The averaging window is stated**: last month, trailing 3 or trailing 6. One odd month can double or halve the answer.
- **The projection is dashed** on any chart. It's a forecast.
- **Committed but unpaid obligations** (signed contracts, POs) are disclosed alongside. Runway that ignores them is too long.

---

## Recurring revenue

No family of metrics has looser definitions than this one.

| Metric | Formula | Note |
|---|---|---|
| **MRR** | Sum of normalized monthly recurring subscription value | **Excludes** one-time fees, usage overage, services, and taxes |
| **ARR** | `MRR × 12` | Only meaningful for subscriptions. Never for transactional revenue. |
| **New MRR** | From customers new this period | |
| **Expansion MRR** | Upgrades and seat additions from existing customers | |
| **Contraction MRR** | Downgrades, not cancellations | |
| **Churned MRR** | Full cancellations | |
| **Net new MRR** | `New + Expansion − Contraction − Churned` | The movement that explains the change |
| **Gross revenue retention** | `(Starting − Contraction − Churn) ÷ Starting` | Caps at 100% |
| **Net revenue retention** | `(Starting + Expansion − Contraction − Churn) ÷ Starting` | Can exceed 100% |
| **Logo churn** | `Customers lost ÷ starting customers` | Different from revenue churn |

**Rules:**
- **MRR is not revenue.** It's an operating metric derived from subscriptions, and it won't tie to the P&L. Put the two side by side without saying so and someone on the board will ask why they differ.
- **The MRR bridge is the primary view**: the waterfall from opening MRR through each movement to closing. One MRR number with a percentage change explains nothing.
- **NRR and GRR both, or neither.** NRR alone hides churn behind expansion.
- **Every cohort definition is stated.** "Customers active on the first day of the period" is a choice, and a different choice gives a different answer.

---

## Unit economics

**These are not accounting measures**, and the UI labels them that way. Each rests on a definitional choice no standard makes for you, and the component shows the choice.

| Metric | Formula | The contested part |
|---|---|---|
| **CAC** | `Sales & marketing spend ÷ new customers` | Which costs count; which period they're attributed to |
| **ARPA** / **Average revenue per account** | `MRR ÷ Active customers`, per month | Per account, not per user (ARPU) — say which; mean, not median |
| **CAC payback** | `CAC ÷ (Monthly ARPA × Gross margin)`, in months | Whether margin is applied; whether ARPA is new-customer or blended |
| **LTV** | `(ARPA × Gross margin) ÷ Revenue churn rate`, both in the same period unit | Extremely sensitive to the churn input; unstable at low churn |
| **LTV:CAC** | | Meaningless without both definitions stated |
| **Magic number** | `Net new ARR in the quarter ÷ prior-quarter S&M` (equivalently `(Δ quarterly revenue × 4) ÷ prior-quarter S&M`) | |

**Rule: LTV computed on a monthly churn rate below ~1% produces an absurd number.** The component caps the horizon (commonly 36 months) and **displays the cap**.

---

## Leverage & coverage

| Metric | Formula | Note |
|---|---|---|
| **Debt-to-equity** | `Total debt ÷ Total equity` | Debt is interest-bearing borrowings (and, commonly, lease liabilities). Some use total liabilities — a different, larger ratio; state which |
| **Net debt** | `Total debt − Cash` | Can be negative |
| **Interest coverage** | `EBIT ÷ Interest expense` | Common covenant |
| **DSCR** | `Cash available for debt service ÷ Debt service (interest + scheduled principal)` | Common covenant. Real estate uses net operating income; corporate loans usually EBITDA less capex and cash taxes — the credit agreement defines it |
| **Leverage ratio** | `Net debt ÷ EBITDA` (or total debt ÷ EBITDA) | Definition is usually specified in the loan agreement, not by convention |

**Covenant metrics use the definition in the credit agreement, not the generic one.** Lenders define "EBITDA" contractually, with specific add-backs. `CovenantMonitor` stores the contractual definition per covenant and computes against it, showing the headroom and the test date. Its EBITDA can differ from the dashboard's, correctly, and the UI says why.

---

## Display rules

1. **Every metric carries its definition.**
2. **Every metric states its period and comparison basis.** `+5.3% vs. Aug`, never a bare `+5.3%`.
3. **Percentage points vs. percent are discriminated** at the type level. See [numerics](https://lopifi.com/md/docs/foundations/numerics#7-percentages-rates-basis-points).
4. **`polarity` is required.** Rising burn and rising churn are not good news (`inverted`). DPO is `neutral`. A longer DPO holds cash longer and may also mean vendors are being strained, so it renders with the on-time payment rate beside it, never a green or red arrow on its own.
5. **Division by zero renders `n/a`**, never `∞`, `NaN`, or `100%`.
6. **Non-GAAP measures are labeled and reconciled.**
7. **Metrics derived from unreconciled data are marked provisional.** A KPI computed mid-close, before the bank is reconciled, is an estimate. The label keeps people from quoting it outside the company.
8. **Trailing averages state their window.**
9. **Ratios show their inputs on hover.** `1.8×` is not inspectable; `$4.2M ÷ $2.3M` is.
10. **Metric definitions are versioned.** When a definition changes, historical values computed under the old one are marked. Otherwise a new formula reads as a change in the business.
