Gross Margin
Gross Margin: Revenue minus cost of goods sold (COGS), as a percentage of revenue. Measures profitability after direct delivery costs.
Formula
Gross Margin = (Revenue (GAAP) - COGS) / Revenue (GAAP) × 100GM-O = (Revenue − COGS − Support − CS − Implementation − Onboarding) / Revenue × 100GM-M = (Revenue − COGS) / Revenue × 100GM-M = GM-O + (Support + CS + Implementation + Onboarding costs) / Revenue × 100 Computable definition
The canonical formula in the GASP formula grammar. The MCP server compiles it to SQL over the datasets listed below.
(sum(field.revenue) - sum(field.cost where field.cost_function = 'infrastructure')) / sum(field.revenue) Unit: percent (the formula yields an unscaled ratio)
- Operating form (O) (see the dual-lens forms)
(sum(field.revenue) - sum(field.cost where field.cost_function = 'infrastructure') - sum(field.cost where field.cost_function in ('support', 'success_engineering', 'implementation', 'onboarding'))) / sum(field.revenue)- Market form (M) (see the dual-lens forms)
(sum(field.revenue) - sum(field.cost where field.cost_function = 'infrastructure')) / sum(field.revenue)
Notes: COGS is cost_function infrastructure (hosting, compute, payment processing). Canonical Gross Margin equals GM-M; GM-O (contribution margin) also subtracts support, success engineering, implementation and onboarding cost. Revenue is GAAP recognised revenue.
Data requirements
Grain: Monthly aggregate · Frequency: Monthly · Aggregation: aggregate (month) · Staged: no · Main source: Finance / ERP.
| Field | Dataset | Type |
|---|---|---|
cost | cost_event | decimal |
cost_function | cost_event | string |
event_date | cost_event | date |
period_start | financials | date |
revenue | financials | decimal |
Example SQL (Postgres)
SELECT (CAST(((SELECT COALESCE(SUM(revenue), 0) FROM financials WHERE period_start >= :period_start AND period_start <= :period_end) - (SELECT COALESCE(SUM(cost), 0) FROM cost_event WHERE event_date >= :period_start AND event_date <= :period_end AND cost_function = 'infrastructure')) AS DOUBLE PRECISION) / NULLIF((SELECT COALESCE(SUM(revenue), 0) FROM financials WHERE period_start >= :period_start AND period_start <= :period_end), 0)) AS gross_margin Access: recommended
sensitivity tier confidential,
access scope unscoped.
Guidance your policy engine enforces.
From an agent: with the GASP MCP server, call
lookup_metric({ "name": "Gross Margin" }) or generate_query({ "metric": "Gross Margin", "adapter": "<your adapter JSON>" }).
Benchmarks
- Below 60%: Low, may indicate infrastructure-heavy or services-heavy business
- 60-70%: Moderate (Seed/Series A acceptable while scaling)
- 70-80%: Good, typical for SaaS (Most VCs require 70%+ for investment)
- 75-80%: Series B+ expected, attractive to investors
- 80-85%: Best-in-class (commands valuation premium)
What It Tells You
How much of each dollar of revenue is available after delivery costs. Higher margins = more scalable business.
Dual-Lens: Operating / Market Forms
Both governed forms are computed from the same Commercial Event Ledger, with Attribution Taxonomy Layer tags deciding which events each form counts.
Operating Form: Contribution Margin (GM-O)
Contribution Margin is revenue minus every variable cost of serving customers. It shows what each customer earns after the costs that grow with the customer base.
- CEL Source:
- `Revenue_Event`, `Cost_Event`
- ATL Inclusion:
- `cost_function` ∈ (`infrastructure`, `support`, `success_engineering`, `implementation`, `onboarding`)
GM-O = (Revenue − COGS − Support − CS − Implementation − Onboarding) / Revenue × 100 What it tells you: How much profit each customer generates after every variable delivery cost, which is why it is the operating form.
Market Form: SaaS Gross Margin (GM-M)
SaaS Gross Margin is revenue minus COGS only (hosting, infrastructure and payment processing). It matches financial statement reporting and investor benchmarks.
- CEL Source:
- `Revenue_Event`, `Cost_Event`
- ATL Inclusion:
- `cost_function` = `infrastructure`
GM-M = (Revenue − COGS) / Revenue × 100 What it tells you: The market-comparable gross margin that investors expect at 70%+ for SaaS businesses.
Bridge
GM-M = GM-O + (Support + CS + Implementation + Onboarding costs) / Revenue × 100 The delta (GM-M − GM-O) is the **Services Drag:** the cost of running a customer operation that depends on people. A delta that declines over time points to more automation and self-serve adoption. SaaS Capital 2025 guidance on COGS allocation supports both approaches. VCs typically expect 70%+ SaaS gross margin (GM-M) while internal teams should track contribution margin (GM-O) for pricing and unit economics. ---
Related Metrics
Connected in the GASP relationship graph.
Downstream: what this drives
- Gross Margin drives Free Cash Flow (Finance)
- Gross Margin reduces Cash Burn Rate (Finance)
- Gross Margin component of CAC Payback Period (Core)
- Gross Margin component of LTV (Core)
- Gross Margin component of Operating Margin (Finance)