Revenue Recognition for Service Firms: How to Apply ASC 606 Without an Accounting Degree

Revenue recognition sounds like an accounting technicality until the IRS questions why you’re reporting $200,000 less revenue than your bank deposits show. Or your banker asks why your financial statements look worse than your actual profitability. Or your CPA says you’ll owe $50,000 in back taxes because you recognized revenue too early on a fixed-price project.

For professional services firms—consulting, marketing agencies, accounting firms, IT services, law firms, recruiting agencies—getting revenue recognition right affects your taxes, your financial statements, your ability to get a loan, and your understanding of how the business actually performs. Yet many owners operate on a cash basis without realizing that ASC 606 (the standard that governs how to account for revenue) is now the baseline for any firm with serious ambitions.

The good news: you don’t need an accounting degree to understand this. You need clarity on five core concepts and an intentional workflow. This guide breaks down ASC 606 into practical steps that work for the three billing models most service firms use.

What Is Revenue Recognition and Why Should You Care?

Revenue recognition answers one deceptively simple question: when do you get to count money as revenue?

The difference between cash received and revenue earned creates confusion for many service firm owners. When a client pays you $50,000 upfront for a three-month project, that’s $50,000 in cash. But under accrual-basis accounting, you haven’t earned $50,000 in revenue yet—you’ve received a liability (money you owe them in services). As you deliver work over three months, you gradually earn that revenue.

This distinction matters because it affects:

  • Tax planning: Cash basis and accrual basis are different tax treatments. The IRS allows certain small businesses to use cash basis, but most professional services firms that seek financing or grow beyond ~$25 million in average annual gross receipts must use accrual basis.
  • Financial statement accuracy: Recognizing revenue too early inflates your top line and hides real profitability. Recognizing it too late makes your business look worse than it is, which harms your ability to secure loans or attract investment.
  • Loan eligibility: Banks and SBA lenders use GAAP-compliant financial statements (prepared on accrual basis) to evaluate credit risk. If you’re reporting revenue on a cash basis to your CPA, your revenue recognition method may need adjustment for lending purposes.
  • Business valuation: When you sell your firm or raise capital, buyers and investors value your business based on GAAP-compliant financials. Sloppy revenue recognition damages valuation multiples.
  • Tax liability: Switching from cash basis to accrual basis triggers a “section 481(a) adjustment” that can increase your tax bill substantially if not planned properly.

The GAAP standard: If you employ more than a handful of people or aspire to professionalize your firm, you should operate on accrual-basis accounting, which requires following GAAP (Generally Accepted Accounting Principles). ASC 606 is the GAAP standard that defines how and when to recognize revenue.

ASC 606: The Five Steps (Simplified)

ASC 606 breaks revenue recognition into five steps. Each step is straightforward once you understand it. Let’s walk through them with professional services examples.

Step 1: Identify the Contract with the Customer

A contract is any agreement—written or verbal (though written is safer)—that creates obligations for both parties and a right to payment. For service firms, this is your statement of work (SOW), engagement letter, retainer agreement, or purchase order.

You need to identify three things: (1) who the customer is, (2) what you’re committing to deliver, and (3) what they’re committing to pay.

Example: You sign an SOW with Acme Corp for a six-week marketing audit and strategy project at $35,000 fixed price. This is your contract. The contract must be legally enforceable and the customer must intend to pay. If your customer can cancel without consequence and you have no recourse, it may not be a valid contract for revenue recognition purposes.

Step 2: Identify Performance Obligations

A performance obligation is a distinct deliverable or service you’ve committed to provide. A single contract may contain multiple performance obligations.

For service firms, performance obligations are usually:

  • Individual deliverables (e.g., “deliver a competitive analysis report”)
  • Milestones (e.g., “complete Phase 2 by date X”)
  • Ongoing services (e.g., “provide 40 hours per month of IT support”)
  • Time-based services (e.g., “provide a retainer for up to 20 hours of general consulting per month”)

Example: Your $35,000 marketing audit contract has two performance obligations: (1) deliver the audit report and (2) deliver the strategy presentation. These are distinct because the customer could theoretically cancel the strategy portion without the audit becoming worthless.

