Sign in

Blog · Finance metrics and formulas · Software

SaaS gross margin: define cost of revenue consistently

SaaS gross margin measures revenue left after delivery costs. Classify hosting, support and other delivery costs consistently, reconcile product margins, and separate real changes from accounting reclassifications.

The short answerSaaS gross margin is recognized revenue minus the cost of delivering the service, divided by recognized revenue. The useful comparison keeps hosting, customer support, delivery labor and allocated costs classified consistently across products and periods. Separate subscriptions from implementation services when their economics differ, and reconcile every product total to the general ledger before interpreting a change.

SaaS gross margin is the share of recognized revenue left after the costs of delivering the service. Revenue of $300,000 and delivery costs of $78,000 leave $222,000 of gross profit, or 74.0%. The comparison only holds if hosting, support and other delivery expenses stay on the same basis across products and periods.

What the measure includes

SaaS gross profit = Recognized revenue - Cost of revenue

SaaS gross margin = SaaS gross profit / Recognized revenue

Use revenue earned during the reporting period. Customer receipts, annual contract value and signed bookings answer different questions. An annual prepayment does not all become one month's revenue simply because the customer paid it at once.

The generic gross profit margin calculation is straightforward. SaaS adds a classification problem: the business must distinguish the cost of serving current customers from the cost of developing products, winning customers and running the company.

An actual disclosure shows the breadth of delivery costs. Atlassian's fiscal 2024 annual report describes cost of revenue that includes hosting, employee compensation, customer support contractors, payment processing, depreciation, amortization and allocated overhead. That is one company's policy, rather than a compulsory checklist for every software company.

For a management review, make your controller's approved policy explicit. A cost mapping that says only "technical payroll" is too vague: staff maintaining the contracted service and staff developing a new product perform different work.

Start with the revenue and expense exports

Bring recognized revenue by product and month from the revenue ledger. Include credits and adjustments in the same basis used for the income statement. Bring expense rows with account, department, product, posting month, amount and classification.

Keep a separate mapping of shared cost allocations. For example, tagged usage can support a hosting allocation, while time records can support a support-labor allocation. A revenue allocation may be practical for some overhead, but it should be visible because it can conceal differences in customer demand.

Expense row Treatment to document Evidence to retain
Hosting and service vendors Delivery cost for the service provided Invoice period and product allocation
Contracted customer support Delivery cost under the approved policy Support activity or staffing allocation
Implementation work Match the relevant services revenue Project and delivery records
Product development Apply the company's development accounting policy Approved account classification
Acquisition and expansion selling Sales expense under the approved policy Role and activity description
Shared overhead Allocate according to the approved policy Allocation base and reconciliation

Do not decide the treatment solely from whether a cost changes with usage. A fixed delivery payroll can still belong in cost of revenue. Conversely, a variable sales commission does not become a delivery expense just because it rises with sales.

Work two products through the same policy

Consider an illustrative US SaaS company reviewing September 2026. Its Core and Advanced products share a delivery team. The following amounts come from the company's prepared revenue and expense allocations; all figures are USD.

Input Core (USD) Advanced (USD) Total (USD)
Recognized revenue 180,000 120,000 300,000
Hosting and vendor delivery charges 18,000 18,000 36,000
Support labor 12,000 18,000 30,000
Other allocated delivery costs 6,000 6,000 12,000
Cost of revenue 36,000 42,000 78,000
Gross profit 144,000 78,000 222,000
Gross margin 80.0% 65.0% 74.0%

Core delivery cost is 18,000 + 12,000 + 6,000 = $36,000. Its gross profit is 180,000 - 36,000 = $144,000, and its margin is 144,000 / 180,000 = 80.0%. Advanced follows the same steps: 120,000 - 42,000 = $78,000, and 78,000 / 120,000 = 65.0%.

The company margin divides totals: 222,000 / 300,000 = 74.0%. Percentages here are shown to one decimal place; retain unrounded values when calculating totals.

