← All posts
Classifying Costs — Part 1

Classifying Costs, Part 1: Direct vs Indirect, Fixed vs Variable

Costs are classified along multiple dimensions. Understanding these distinctions is essential for building accurate financial models and communicating with investors.

The Three Dimensions

Costs are classified along three independent dimensions — any cost can be any combination:

Dimension 1: Behavior — How does the cost change with activity?

  • Fixed, variable, semi-variable, step-function

Dimension 2: Function — Where does it appear in the P&L?

  • COGS, variable cost (functional), operating expense (OPEX)

Dimension 3: Traceability — Can it be traced to a specific customer or product?

  • Direct or indirect

Key insight: These dimensions are orthogonal. A cost can be fixed AND COGS (e.g., multi-year data subscription for all customers), variable AND OPEX (e.g., usage-based dev tools), or direct AND fixed (e.g., dedicated server for one client).


Dimension 1: Behavior

Fixed Costs

Costs that remain constant regardless of activity level in the short term.

ExamplesNotes
Office rentSame whether 10 or 100 employees
Executive salariesDoesn't change with customer count
Multi-year data licensesFixed regardless of usage
Reserved cloud instancesCommitted capacity
Annual software subscriptionsFixed for contract term

Fixed costs get spread across more revenue as you grow, improving margins. This is the source of operating leverage.

Variable Costs

Costs that change in direct proportion to activity (customers, usage, transactions).

ExamplesUnitNotes
Per-client cloud computePer customerScales linearly
Per-customer data licensesPer customerPurchased per client
Sales commissionsPer deal% of ACV
Payment processingPer transaction2.9% + $0.30
Usage-based APIsPer callThird-party services

Variable costs maintain constant per-unit cost; margins stay flat as you scale.

Semi-Variable (Mixed) Costs

Costs with a fixed base plus a variable component.

ExamplesFixed PortionVariable Portion
Support teamBase headcountOverflow contractors
Cloud infrastructureReserved instancesOn-demand overflow
Sales teamBase salariesCommissions

When precision matters, split into fixed and variable portions.

Step-Function Costs

Fixed within capacity ranges, jump to a new level at thresholds.

ExamplesThresholdJump
Customer success teamEvery 20 customersAdd 1 CSM
Infrastructure tier1,000 concurrent usersUpgrade instance class
Data license tier10,000 km²Next pricing tier

Dimension 2: Function (P&L Placement)

COGS (Cost of Goods Sold)

Direct costs of producing and delivering the product/service to customers.

The Test: "Is this cost required to deliver the product to customers?"

COGS can be fixed or variable:

CostBehaviorExample
Per-client computeVariableGPU inference per customer
Multi-year data subscriptionFixedSatellite imagery for all customers
Customer support laborSemi-variableBase staff + overflow
Payment processingVariable (transactional)2.9% of revenue

A multi-year data subscription that serves all customers is COGS (required to deliver product), fixed (doesn't change with customer count), and indirect (shared across all customers). This is favorable for scaling — the cost is "capacity" that supports growth without linear cost increase.

Variable Costs (Functional Category)

In contribution-margin waterfalls, this is a functional category for costs that scale with acquisition activity.

The Test: "Is this cost incurred to acquire or expand a customer?"

ExamplesNotes
Sales commissionsPer-deal (8-12% of ACV)
Implementation laborPer-customer onboarding
Client-specific ML trainingOne-time per client
Variable marketingPerformance-based spend
Channel partner feesRevenue share

Why separate from COGS: These are acquisition costs, not delivery costs. The distinction enables calculating gross margin (delivery efficiency) and contribution margin (delivery + acquisition efficiency) as separate metrics.

Operating Expenses (OPEX)

Ongoing costs to run the business, not directly tied to specific customer revenue.

The Test: "Would this cost exist even with zero customers?"

CategoryExamples
R&DEngineering salaries, dev tools, training infrastructure
S&M (fixed)Base sales salaries, marketing team, programs
G&AExecutive, finance, HR, legal, facilities

Dimension 3: Traceability

Direct Costs

Costs traceable to a specific customer, product, or project.

ExamplesCost Object
Client-specific data licenseCustomer
Client ML model trainingCustomer
Product-specific engineeringProduct
Customer support ticket laborCustomer

Direct ≠ Variable: A dedicated server for one client is direct but may be fixed (same monthly cost regardless of their usage).

Indirect Costs

Costs shared across multiple customers/products; require allocation if assigned.

ExamplesNotes
General cloud infrastructureShared across all customers
Executive salariesBenefit entire company
Multi-year data subscriptionsServe all customers
Marketing campaignsGenerate leads broadly

Indirect ≠ Fixed: Usage-based software shared across teams is indirect but variable.


The Full Matrix

Cost ExampleBehaviorFunctionTraceability
Per-client inference computeVariableCOGSDirect
Multi-year satellite data subscriptionFixedCOGSIndirect
General ML training computeFixedOPEX (R&D)Indirect
Sales commissionVariableVariable CostDirect
Sales base salaryFixedOPEX (S&M)Indirect
Client-specific storageVariableCOGSDirect
Implementation laborVariableVariable CostDirect
Engineering salariesFixedOPEX (R&D)Indirect
Payment processingVariableCOGSDirect
Reserved cloud (production)FixedCOGSIndirect

Why It Matters

For Gross Margin

Gross margin requires correctly identifying COGS. Include customer-facing compute, data feeds for delivery, and support. Exclude R&D, sales, and G&A.

ErrorImpact
R&D compute in COGSOverstates delivery cost, understates margin
Data subscriptions in OPEXUnderstates delivery cost, overstates margin

For Contribution Margin

Contribution margin requires separating variable from fixed. Include COGS plus acquisition costs (commissions, implementation). Exclude fixed OPEX.

For Breakeven

Breakeven Revenue = Fixed Costs / Contribution Margin %

Misclassifying fixed vs. variable breaks this calculation.

For Scaling Analysis

Understanding cost behavior shows how margins evolve:

Cost StructureAt 10 CustomersAt 100 Customers
Heavy variable COGS70% gross margin70% gross margin
Heavy fixed COGS40% gross margin75% gross margin

Fixed COGS (like multi-year data subscriptions) creates operating leverage — margins improve with scale.


Decision Tree

For each cost, ask:

  1. Function: Where does it appear in the P&L?

    • Required to DELIVER product? → COGS
    • Required to ACQUIRE/EXPAND? → Variable Cost
    • Required to RUN business? → OPEX
  2. Behavior: How does it change with activity?

    • Scales with customers/usage? → Variable
    • Constant regardless of activity? → Fixed
    • Has base + scaling component? → Semi-variable
  3. Traceability: Can it be traced to a specific customer?

    • Clearly linked to one customer? → Direct
    • Shared across customers? → Indirect

Common Errors

ErrorExampleImpact
All cloud = OPEX"AWS is operating expense"Understates COGS
Variable = COGS"Commissions are COGS"Misrepresents gross margin
Direct = Variable"Client server is variable"Mismodels cost behavior
Data subscription = OPEX"Satellite feed is R&D"Understates COGS
Fixed data = Variable"Data scales with customers"Mismodels leverage