Another example: A retainer agreement to provide “up to 20 hours per month of bookkeeping” for $3,000/month is a single performance obligation (ongoing bookkeeping service) satisfied over time.

Step 3: Determine the Transaction Price

The transaction price is what the customer pays you. It sounds simple, but it includes:

  • Fixed fees (e.g., $50,000 for a project)
  • Hourly rates multiplied by estimated hours (e.g., 200 hours × $150/hour = $30,000)
  • Variable consideration (e.g., success fees or volume discounts)
  • Any discounts, returns, or rebates

Example: Your $35,000 marketing audit contract has a transaction price of $35,000. But if you included a 10% discount if they sign a retainer within 30 days, the transaction price is $31,500 (or you recognize $35,000 and record a liability for the expected discount).

Hourly example: You estimate a project at 200 hours at $150/hour. Your transaction price is $30,000, but this is an estimate. The actual price may be higher or lower depending on actual hours. ASC 606 says to use the “most likely amount” or “expected value” of consideration you expect to receive. If you typically overrun your estimates by 10%, you might recognize revenue on a $33,000 transaction price, or you might recognize revenue only as hours are billed (a safer approach).

Step 4: Allocate the Transaction Price to Performance Obligations

If your contract has multiple performance obligations, you must allocate the transaction price to each one based on their standalone selling price.

Example: Your $35,000 contract includes two deliverables: the audit report and the strategy presentation. You estimate the audit would sell for $20,000 standalone and the strategy for $18,000 standalone (total $38,000). You allocate the $35,000 price as follows:

  • Audit: ($20,000 ÷ $38,000) × $35,000 = $18,421
  • Strategy: ($18,000 ÷ $38,000) × $35,000 = $16,579

This allocation matters because you’ll recognize revenue for each obligation separately (Step 5). When you deliver the audit, you recognize $18,421. When you deliver the strategy, you recognize $16,579.

Step 5: Recognize Revenue When Performance Obligations Are Satisfied

Revenue is recognized when you satisfy a performance obligation—meaning the customer obtains control of the promised service. Control is transferred either:

At a point in time: You deliver something distinct and the customer immediately uses it. Example: delivering a finished report, completing a one-time audit, deploying a software system.

Over time: The customer simultaneously receives and consumes your service as you perform it. This is common for ongoing services. Example: monthly bookkeeping, retainer consulting hours, staff augmentation.

For over-time recognition, you need an objective measure of progress:

  • Hourly work: Use billable hours completed ÷ total estimated hours = % complete. Recognize revenue proportionally.
  • Fixed-price projects: Use task completion percentage, hours expended, or costs incurred compared to budget. Recognize revenue proportionally.
  • Retainers: Use hours consumed ÷ hours available in the period. Recognize revenue as hours are utilized.

Example—Point in time: You deliver the final marketing strategy presentation. On delivery, you satisfy the performance obligation and recognize $16,579 in revenue (from our allocation above).

Example—Over time: You’re contracted for 40 hours per month of bookkeeping at $100/hour = $4,000/month. Each month, you recognize $4,000 as services are provided (proportional to hours completed). If you complete only 30 hours in month one, you recognize $3,000 in month one and defer $1,000 to month two.

Revenue Recognition by Billing Model

Professional services firms typically operate on one of three billing models. Each has distinct revenue recognition treatment. Let’s examine how each interacts with the five-step process and how to track them operationally.

Hourly Billing: The Simplest Model

Hourly billing is the simplest revenue recognition scenario. You track billable hours, multiply by your hourly rate, and recognize revenue as services are performed.

The mechanics: Your integrated CRM and project management system tracks time entries with billable flags. A developer logs 8 hours of billable work. At $150/hour, that’s $1,200 of billable revenue recognized immediately (or at month-end, when you review and approve time entries).

The formula is straightforward:

billable_hours × hourly_rate = billable_amount → recognized as revenue

This method works because the performance obligation (hourly labor) is satisfied over time as hours are logged. The customer consumes your services simultaneously as you provide them. There’s no ambiguity about progress or completion.