The operating expenses sit below that result:

Income statement bridge Amount (USD)
Gross profit 222,000
Research and development expense 110,000
Sales and marketing expense 80,000
General and administrative expense 40,000
Total operating expenses 230,000
Operating profit / (loss) -8,000

The check is 222,000 - 230,000 = -$8,000. A positive gross profit does not establish that the business is profitable; gross profit versus net profit explains the further deductions.

Prove the margin before explaining it

First, reconcile the product revenue total to the revenue ledger and the delivery-cost total to the cost-of-revenue accounts. Shared invoices and payroll allocations must appear once, with all their allocated amounts adding back to the original expense.

Second, check that gross profit plus cost of revenue equals revenue: 222,000 + 78,000 = $300,000. This catches a missing cost subtotal or an inconsistent sign convention.

Third, distinguish a real improvement from a reclassification. Suppose the $18,000 of Advanced support labor in the first table moves to operating expenses, with no change in the service delivered. Reported cost of revenue becomes 78,000 - 18,000 = $60,000, and reported gross profit becomes 300,000 - 60,000 = $240,000. The margin becomes 240,000 / 300,000 = 80.0%, an increase of 6.0 percentage points.

Operating expenses simultaneously become 230,000 + 18,000 = $248,000. Operating profit remains 240,000 - 248,000 = -$8,000. The apparent gross-margin gain is entirely presentation. Keep the bridge with the review, and consult adjusted gross margin when a separately labeled adjustment is needed.

What the result changes

The lower Advanced margin directs attention to the cost of delivering that product. Finance and operations can review support demand, vendor consumption and the contractual service level before changing price or cutting resources. A lower percentage can still produce attractive gross profit dollars, so review both measures.

Separate implementation services when they materially change the mix. Bessemer's analysis of cloud company economics identifies hosting, implementation and services as costs relevant to delivery economics. A consolidated percentage alone cannot show whether a change came from recurring subscriptions or more labor-intensive services; the nearby service-business gross margin page covers that distinction.

The controller owns the accounting policy and reconciliation. Product and service leaders own the operating explanations. FP&A brings those together in a comparison with the prior period using the same definitions.

Where it goes wrong

  • Mixing billing with revenue. Annual invoices in the denominator and monthly delivery expense in the numerator create an artificial margin jump.
  • Changing support treatment. Moving customer-facing payroll between delivery and selling costs changes the percentage without changing total expense.
  • Allocating shared costs twice. Product allocations plus the original shared account overstate cost of revenue.
  • Ignoring service mix. More implementation revenue can change the consolidated margin even if subscription economics hold steady.
  • Comparing adjusted and unadjusted figures. Excluding compensation or amortization on only one side makes the comparison inconsistent.

Covirage is not affiliated with Atlassian or Bessemer Venture Partners.

Compare delivery margins on your own file in Covirage

Bring your recognized-revenue export, classified delivery expenses and product allocations. Covirage maps the columns, and its tools compute and check product and period margins; the external AI model explains the result with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.

See Covirage for customer profitability for the supporting workflow.

Questions people ask

What costs belong in SaaS cost of revenue?

The answer follows your documented accounting policy. Delivery costs can include hosting, support staff, third-party service charges, depreciation and relevant allocated overhead. Record the activities behind each account so a department name alone does not decide whether its entire payroll belongs above gross profit.

Is customer success included in SaaS gross margin?

Separate the work. Staff delivering contracted support may belong in cost of revenue, while staff selling renewals or expansion may belong in sales expense under your policy. For mixed roles, use a documented allocation supported by activity records and apply it consistently.

Why can SaaS gross margin rise without better economics?

Moving delivery expenses below gross profit raises the reported percentage without reducing total expenses. A shift toward products with higher margins can also raise the company figure while every product margin stays unchanged. Reconcile classifications and product mix before attributing the increase to efficiency.