Blog · Board and management reporting · Professional services
Explain professional-services revenue changes through billable hours, realized rates and practice mix. Build an exact bridge from matched time and revenue exports.
Professional services revenue analysis explains fee changes through billable hours, realized rates and the mix of practices delivering the work. Match time and revenue by engagement and service period, reconcile to the ledger, and build a bridge whose movements add to the revenue change. An increasing revenue total can coexist with a falling average hourly rate.
Export approved time with employee, client, engagement, practice, work date, billable status and hours. Export net revenue with the same engagement keys, service period, fee arrangement, credits and recognition adjustments. Keep reimbursable expenses separate from professional fees so they do not increase the apparent hourly yield.
Distinguish earned fees from invoices and cash receipts. IRS Publication 538 explains the difference between cash and accrual income timing for tax purposes. Your financial reporting policy determines recognized book revenue; the analysis should follow that policy and reconcile any billing-to-revenue differences rather than substitute collection dates for service dates.
Join the comparison at client, engagement and practice level before rolling up. If a project moves between practices, preserve a consistent mapping or show the reclassification explicitly. Law firms should also retain matter and fee-arrangement details; a contingency matter should not become an hourly pricing observation.
Use professional services financial analysis for the broader financial review. This workflow answers a narrower question: which delivery and fee changes explain the movement in earned professional revenue?
The fictional US consulting firm below compares two quarters of time-and-materials work. Revenue is net of engagement credits, all hours belong to the corresponding service period, and fixed-fee projects are excluded from this particular bridge.
| Practice | Prior billable hours | Prior realized rate (USD/hour) | Current billable hours | Current realized rate (USD/hour) | Prior revenue (USD) | Current revenue (USD) |
|---|---|---|---|---|---|---|
| Advisory | 4,000 | 200 | 3,300 | 210 | 800,000 | 693,000 |
| Implementation | 2,000 | 150 | 3,300 | 155 | 300,000 | 511,500 |
| Total | 6,000 | 6,600 | 1,100,000 | 1,204,500 |
Revenue rose by $104,500, or 9.5%: 1204500/1100000-1. Billable hours rose from 6,000 to 6,600. Yet average realized revenue per hour fell from $183.33 to $182.50, rounded to cents, using total revenue divided by total hours.
Put the headers in row 1 and the two practice rows in rows 2 and 3, using columns A through G. Prior and current revenues in F2 and G2 are:
=B2*C2
=D2*E2
For actual exports, aggregate earned revenue by practice with a table named Revenue:
=SUMIFS(Revenue[NetRevenue],Revenue[Practice],A2,Revenue[ServicePeriod],"Current")
Aggregate matched approved hours from a table named Time:
=SUMIFS(Time[Hours],Time[Practice],A2,Time[ServicePeriod],"Current",Time[Billable],"Yes")
Then divide the revenue result by those hours to calculate the realized rate. Microsoft documents SUMIFS for totals meeting multiple criteria. A zero-hour practice with revenue requires investigation or separate treatment, not a zero rate.
Change total hours first, practice mix second and rates last. Using that order, additional hours are valued at the prior blended rate; changes in practice weights use prior practice rates; and rate changes use current hours. The order assigns interaction effects consistently.
At prior practice weights, 6,600 current hours would mean 4,400 advisory hours and 2,200 implementation hours. Those allocations come from multiplying current total hours by each practice's prior share, using the original table without rounding the shares.
| Revenue movement | Calculation | Effect (USD) |
|---|---|---|
| Total hours | (6,600 - 6,000) × (1,100,000 / 6,000) | 110,000 |
| Advisory mix | (3,300 - 4,400) × 200 | -220,000 |
| Implementation mix | (3,300 - 2,200) × 150 | 165,000 |
| Advisory realized rate | 3,300 × (210 - 200) | 33,000 |
| Implementation realized rate | 3,300 × (155 - 150) | 16,500 |
| Total movement | 110,000 - 55,000 + 49,500 | 104,500 |
Calculate the firmwide hours effect in one cell:
=(SUM(D2:D3)-SUM(B2:B3))*SUM(F2:F3)/SUM(B2:B3)
Calculate each practice's mix effect in H2 and realized rate effect in I2, then fill down:
=(D2-SUM($D$2:$D$3)*B2/SUM($B$2:$B$3))*C2
=D2*(E2-C2)
The proof is $1,100,000 plus $110,000, less $55,000, plus $49,500, which equals $1,204,500. Both practice rates improved; the firmwide rate fell because more hours went to the lower-rate implementation practice.
As another check, Microsoft's SUMPRODUCT function multiplies corresponding values and sums the products. SUMPRODUCT(D2:D3,E2:E3) must equal the current revenue total. Use unrounded rates for real exports; display rounding should not create an unexplained bridge residual.
The practice leaders own the hours and delivery mix explanation. Engagement owners investigate the realized rate movement: scope, discounts, credits, staffing grades and contract changes. Finance owns the ledger reconciliation and confirms that the service periods align.
A positive rate effect is not proof of a price increase. A different client or employee mix within a practice can change its realized rate. Drill into matched engagements before assigning a pricing action; customer revenue analysis provides the client view. Keep new and closed engagements visible rather than inventing prior rates for work that did not exist.
For fixed-fee work, compare recognized engagement revenue separately and explain milestone, scope and delivery changes. Add that segment's movement to the hourly segment only after both reconcile to their ledger totals. Use professional services cost analysis to evaluate the labor cost behind the delivery change, and professional services revenue forecasting when converting the findings into future assumptions.
Covirage is not affiliated with Microsoft.
Bring matched time and revenue exports with engagement, practice, service period and fee-arrangement fields. Covirage maps the columns; its tools compute and check the figures, and the external AI model explains the result 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 business context.
No. Realized hourly rate divides matched net revenue by billable hours. Standard billing rate is the rate listed for a person or service. Discounts, credits, contractual caps and scope changes can make realized rates differ from those listed rates.
Keep their recognized revenue in the ledger reconciliation, but analyze their movement separately from time-and-materials work. Revenue per hour can describe delivery economics on a fixed-fee engagement, yet its movement is not necessarily a negotiated price change.
Yes. More work can move into practices with lower hourly rates even when every practice raises its own rate. Separate total hours, practice weights and practice rates before concluding that firmwide price realization deteriorated.