Journal entry: When you post time entries in your project management tool and mark them billable, you’re creating the basis for your revenue entry. At month-end, you review all billable time entries:

Dr. Accounts Receivable (or Cash)  $5,200
  Cr. Service Revenue              $5,200
(To recognize hourly revenue for all billable time entries posted in month)

Advantages:

  • Revenue recognition is objective and tied to actual work performed.
  • It’s simple to audit and defend to your CPA.
  • It naturally aligns compensation incentives (your team is motivated to log billable time).

Challenges:

  • Clients may not accept hourly billing (many prefer fixed pricing).
  • You bear no risk if you’re inefficient; the client bears the overrun risk. This limits your margins on complex work.
  • Billing disputes arise if the client disputes time logged.

QuickBooks Online integration: In QBO, you can set up a service revenue account for hourly services and post journal entries monthly based on billable time reports from your PM system. Some PM systems integrate directly with QBO, auto-posting billable time to revenue. Reconcile monthly to ensure all time entries are captured.

Fixed-Price Projects: The Complex Model

Fixed-price projects are the highest-margin billing model but require disciplined revenue recognition using the percentage-of-completion method.

The core concept: You contract for a fixed fee ($50,000) to deliver a defined scope. Revenue is recognized over time as you complete the work, based on your progress toward completion. You measure progress objectively using budget tracking and task completion percentage.

The formula is:

percent_complete × contract_price = cumulative_revenue_to_date

Example: You contract for $50,000 to build a custom software integration. Your project plan includes 100 specific tasks. After 4 weeks, 40 tasks are complete (40% done). You recognize $20,000 in revenue (40% × $50,000).

But here’s the critical part: you also recognize the expenses incurred to date. If you’ve spent $12,000 in labor and materials (70% of your estimated $17,000 cost), you recognize $12,000 in expenses. Your gross profit to date is $20,000 - $12,000 = $8,000.

Measuring progress: Your project management system should track progress objectively. Common approaches:

  1. Task-based completion: Count completed tasks vs. total tasks. Your PM system shows a “task_completion_pct” property that updates as tasks move from backlog → in progress → done.

  2. Hour-based completion: Track hours incurred vs. budgeted hours. If you’ve used 800 hours and budgeted 2,000 hours, you’re 40% complete.

  3. Cost-based completion: Track costs incurred vs. budgeted costs. Less common for service firms but used in construction.

  4. Milestone-based: Recognize revenue only when major milestones are hit (Phase 1 complete, Phase 2 complete, etc.). This is a variant of point-in-time recognition and requires care to ensure each milestone is a distinct deliverable.

Journal entries for fixed-price projects:

At month-end, review project completion status and post two related entries:

Entry 1: Record revenue based on % completion
Dr. Accounts Receivable (or Unbilled Revenue)  $20,000
  Cr. Service Revenue                          $20,000
(To recognize fixed-price revenue at 40% completion)

Entry 2: Record expenses incurred
Dr. Cost of Service Revenue                    $12,000
  Cr. Accrued Salaries / Materials / Expenses  $12,000
(To record labor and materials incurred on fixed-price project)

The Unbilled Revenue account: When you’ve recognized revenue on a fixed-price project but haven’t yet invoiced the client, you create an asset called Unbilled Revenue. This appears on your balance sheet as a current asset and represents work you’ve completed but not yet billed.

Dr. Unbilled Revenue                           $20,000
  Cr. Accounts Receivable (when you eventually invoice)
(To reclassify recognized revenue as invoiced)

This is crucial for financial clarity. Unbilled Revenue tells you how much cash you’ve earned but haven’t collected.

Work-in-Progress (WIP): Fixed-price projects also require tracking WIP. Your balance sheet should include a WIP account under current assets showing the cumulative cost incurred on projects not yet complete. At project completion, WIP is cleared and replaced by the final revenue recognition.

