Blog · Forecast and pipeline · Professional services
Build a monthly services revenue forecast from available hours, billable utilization, expected work and billing rates. A worked practice-level example reconciles forecast revenue to actual billed hours and realized rates.
Professional services revenue forecasting connects the work a practice expects to deliver with the billable capacity and rates available to deliver it. Start with staff hours, compare capacity with contracted and potential work, then calculate revenue for the month. Keep the forecast basis explicit: the example below estimates time-and-materials billings for work delivered and billed in the same month.
Use a staffing roster, leave calendar, contracted-work schedule, opportunity export and billing register. Aggregate them to practice and delivery month, while retaining the source detail used to build each total. Use the same month-end cutoff for every file.
The staffing file supplies delivery headcount and working hours. The work schedule supplies hours expected to be delivered in the month, not the total remaining contract value. The opportunity file supplies incremental hours, expected delivery month and probability. The billing register supplies actual billed hours and net billed revenue after adjustments.
Set aside fixed-fee milestones, retainers, reimbursable expenses and subcontracted work if they do not follow the same hourly logic. Forecast those on separate rows with their own basis. Detailed recognition belongs in project revenue forecasting, while sales projection covers the broader commercial outlook.
For an illustrative US consulting firm, forecast October 2026 using these assumptions. Leave hours are totals for the whole practice. Working hours per employee are already net of holidays; do not subtract those holidays again. Available hours still include time that may be spent on training, administration and business development.
| Practice | Staff | Working hours each | Total leave hours | Available hours | Billable target | Billable capacity hours |
|---|---|---|---|---|---|---|
| Advisory | 10 | 160 | 160 | 1,440 | 75% | 1,080 |
| Implementation | 8 | 160 | 160 | 1,120 | 80% | 896 |
| Total | 18 | 320 | 2,560 | 1,976 |
In a capacity sheet with those columns in A:G, enter =B2*C2-D2 in E2 and fill down. Enter this Excel formula in G2 and fill down:
=E2*F2
Advisory has 10 × 160 − 160 = 1,440 available hours; applying 75% gives 1,080 billable hours. The target is a planning assumption, not a claim that every available hour can be sold. Confirm that the skill mix and delivery calendar support it.
Build a second sheet with the following columns in A:I. Contracted and opportunity hours must be mutually exclusive. Here the opportunity probabilities are hypothetical inputs approved for this forecast.
| Practice | Capacity hours | Contracted hours | Opportunity hours | Probability | Expected demand hours | Forecast hours | Rate (USD/hour) | Forecast billings (USD) |
|---|---|---|---|---|---|---|---|---|
| Advisory | 1,080 | 900 | 300 | 50% | 1,050 | 1,050 | 200 | 210,000 |
| Implementation | 896 | 850 | 200 | 50% | 950 | 896 | 175 | 156,800 |
| Total | 1,976 | 1,750 | 500 | 2,000 | 1,946 | 366,800 |
In F2, calculate expected demand and fill down:
=C2+D2*E2
In G2, enter =MIN(B2,F2) and fill down. In I2, enter =G2*H2 and fill down; the total in I4 is =SUM(I2:I3).
Microsoft documents MIN as returning the smallest number in its arguments. Here it restricts forecast hours to the lesser of available billable capacity and expected demand. SUM adds the range for the company total.
Implementation has 950 − 896 = 54 expected hours beyond capacity. That is a scheduling question for the practice leader: move the start date, change the staffing assumption or support additional delivery capacity. Adding those hours to revenue without resolving delivery overstates the forecast.
Do this comparison within a skill group before totaling the firm. Unused advisory capacity cannot automatically deliver implementation work. Similarly, weighted opportunity hours do not guarantee a smooth calendar: a project may start in full or move to a later month.
At month-end, compare the frozen forecast with the billing export. The rates below are net realized rates for those billed hours, rather than published rate-card prices.
| Practice | Forecast hours | Forecast rate (USD/hour) | Forecast billings (USD) | Actual hours | Actual rate (USD/hour) | Actual billings (USD) | Difference (USD) |
|---|---|---|---|---|---|---|---|
| Advisory | 1,050 | 200 | 210,000 | 1,000 | 198 | 198,000 | -12,000 |
| Implementation | 896 | 175 | 156,800 | 880 | 172 | 151,360 | -5,440 |
| Total | 1,946 | 366,800 | 1,880 | 349,360 | -17,440 |
Use volume first and rate second so the effects reconcile without double counting:
Volume effect = (Actual hours − Forecast hours) × Forecast rate
Rate effect = Actual hours × (Actual rate − Forecast rate)
| Practice | Volume effect (USD) | Rate effect (USD) | Total difference (USD) |
|---|---|---|---|
| Advisory | (1,000 − 1,050) × 200 = -10,000 | 1,000 × (198 − 200) = -2,000 | -12,000 |
| Implementation | (880 − 896) × 175 = -2,800 | 880 × (172 − 175) = -2,640 | -5,440 |
| Total | -12,800 | -4,640 | -17,440 |
The check is $366,800 − $12,800 − $4,640 = $349,360. Tie the last amount to the included billing-register rows. Reconcile separate billing adjustments and out-of-scope revenue to the full ledger total rather than forcing them into the hourly rate.
For the bridge sheet, place forecast hours in B, forecast rate in C, actual hours in E and actual rate in F. Enter this volume-effect formula in H2 and fill down:
=(E2-B2)*C2
Enter =E2*(F2-C2) in I2 for rate, and =H2+I2 in J2 for the total. Fill both down.
The follow-on professional services revenue analysis examines actual revenue performance; keep this forecast focused on the capacity and work assumptions that created the expectation.
Finance owns the calculation and reconciliation; practice leaders own staffing and delivery assumptions. Keep the issued version so the next review can evaluate what changed. Revenue forecasting automation covers repeating that comparison as new exports arrive.
Covirage is not affiliated with Microsoft.
Upload a practice-by-month file containing the supplied hours, rates, forecast and billing actuals. Covirage maps the columns, its tools compute and check the differences, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.
See Covirage for professional services for the supporting industry context.
Convert delivery headcount into available hours after leave and holidays, then apply a billable utilization assumption. Limit those hours to work expected in the period and multiply by the expected realized billing rate. Check skills and scheduling because total headcount can hide a practice-level shortage.
Show pipeline separately from contracted work and use explicit probabilities and expected delivery months. Remove an opportunity from pipeline when its hours enter contracted work. Probability-weighted demand is a planning assumption; it does not establish that a contract exists or that revenue can be recognized.
No. Utilization measures billable hours relative to a defined available-hours base. Revenue also depends on the rate realized and the applicable billing or recognition schedule. A practice can deliver more billable hours while revenue falls if the work shifts toward lower realized rates.
Use capacity to test whether the team can deliver the planned workload, but forecast fixed-fee billing from the contract schedule. Keep recognized revenue on the basis approved by the controller. Hours multiplied by an hourly rate cannot by itself represent every fixed-fee arrangement.