Beancount.io LogoBeancount.io

MSP Bookkeeping: ASC 606, Per-Seat MRR, and the Three Numbers Buyers Check First

12 min readMike ThriftMike Thrift
MSP Bookkeeping: ASC 606, Per-Seat MRR, and the Three Numbers Buyers Check First

Two MSPs both gross $5 million a year. One sells for 7x EBITDA. The other sells for 3x — or doesn't sell at all. The difference rarely comes down to the size of the customer list, the technical certifications, or even the average revenue per user. It comes down to the books.

Buyers and lenders look at three numbers first: what percentage of revenue is monthly recurring, what percentage is concentrated in the top three accounts, and what the true service-line gross margin looks like once vendor pass-throughs are stripped out. A clean general ledger gives you those numbers in five minutes. A messy one gives you a discount, a long earnout, or a deal that dies in diligence.

This guide walks through how a small or mid-sized managed service provider should set up its books so the three numbers above are always honest, and so the day-to-day decisions — pricing a new client, sizing a tech hire, accepting a one-off project — are made on real data instead of gut feel.

Why MSP accounting is genuinely harder than it looks

A typical MSP invoice has four or five things bundled into it. A monthly per-seat fee for the managed service. A pass-through line for Microsoft 365 or Google Workspace licensing. A pass-through line for a security stack like Huntress, SentinelOne, or a managed EDR. A block of pro-services hours for a project that started two months ago. Maybe a hardware resale line for a new workstation that shipped last week.

Each line belongs in a different revenue account, has a different gross margin, and follows different rules for when revenue gets recognized. The most expensive mistake an MSP can make is to dump it all into a single "managed services revenue" account. That decision permanently hides the only metrics that matter for pricing, performance, and exit.

Step 1: Build a chart of accounts that separates the four revenue streams

At a minimum, an MSP's revenue accounts should split into:

Recurring managed services revenue. The flat per-seat or per-device fee, the security-tier add-on, the backup-and-DR plan, the after-hours coverage. This is the number that drives valuation.

Hardware and software resale. Workstations, servers, switches, monitors, peripherals — anything where you're a reseller marking up a tangible good. Gross margins here are typically 5–15%, and these dollars dilute every MSP-wide margin calculation if they're mixed with services.

Vendor licensing pass-through. Microsoft 365, Google Workspace, Acronis, Datto, your PSA/RMM stack billed back to clients. These flow through your P&L but they aren't really your revenue in the way a per-seat managed-services fee is. Many MSPs report this on a net basis under ASC 606 because they're acting as an agent, not a principal. The distinction matters — more on that below.

Project and professional services revenue. Block-hour engagements, one-off migrations, network refreshes, vCIO retainers, M&A IT integration work. Non-recurring, lumpy, lower-multiple revenue.

Inside the cost-of-revenue accounts, mirror the structure: a separate COGS account for each revenue stream so service-line gross margin pops out of a single P&L view. The bookkeeping convention some MSP CFOs use is to suffix every COGS line with the matching revenue line ("COGS — Recurring Managed Services," "COGS — Vendor Licensing," and so on).

This single change — splitting four revenue streams and four COGS lines — is the foundation everything else in this article depends on.

Step 2: Recognize recurring revenue under ASC 606 the right way

When a client signs a three-year, $180,000 managed-services agreement and pays $60,000 upfront for year one, the cash hits the bank but the revenue does not. Under ASC 606, that $60,000 is a contract liability — deferred revenue — recognized ratably over the twelve months as the services are delivered.

The mechanics in your general ledger look like this. On the day the cash arrives, debit Cash $60,000 and credit Deferred Revenue $60,000. At the end of each month, debit Deferred Revenue $5,000 and credit Recurring Managed Services Revenue $5,000. The same logic applies to annual security-stack subscriptions, prepaid block-hour packages, and any multi-month commitment.

The two places MSPs most often go wrong:

Multi-element contracts. An onboarding fee bundled with a managed-services agreement is usually not a separate performance obligation under ASC 606 — it has no standalone value to the client. The onboarding revenue gets recognized over the contract term, not on day one when it was billed. Booking it upfront inflates first-month revenue and creates a cliff in month two.

Block-hour packages. A $10,000 prepaid block of 50 hours is deferred revenue, not service revenue, on the day the cash arrives. Revenue gets recognized as hours are consumed against the block. If unused hours expire after twelve months, the breakage goes to revenue at expiry — but only if your contract clearly states the expiration policy.

The simplest test for whether your deferred revenue process is working: pull the deferred revenue balance at month end and divide by the next month's expected revenue release. If the number is roughly equal to the average length of your prepaid commitments, the schedule is healthy. If it's wildly off, something is being recognized too early or too late.

Step 3: Decide whether vendor pass-throughs are gross or net revenue

This is the question that trips up almost every growing MSP, and the answer determines whether your revenue line is honest or inflated.

Under ASC 606, you report revenue on a gross basis when you're the principal in the transaction — meaning you control the good or service before it transfers to the customer, you bear inventory risk, and you have discretion in setting the price. You report on a net basis when you're the agent — facilitating the transaction between the vendor and the client.

For most CSP-tier Microsoft 365 resale, the MSP is the principal: you have the customer relationship, you set the price (with a markup over the cost from the distributor), you handle support, and you bear collection risk. Gross reporting is generally appropriate.

For arrangements where you're effectively a referral partner — the client is billed directly by the vendor and you get a commission — you're an agent, and only the commission belongs in revenue.

Two practical implications:

Gross-basis reporting inflates revenue but compresses gross margin. If you resell $1,000 of Microsoft 365 at a 10% markup, gross-basis reporting puts $1,100 in revenue and $1,000 in COGS — a 9% gross margin on that line. The same transaction on a net basis would put $100 in revenue and zero in COGS — a 100% gross margin on that line, with revenue ten times smaller.