Challenges with fixed-price revenue recognition:

  • Overrun risk: If you underestimate costs, your margin erodes. A project budgeted at $50,000 revenue with $20,000 cost (75% margin) becomes 50% margin if costs hit $25,000.
  • Percentage estimation error: If you misestimate completion percentage (claiming 40% done when you’re actually 25% done), you overstate revenue and must reverse the overstatement later.
  • Scope creep: If the client changes scope but you don’t adjust the contract price, your revenue stays fixed but your costs increase.
  • Contract interpretation: Sometimes contracts are ambiguous about what “complete” means, which complicates progress measurement.

Best practice: Use your project management system to track task completion objectively. Don’t estimate completion; measure it. If your PM system shows task_completion_pct, use that. If it doesn’t, implement time tracking and use hours incurred vs. hours budgeted.

Retainers: The Recurring Revenue Model

Retainers are a hybrid model: a client pays a fixed amount per month for up to a certain number of hours. Revenue is recognized monthly as hours are consumed.

The mechanics: A client pays $3,000/month for up to 20 hours of bookkeeping. Your performance obligation is to provide 20 hours of available service each month. As hours are logged and marked billable, revenue is recognized. Unused hours are forfeited (typical) or rolled over (less common).

Journal entry—Month 1 with full utilization:

Dr. Cash                                       $3,000
  Cr. Deferred Revenue (Liability)             $3,000
(To record retainer payment in advance)

Dr. Deferred Revenue                           $3,000
  Cr. Service Revenue                          $3,000
(To recognize revenue as 20 hours are utilized in month)

Journal entry—Month 2 with partial utilization (15 hours used):

Dr. Cash                                       $3,000
  Cr. Deferred Revenue (Liability)             $3,000
(To record month 2 retainer payment)

Dr. Deferred Revenue                           $2,250
  Cr. Service Revenue                          $2,250
(To recognize revenue for 15 hours utilized; 5 hours forfeited)

Notice that you don’t recognize the full $3,000 because the client used only 15 of 20 hours. The forfeited 5 hours are recognized as revenue too (some firms debate this; conservative accounting defers it until the client runs out of hours). The exact treatment depends on your retainer terms.

The balance sheet impact: Deferred Revenue (a liability) decreases as you recognize revenue. On your balance sheet, deferred revenue tells you how much you’ve been paid in advance that you still owe in services.

Tracking earned vs. deferred retainer hours: Your project management system should track:

  • Hours available in current retainer period
  • Hours logged and marked billable
  • Hours remaining (available - logged)
  • Whether unused hours roll over or are forfeited

This data feeds directly into your revenue recognition. If you have 20 clients on monthly $2,000 retainers (20 hours each), you’re recognizing ~$40,000/month in retainer revenue if fully utilized, minus any unused hours.

Retainer challenges:

  • Scope ambiguity: Clients push back when you cap hours. “I thought the retainer covered anything I needed.” Precise contract language and enforcement are essential.
  • Unused hours: How do you account for them? Do they roll forward? Can the client request a refund? This must be defined in the retainer agreement and will affect your revenue recognition.
  • Resource planning: Retainers lock your team’s capacity. If a client uses only 10 of 20 hours, you’ve lost the ability to sell those hours elsewhere. Ensure retainer rates are high enough to compensate.
  • Month-end reconciliation: Reconciling retainer utilization across multiple clients is manual and error-prone without good PM systems.

The GL Account Structure for Revenue Recognition

To implement revenue recognition correctly, your chart of accounts needs the right structure. Here are the essential accounts:

Revenue (Income Statement):

  • Service Revenue - Hourly
  • Service Revenue - Fixed Price
  • Service Revenue - Retainer
  • (Optional: Service Revenue by client, service line, or engagement type for granular reporting)

Assets (Balance Sheet):

  • Accounts Receivable (amounts billed but not yet paid)
  • Unbilled Revenue (revenue recognized but not yet billed, particularly for fixed-price projects)
  • Work-in-Progress (cumulative cost incurred on incomplete fixed-price projects)

Liabilities (Balance Sheet):

  • Deferred Revenue - Retainer (amounts received but not yet earned)
  • Deferred Revenue - Prepaid (amounts received for prepaid services)

Expenses (Income Statement):

  • Cost of Service Revenue - Labor
  • Cost of Service Revenue - Subcontractors
  • Cost of Service Revenue - Materials / Software

This structure allows you to:

  1. Separately track revenue by billing model.
  2. Report unbilled revenue (important for understanding cash vs. revenue timing).
  3. Report WIP (critical for fixed-price project health).
  4. Report deferred revenue (essential for understanding liability and recurring revenue quality).

In QuickBooks Online, set up these accounts carefully and train your team on which account to use for each transaction type. This discipline pays dividends when you run financial reports; you’ll be able to see exactly how much revenue you’ve earned but not yet billed, and how much cash you’ve received but not yet earned.

Common Revenue Recognition Mistakes

Even firms with good intentions stumble. Here are the six most common mistakes and how to avoid them.

Mistake 1: Recognizing Revenue Too Early (Before Performance)

The error: A client pays $50,000 upfront for a three-month fixed-price project. You recognize the entire $50,000 as revenue on day 1.

The problem: You’ve violated the fundamental principle of ASC 606. Revenue should be recognized as you satisfy performance obligations, not when cash arrives. On day 1, you haven’t delivered any service yet. By recognizing $50,000 upfront, you’ve inflated your revenue and understated your liability.

The fix: On receipt of the $50,000, debit Cash and credit Deferred Revenue. As you complete work (using percentage-of-completion), move Deferred Revenue to Service Revenue. At month-end, if you’re 40% done, recognize $20,000 of the deferred revenue as earned.

Mistake 2: Failing to Defer Retainer Income

The error: A client pays $3,000 for a monthly retainer on January 15. You record:

Dr. Cash $3,000
  Cr. Service Revenue $3,000

The problem: You’ve recognized the full $3,000 as revenue immediately, even though you haven’t provided any service yet. If the client never uses the retainer (or uses only half), you’ve misrepresented your revenue.

The fix: Record the payment as a liability:

Dr. Cash $3,000
  Cr. Deferred Revenue $3,000

As you provide the service (typically monthly), move the deferred revenue to earned revenue:

Dr. Deferred Revenue $3,000 (or less, based on hours utilized)
  Cr. Service Revenue $3,000

Mistake 3: Mixing Cash Basis and Accrual Basis

The error: You record some revenue when cash is received (cash basis) and other revenue when it’s earned (accrual basis). Your financial statements are a hybrid that doesn’t comply with GAAP.

The problem: Your financial statements are unreliable. Banks and investors won’t trust them. Your tax return may not align with your financial statements, creating audit risk.

The fix: Commit to accrual basis accounting. Every transaction should follow accrual principles: revenue is recorded when earned (regardless of cash), expenses when incurred. This requires discipline and a good bookkeeper or accountant, but it’s non-negotiable for professional firms.

Mistake 4: Not Tracking WIP on Fixed-Price Projects

The error: You contract for a $100,000 fixed-price project. You recognize $40,000 in revenue when 40% complete, but you don’t track the costs incurred to date. Your income statement shows $40,000 revenue with no corresponding cost, implying 100% gross margin.

The problem: You don’t actually know your profitability on the project. If you’ve incurred $45,000 in costs, you’re actually operating at a loss despite revenue recognition. Without WIP tracking, you discover this only at project completion.

The fix: Implement concurrent cost tracking. As you recognize revenue on fixed-price projects, simultaneously record the costs incurred. Your income statement will show both revenue and corresponding cost, revealing true project profitability in real time.

Mistake 5: Over-Recognizing on Percentage-of-Completion

The error: You estimate a project to be 50% complete based on a casual assessment. You recognize 50% of revenue. But actually, you’re only 30% done. You’ve overstated revenue.

The problem: You’ll be forced to reverse the overstatement in a future period, which distorts financial statements and raises questions from your accountant or auditor.

The fix: Use objective measures of completion, not estimates. Require your PM system to track actual task completion, actual hours logged, or actual costs incurred. Use those real numbers, not guesses.

Mistake 6: Failing to Monitor Retainer Deferred Revenue Balance

The error: You have five retainer clients. Each pays $2,000/month in advance. Your Deferred Revenue account should show $10,000. But you haven’t reconciled it, and the actual balance is $8,000. You’ve mismatched cash receipts with revenue recognition.

