MSP StockroomFind a guide, template or tool…/
Field guides / Capacity and economics

CE-03 Field guide / Capacity and economics

Review client profitability without fooling yourself

A large agreement can look healthy because hardware resale inflates revenue. A small one can look cheap because senior escalation time is missing. Match the revenue, work and cost boundaries before ranking clients.

8 min read / Updated Oct 2026

For Owner, Account management, Service manager

On this page

Start with your PSA report, then reconcile it

If your PSA already has a contract or agreement profitability report, use it. Autotask documents revenue, cost and profitability reporting within its contract/billing report groups.[4] ConnectWise PSA and HaloPSA are other systems you may use; check the reports available in your version rather than assuming the names or definitions match.

The manual workbook is a reconciliation worksheet, not a replacement PSA or a claim that PSAs lack profitability features. Compare the report's included revenue and labour with posted accounting records, vendor invoices and your actual time coverage. Check whether senior escalation was logged, bundled tool costs were assigned, credits landed in the right period and resale was separated. A configured PSA may already handle some or all of those costs. Record the differences instead of building a second unexplained number.

Conduit's client-profitability recipe is a useful boundary example: its basic workflow ranks revenue and adds company-level margin context, rather than allocating client labour costs.[3] Read the source fields and definitions before trusting a report title.

Define one client scope and one period

Choose a closed month and the client or agreement covered. Reconcile agreement revenue, additional-service revenue, pass-through revenue and pass-through vendor cost. Use a consistent posted revenue basis, net of credits and excluding sales tax, agreed with the finance owner. A payment received on an old invoice belongs to a different question from this month's cost to serve.

Keep each labour hour in either agreement work or additional service, once. Include escalation, vendor coordination, client documentation and account work under that scope. Work included in a fixed agreement still costs time even though it has no separate invoice.

Autotask's TimeEntries fields distinguish ticket/task references, contract, work date, hours, role and nonbillable status.[5] Map equivalent fields in your system and check export permissions, duplicates, late entries and category changes. Blank time coverage is an evidence gap. Owner-delivered service also needs an appropriate cost assumption rather than a convenient zero.

Adam Hannemann's pricing and margin articles discuss delivery cost and agreement economics.[1][2] The method here uses the explicit cost boundary below, with no universal target percentage.

Use one definition: assigned gross margin

For this review:

  • Service revenue = agreement revenue + additional-service revenue.
  • Total revenue = service revenue + pass-through revenue.
  • Assigned labour cost = each role's scoped hours × its loaded hourly cost, summed once.
  • Bundled tool cost = seats × documented blended cost per seat + fixed tool allocation.
  • Assigned direct costs = labour + bundled tools + direct subcontractors + pass-through vendor cost.
  • Assigned gross margin = total revenue − assigned direct costs.
  • Assigned gross margin percent = assigned gross margin ÷ positive total revenue × 100.

Document what loaded labour includes, such as pay, employer taxes and benefits, and the paid-hour basis. Record shared-cost allocations so the same activity or vendor bill cannot be charged in full to several clients. General overhead is excluded unless your chosen method explicitly assigns it; document any such assignment and avoid counting it again. This is a scoped management calculation, not company net profit or a statutory accounting definition.

Worked fictional row

Service revenue is $4,800; pass-through revenue and cost are both $0. There are 60 labour hours at an assumed loaded cost of $45 per hour, $600 bundled tools and $0 subcontractors.

Labour cost is $2,700. Assigned gross margin is $4,800 − $2,700 − $600 = $1,500, or 31.25% of total revenue. Service effective hourly rate is $4,800 ÷ 60 = $80. The $45 assumption is fictional, not a market wage or charge rate. The CSV example uses these same fields and definitions.

Blended margin and denominator effects

The workbook's assigned gross margin percent is blended: its denominator includes pass-through revenue. It does not calculate a separate service-only gross-margin KPI.

In a second fictional example, service revenue of $10,000 and labour, tools and subcontractor costs of $6,000 leave $4,000 before pass-through. With no resale, the assigned gross margin is 40%. Add $10,000 of resale with $10,000 of vendor cost: margin dollars remain $4,000, but the blended percentage becomes 20%. Delivery performance did not change; the denominator did. Do not compare that blended figure with a service-only target.

Service effective hourly rate uses service revenue and all scoped labour hours. Agreement effective hourly rate uses agreement revenue and agreement hours. Zero hours gives an unavailable ratio to investigate, not an infinite success. Missing costs or an unknown evidence basis leave the workbook's core result insufficient rather than silently turning unknown into zero.

Investigate the row, then choose an action

Look for repeated faults, unsupported exceptions, project work absorbed by the agreement and unbilled additional service. Absorbed after-hours and project diagnostics are subsets of agreement hours and can overlap; adding them again double-counts labour. Unbilled additional work needs a scope, authorization and billing-cutoff check before you assume money is recoverable.

Distinguish a temporary recovery incident from recurring demand. If the agreement includes the work, high effort can be an estimating or delivery problem rather than client scope creep. Correct the record, investigate a cause, review an exception or prepare a renewal conversation with a named owner.

The working discipline

Automate before you hire

Standardize the revenue, labour and cost boundary before automating matched exports and reconciliation flags. Finance and service owners still investigate missing costs, explain allocation differences and decide the client action; a generated ranking is not a pricing decision.

Review the sequence →

Worksheet / Usable takeaway

Client-review record and free workbook

  • Scope and month: [client / agreement / period].
  • Source reconciliation: [PSA / accounting / vendor cost references / differences].
  • Revenue and assigned costs: [basis / allocations / missing evidence].
  • Assigned gross margin: [dollars / blended percent / excluded costs].
  • Effective hourly rates: [service / agreement / hours boundary].
  • Evidence status: [recorded / estimated / mixed / unknown].
  • Finding and next step: [cause to check / owner / review date].

The free full workbook has eight client columns for one period, a blank copy and worked fictional examples. Keep the two-client sample if you only want to inspect the method. Neither version provides whole-book history, automatic PSA import or a service-only margin KPI. Review the accounting basis with your finance owner before using results to set prices.

Sources

Price your agreements for profit

Gross margin

Client profitability reporter

Autotask: contracts and billing reports

Autotask: TimeEntries fields and permissions

Source notes: Oct 2026. See method and evidence notes.

Search the stockroom

↑ ↓ to choose · Enter to open · Esc to close

Open the full search page →