Buyers normalize to net. A sophisticated acquirer will strip out pass-through margin and look at what your services actually generate. If your reported $5 million in revenue is really $3 million in services and $2 million in pass-through hardware and licensing, you'll be valued on the $3 million. Reporting gross doesn't fool anyone in diligence — it just makes your reported margins look worse and forces a longer cleanup conversation.

The CFO consensus for most MSPs in the $1–$50M revenue range: report gross where you're truly the principal, but always maintain a parallel "services-only" revenue view in your management reporting so you can answer the question buyers and lenders actually want answered.

Step 4: Track labor cost and utilization with brutal honesty

The single biggest hidden cost in an MSP is the underutilized technician. If a senior engineer fully loaded costs you $90 per hour (base wage plus burden), and they're billable on 1,200 of their 2,000 available hours per year, every percentage point of utilization below your target is real money walking out the door.

The formula:

  • Effective hourly cost = (base wage + benefits + payroll taxes + paid time off + tools) ÷ available work hours per year
  • Burden rate for most MSPs runs 25–45% on top of base wages
  • Target utilization for billable technicians: 70–80% (industry benchmark)
  • Effective billable rate = revenue from billable work ÷ billable hours actually delivered

The discipline that separates profitable MSPs from struggling ones is recording every technician's time against a ticket — even when the work is part of a flat-fee managed-services contract. The customer doesn't get a bill for it, but you need the data internally to compute service-line profitability. If a flat-fee client consumes 40 hours of senior labor a month at an effective hourly cost of $90 — $3,600 in labor — and pays you a $2,500 flat fee, that client is unprofitable. Without time tracking, you'd never know.

Most modern PSAs (ConnectWise, HaloPSA, Autotask, Syncro) handle this if you actually enforce time entry. The bookkeeping piece is making sure your monthly journal entry to accrue technician labor matches the hours that flowed through the PSA, and that those hours are allocated across the right COGS accounts.

Step 5: Watch the three numbers that drive valuation

When an MSP comes up for sale, the buyer's first hour with your financials is spent computing the same three numbers. Build your bookkeeping so these are accurate at any moment, not just when you're preparing for a transaction.

MRR percentage. Monthly recurring revenue divided by total revenue. The 2026 industry benchmark sits around 74% — meaning three-quarters of MSP revenue is now recurring, up from 62% in 2020. Firms with 80%+ MRR consistently command valuation multiples 1–2 turns higher than project-heavy firms. At 90%+, you're in premium territory.

Customer concentration. Revenue from your top one, three, and five clients as a percentage of total revenue. If any single client is above 15% you have a concentration problem; above 20% expect a meaningful valuation discount; above 30% expect deal-structure consequences like earnouts, escrows, or holdback. Run this calculation quarterly and have a plan when a client crosses the threshold.

Service-line gross margin. Recurring managed services should run 50–60% gross margin in a healthy MSP. Pro-services should run 30–40%. Hardware resale runs 5–15%. Vendor licensing pass-through depends on your CSP tier and procurement discipline. If any line is materially below benchmark for two quarters in a row, the cause is almost always either (a) underpriced relative to labor cost, (b) overstaffed for current ticket volume, or (c) a vendor cost increase you didn't pass through.

Average MSP gross margin sits at 52% in 2025 (up from 48% in 2022), and average EBITDA margin at 18.4% (up from 14.7%). Most successful firms target a net profit margin of 20–30%, with well-optimized shops hitting 35% or more.

Step 6: Reserve for the realities of the business

A few liability accounts every MSP should carry on the balance sheet, even if the dollars feel small:

Warranty and re-work reserves. When a project doesn't perform to spec and you owe the client free labor to fix it, you're better off reserving for the expected cost when the project closes rather than booking the loss in a later period.

SLA credits payable. If your contracts include service-level guarantees with penalty credits when you miss them, those credits become a contract liability the moment the breach occurs, not when the client invokes the credit.

Annual vendor true-ups. Microsoft NCE renewals, RMM seat counts that move quarterly, security tool licenses that auto-bill — accrue for the difference between what you've billed clients and what you'll owe the vendor at the renewal date.

These accounts won't move your monthly numbers much in isolation, but the cumulative effect on a clean balance sheet is the difference between a buyer who trusts your books and one who asks for a 20% holdback.

Why plain-text bookkeeping fits an MSP unusually well

MSPs already live in a world of version control, IaC, and "if it isn't in Git it doesn't exist." Plain-text accounting applies the same discipline to financial data: every transaction is a text-file entry, every change is diffable, and the whole ledger is auditable and reproducible. When a buyer's due-diligence team asks for the underlying support behind a specific deferred-revenue release four years ago, you can produce the exact commit that booked it.

For an MSP, the practical advantages are real:

  • The deferred-revenue schedule is auto-derivable from the original contract entries, not a brittle spreadsheet maintained by hand
  • Service-line gross margins fall out of standard reports because the COGS structure mirrors the revenue structure
  • Customer-concentration metrics are a one-line query, not a quarterly export-and-pivot exercise
  • Multi-entity MSPs (acquired locations, separate legal entities for different service lines) consolidate cleanly because the ledger structure is the same everywhere

Keep Your MSP Books Investor-Ready From Day One

Whether you're growing the business to keep, planning an exit in five years, or just trying to understand which clients are actually profitable, the foundation is the same: a chart of accounts that tells the truth about recurring revenue, service-line margins, and customer concentration. Beancount.io offers plain-text accounting that gives you complete transparency and version control over your financial data — built for the kind of operators who already think in code. Get started for free and bring the same engineering discipline to your books that you bring to your stack.


Sources: