Guide
4 min read
By MSP Margin Editorial
Projects are where MSP books most often get lumpy. A client approves a migration, pays a deposit, and the full deposit lands in revenue that month. Two months later the work is done, the last invoice is small, and the project looks like it lost money in the month the labor actually happened.
The fix is to treat billing and revenue as two separate questions. Billing is about when you invoice and collect. Revenue recognition is about when you have earned it.
Deposits are not revenue yet
A deposit is cash received before you have done the work. Under accrual accounting, it generally sits on the balance sheet as a liability, often called customer deposits or a contract liability, until the work it pays for is performed. You owe the client either the work or, in some cases, the money back.
That liability is not a technicality. If a project is cancelled halfway through, the deposit balance tells you how much you have collected but not yet earned. If you booked the whole deposit as revenue, that information is gone.
Many small MSPs keep books on a cash basis or a tax basis for internal reporting, where a deposit may be recorded as income when received. That can be acceptable for tax purposes depending on your situation, but it makes monthly project margin harder to read. Some firms keep cash-basis tax books and still track deposits as a liability in their management reporting. Ask your CPA which basis you use and what it means for deposits.
When project revenue is earned
Under U.S. GAAP (ASC 606), revenue is recognized when or as you satisfy a performance obligation by transferring the promised goods or services. For an MSP project, the key questions tend to be:
- What did you actually promise? A project may include hardware, licenses and labor, and these may or may not be separate obligations.
- Does the client receive the benefit as you work, or only at the end? Work on the client's own systems often transfers control as it happens, which can support recognizing revenue over time. Some deliverables only have value once complete.
- How do you measure progress? Hours incurred against estimated total hours is a common method for labor-heavy work. Milestones can be a reasonable proxy only if they track the work performed.
These are facts-and-circumstances judgments. Hardware delivered to a client is often recognized when control transfers, which may be well before the labor is finished. Contract terms around acceptance, cancellation and refunds can change the answer.
A deposit applied over two months
Here is an illustrative example with round numbers, assuming accrual books and a labor-based project that qualifies for over-time recognition.
A client signs a $30,000 project. Billing terms are 50% deposit at signing, 25% at installation and 25% at completion. The work spans two months.
Month one: the client pays the $15,000 deposit. By month-end your team has worked 40% of the estimated hours. Revenue earned is 40% × $30,000 = $12,000. The remaining $3,000 of the deposit stays in customer deposits.
Month two: you finish the project and invoice both milestones, $7,500 + $7,500 = $15,000. Revenue earned this month is the remaining 60%, or $18,000. That comes from the $3,000 left in deposits plus the $15,000 of new billings.
Total revenue across both months is $12,000 + $18,000 = $30,000, which matches the contract. Total billed is $15,000 + $15,000 = $30,000. The timing differs, and each month's revenue now sits next to the labor that produced it.
If progress had run ahead of billing, for example 70% complete with only the deposit invoiced, the difference would generally be an unbilled receivable or contract asset rather than a liability.
Making it work in practice
A few routines keep projects clean:
- Set up a separate balance sheet account for customer deposits, and apply deposits to the final invoices instead of letting them sit as unapplied payments.
- Track project hours in the PSA against an estimate, so you have a progress measure at month-end.
- Review open projects at close: percent complete, amount billed, amount earned and the resulting deposit or unbilled balance.
- Split hardware and labor into separate lines on the quote and invoice.
- Write down cancellation and refund terms for deposits in the statement of work.
The month-end entry itself is usually a single adjusting entry per project. The harder part is getting reliable hours and estimates, which is an operations habit more than an accounting one.
This guide is general information, not accounting or tax advice. Revenue recognition depends on your contract terms, your basis of accounting and your specific facts, so confirm your treatment with your CPA.