The problem: Your balance sheet is inaccurate, and you don’t know whether the discrepancy is a simple reconciliation error or a real accounting issue.

The fix: Reconcile Deferred Revenue monthly. Create a schedule showing:

  • Deferred Revenue balance at start of month
  • Plus: New retainer cash received
  • Minus: Retainer revenue recognized
  • Equals: Deferred Revenue balance at month-end

Verify the calculated balance matches your GL. Investigate any discrepancies immediately.

Tax Implications and When to Call Your CPA

Revenue recognition timing affects your tax liability. Understanding these implications prevents surprises.

Cash Basis vs. Accrual Basis for Tax Purposes

The IRS allows businesses below certain thresholds to use cash-basis accounting for tax purposes (revenue recognized when cash is received, expenses when paid). However, if you operate on accrual basis for financial reporting (which you should), you’ll typically want to use accrual basis for tax purposes as well to align with your financial statements.

If you’re currently on cash basis for taxes and want to switch to accrual, you’ll file a Form 3115 (Application for Change in Accounting Method) with your tax return. This triggers a “section 481(a) adjustment,” which is a one-time catch-up of income or expense that results from the change. If you have significant accrued revenue or deferred expenses when you switch, the adjustment can be substantial (and taxable in the year of change).

Example: You operate on cash basis and have $75,000 in accrued revenue (billed but not paid) and $20,000 in deferred expenses (paid but not yet expensed). When you switch to accrual basis, the section 481(a) adjustment is $75,000 - $20,000 = $55,000 of additional income, all taxable in the year of change. This could mean a $15,000+ tax bill in a single year.

Best practice: Discuss a potential accounting method change with your CPA well in advance. You can spread the section 481(a) adjustment over multiple years in some cases, reducing the single-year tax impact.

Quarterly Estimated Taxes

If you operate on accrual basis, your revenue recognized in a quarter may differ from cash collected. Yet estimated quarterly taxes are typically based on expected annual income. If you recognize $150,000 in revenue this quarter (accrual basis) but collect only $80,000 in cash, your quarterly tax liability is still based on the $150,000 figure, creating a cash flow mismatch.

Best practice: Coordinate with your CPA on quarterly estimated tax payments. Base estimates on your accrual-basis revenue, not cash. This prevents underpayment penalties. Plan for the cash to follow revenue within a reasonable period.

Revenue Recognition and Gross Receipts Tax

Some states (Arizona, New Mexico, Texas) have a gross receipts tax that applies to your revenue. This tax is calculated on gross revenue, not taxable income. Revenue recognition differences affect this calculation.

If you recognize revenue on accrual basis but the state taxes you on cash receipts, there’s a permanent misalignment. Confirm with your state CPA how revenue recognition affects your gross receipts tax filing.

Putting It Into Practice: Month-End Revenue Recognition Workflow

Here’s a practical workflow to ensure revenue recognition is done correctly every month.

Week 1-3: Ongoing Work During the Month

  1. Daily: Your team logs time entries in your PM system, marking them as billable or non-billable.
  2. Weekly: Project managers review active fixed-price projects and update task completion status in the PM system.
  3. Ongoing: As invoices are sent to clients, record them in QuickBooks (Accounts Receivable and Service Revenue, or Unbilled Revenue → Accounts Receivable).

Week 4 (Month-End Closing)

Step 1: Gather PM data (Day 1-2)

Export from your PM system:

  • All billable time entries logged in the month (hourly projects)
  • Project completion percentages for all fixed-price projects
  • Retainer utilization (hours used vs. available) for each retainer client

Verify this data is accurate. Spot-check entries, confirm task completion estimates, validate retainer utilization against time logs.

Step 2: Calculate revenue recognition by billing model (Day 2-3)

For hourly projects: Sum all billable hours × hourly rate = total hourly revenue to recognize.

For fixed-price projects: For each project, calculate:

  • Project completion percentage (from PM system)
  • Cumulative revenue to date = completion % × contract price
  • Revenue already recognized in prior months (from GL)
  • Current month revenue = cumulative - prior months

For retainers: For each retainer, calculate:

  • Hours available this month
  • Hours utilized (from time logs)
  • Revenue to recognize = (hours utilized ÷ hours available) × retainer fee
  • Unused hours: Some firms recognize these as revenue (service provided, capacity consumed); others defer until end of retainer. Follow your policy consistently.

Step 3: Review cost tracking for fixed-price projects (Day 3)

For each fixed-price project, gather:

  • Labor costs incurred this month
  • Subcontractor costs
  • Materials or direct expenses
  • Total month costs

Compare cumulative costs to budgeted costs. Is the project tracking to budget? If not, is the completion percentage still accurate? If you’ve spent more than expected, you may need to revise completion estimates downward, which reduces cumulative revenue to date.

Step 4: Post revenue journal entries in QuickBooks Online (Day 4)

Create separate entries for each revenue type:

Hourly Revenue Entry:

Dr. Accounts Receivable (or Cash)              $[hourly total]
  Cr. Service Revenue - Hourly                 $[hourly total]
(To recognize hourly revenue for [month name])

Fixed-Price Revenue Entry:

Dr. Unbilled Revenue (or Accounts Receivable)  $[fixed total]
  Cr. Service Revenue - Fixed Price            $[fixed total]
(To recognize fixed-price revenue at month-end)

Fixed-Price Cost Entry (simultaneously):

Dr. Cost of Service Revenue                    $[costs incurred]
  Cr. Accrued Salaries / Accounts Payable      $[costs incurred]
(To record labor and direct costs on fixed-price projects)

Retainer Revenue Entry:

Dr. Deferred Revenue - Retainer                $[retainer earned]
  Cr. Service Revenue - Retainer               $[retainer earned]
(To recognize earned retainer revenue)

Step 5: Reconcile and verify (Day 4-5)

Review your GL accounts:

  • Service Revenue should reconcile to your PM export. If hourly revenue in QB doesn’t match billable hours from PM, investigate the discrepancy.
  • Unbilled Revenue should match recognized revenue not yet invoiced. As you send invoices in future months, move Unbilled Revenue to Accounts Receivable.
  • Deferred Revenue - Retainer should reconcile to retainer prepayments received minus retainer revenue recognized. Your balance should equal prepaid retainers not yet earned.
  • Cost of Service Revenue should match the costs tracked in your PM system for projects in progress.

Step 6: Run financial statements

Generate your income statement and balance sheet. Review:

  • Total revenue by type (hourly, fixed, retainer). Does it make sense relative to your staffing and capacity?
  • Unbilled Revenue (assets). This is cash earned but not yet collected. As a percentage of total revenue, it indicates how quickly you bill.
  • Deferred Revenue (liabilities). This is cash received but not yet earned. High deferred revenue is healthy (future work committed).
  • Cost of Service Revenue vs. Service Revenue. Your gross margin. Typical service firms target 60-75% gross margin.

If anything looks off, investigate. Don’t just post entries and move on.

Key Takeaways

  1. Revenue recognition is not optional. ASC 606 is the accounting standard for GAAP-compliant financial statements. If you operate a professional services firm with real growth ambitions, you should follow it.

  2. Cash and revenue are not the same. Cash received is an asset. Revenue earned is income. They align over time, but not in every transaction. Accrual accounting reconciles them properly.

  3. Your billing model determines your revenue recognition method.

    • Hourly: Recognize revenue as hours are logged.
    • Fixed-price: Recognize revenue based on percentage of completion (task status, hours, or costs).
    • Retainer: Recognize revenue monthly as hours are consumed; defer the rest as a liability.
  4. Use your PM system as a source of truth. Task completion percentages, billable time tracking, and budget tracking are the foundation of accurate revenue recognition. If your PM system doesn’t track these, it’s not fit for purpose.

  5. Deferred revenue is healthy. If clients pay retainers in advance or prepay projects, record these as liabilities initially. This conservative approach is correct under ASC 606. Deferred revenue also indicates future work committed, which is a good leading indicator of future cash flow.

  6. Reconcile monthly. Set aside time at month-end to verify that your GL accounts (Unbilled Revenue, Deferred Revenue, WIP, revenue by type) reconcile to your PM data. This discipline catches errors early and builds confidence in your financial statements.

  7. When in doubt, defer revenue rather than recognize it. If there’s ambiguity about whether you’ve truly satisfied a performance obligation, it’s safer to defer revenue and recognize it later. This conservative approach is less likely to trigger audit findings or restatement issues.

Frequently Asked Questions

Q: Do I have to use ASC 606 if I’m a small firm?

A: Not technically. ASC 606 applies to publicly traded companies and entities that follow GAAP. Very small firms (sole proprietors, partnerships with minimal staff) may operate on cash basis and use tax accounting. However, if you’re seeking loans, raising capital, or operating as a formal corporation with real revenue, GAAP compliance (including ASC 606) is standard. It’s the language that banks, investors, and professional stakeholders understand.

Q: What’s the difference between “over time” and “at a point in time” revenue recognition?

A: “Over time” revenue is recognized gradually as you perform services (ongoing, continuous value delivery). Example: monthly bookkeeping. “At a point in time” revenue is recognized when a specific deliverable is completed and control transfers to the customer. Example: final delivery of a report. For service firms, most revenue is over-time (hourly and retainer) or over-time with periodic checkpoints (fixed-price via percentage of completion). Point-in-time is rare but can apply to one-time deliverables.

Q: How do I know if my fixed-price project is 40% complete vs. 45% complete?

A: Don’t estimate. Measure. Use your PM system to track either task completion, hours expended vs. budgeted, or costs incurred vs. budgeted. If your PM shows 40 of 100 tasks completed, you’re 40% complete. If you’ve logged 800 of 2,000 budgeted hours, you’re 40% complete. The key is objectivity. Avoid eyeballing it.

Q: Can I recognize revenue on a contract if the customer hasn’t paid yet?

A: Yes. Under accrual accounting, you recognize revenue when earned, not when paid. So if you’ve completed work and the customer owes you $10,000, you record $10,000 in Accounts Receivable (asset) and $10,000 in Service Revenue (income). This is the core difference between accrual and cash accounting. ASC 606 assumes accrual basis.

Q: How do I handle change orders or scope additions on fixed-price projects?

A: Treat them as contract modifications. If the original contract was $50,000 and you add $10,000 of work, the new contract price is $60,000. Your percentage-of-completion calculation now uses $60,000 as the denominator. Document the change order in writing, confirm the client agrees, and update your revenue recognition accordingly. Without a clear change order, you’re doing unpaid work.

Q: What if a retainer client uses only 5 of 20 hours per month? Do I recognize the full $2,000 or just $500?

A: This depends on your retainer agreement. If the agreement says “up to 20 hours, unused hours are forfeited,” you recognize the full $2,000 (you’ve provided the service availability; the client chose not to use it). If it says “pay only for hours used,” you recognize only $500. Be explicit in your retainer agreements about this, because it directly affects revenue recognition. Most firms choose the “forfeited hours = recognized revenue” model to protect the retainer fee.

Conclusion: From Confusion to Clarity

Revenue recognition feels abstract until you map it to your actual business. Once you understand how your billing model (hourly, fixed-price, or retainer) connects to the five steps of ASC 606, the accounting becomes mechanical.

The key insight: revenue is earned through performance, not receipt. Your PM system tracks performance (hours logged, tasks completed, retainer hours consumed). Your GL records the corresponding revenue. The two must reconcile.

Start by mapping each of your current contracts to one of the three billing models. Classify your revenue accordingly. Implement the month-end workflow above. Reconcile your GL accounts to your PM data. Once you’ve done this for two or three months, revenue recognition becomes routine, and you’ll have financial statements that actually reflect how your business performs.

Your CPA will thank you. Your banker will trust your financials. And you’ll make better business decisions because you’ll understand which projects are truly profitable and which are eating margin.


Sources

Want to see what an integrated stack looks like?

Book a discovery call and we'll walk you through how the FirmDesk Stack could work for your firm.

Book a Discovery Call