Sign in

Blog · Board and management reporting · Accounting

Accounting firm revenue analysis by client and service

Explain accounting practice revenue changes by client, engagement and service. Build a fee-revenue bridge that separates new work, lost work, service volume and realized fees.

The short answerAccounting firm revenue analysis explains fee changes by matching clients and engagements across comparable periods. Separate new and lost engagements, then split retained work into service volume and realized fee effects. Reconcile billing exports to recognized revenue before comparing recurring and project work, so invoice timing does not masquerade as practice growth.

Accounting firm revenue analysis explains a practice's fee changes through new engagements, lost work, service volume and realized fees. Start with comparable billing exports, reconcile them to the revenue basis you intend to report, and match each client-service engagement across periods. A larger total can conceal a shrinking recurring book or the loss of an important engagement.

Start with a consistent revenue basis

Export invoice and credit lines with client ID, engagement ID, service code, service period, posting period, work pattern, units and net fee revenue. Add the general ledger's revenue adjustments when the billing export does not represent earned revenue. Keep sales tax and amounts collected on behalf of others outside the fee comparison.

Billing, earning and collecting are separate events. For tax accounting, IRS Publication 538 distinguishes cash and accrual income timing; that distinction is a useful reminder to state your report's basis, although it does not replace your practice's financial reporting policy. Do not call a collection movement a revenue movement.

Use stable client and engagement IDs rather than names. Preserve service codes when a client buys both bookkeeping and tax work. The broader customer revenue analysis addresses the client rollup; the engagement detail here identifies what actually changed inside that relationship.

Compare the same quarter in consecutive years when tax filing work is seasonal. Investigate engagements that move between periods before calling them wins or losses. Mark recurring work according to its agreement, not simply because similar invoices appeared twice.

Build the matched engagement table

The following fictional US practice compares the third quarters of 2025 and 2026. Fees are net of credits and already reconciled to recognized revenue. A bookkeeping or payroll unit is a service month; a tax unit is a return; an audit or advisory unit is an engagement. Compare units only within the same service.

Engagement Work pattern Prior units Prior fee per unit (USD) Current units Current fee per unit (USD) Prior revenue (USD) Current revenue (USD)
A: bookkeeping Recurring 3 2,000 3 2,200 6,000 6,600
B: tax returns Project 4 1,500 5 1,600 6,000 8,000
C: audit Project 1 18,000 0 0 18,000 0
D: advisory Project 0 0 1 24,000 0 24,000
E: payroll Recurring 3 1,000 3 1,000 3,000 3,000
Total 33,000 41,600

Zero units mean the engagement was confirmed absent in that period; they do not represent missing data. Revenue increased by $8,600, or 26.1%, rounded to one decimal place: 41600/33000-1.

For a workbook table named Billing, aggregate the prior amount into column G using the engagement key in A2:

=SUMIFS(Billing[NetRevenue],Billing[EngagementKey],$A2,Billing[Period],"2025-Q3")

Use the same formula with "2026-Q3" in column H. Microsoft documents SUMIFS as summing rows that meet multiple criteria. Include entity and currency criteria when the export covers more than one reporting group.

Separate engagement movements from retained work

Put the status in I2, using the table's columns G and H:

=IF(AND(G2=0,H2=0),"Inactive",IF(G2=0,"New",IF(H2=0,"Lost","Retained")))

This shortcut assumes nonnegative engagement revenue and no credit-only periods. For those exceptions, use confirmed engagement activity instead of the revenue sign. Client C's lost audit engagement is not automatically a lost client; other work may continue elsewhere in the practice.

For retained engagements only, calculate volume in J2 and realized fee effect in K2:

=IF(I2="Retained",(E2-C2)*D2,0)
=IF(I2="Retained",E2*(F2-D2),0)

The order matters: volume uses the prior fee; fees use current units. Their interaction is included in the fee effect. This is one consistent attribution convention, rather than the only possible split.

Movement Calculation Revenue change (USD)
New advisory engagement Current revenue for D 24,000
Lost audit engagement Negative prior revenue for C -18,000
Retained tax volume (5 - 4) × 1,500 1,500
Retained bookkeeping fee 3 × (2,200 - 2,000) 600
Retained tax fee 5 × (1,600 - 1,500) 500
Total movement 24,000 - 18,000 + 1,500 + 600 + 500 8,600

The proof is exact: $33,000 plus $8,600 equals $41,600. The flux analysis workflow provides the wider ledger reconciliation; this bridge supplies the engagement explanation.

Read service mix without counting it twice

Recurring revenue was $9,000 and is now $9,600, a $600 increase. Project revenue was $24,000 and is now $32,000, an $8,000 increase. Both movements come directly from the work-pattern groups in the engagement table, and together they equal $8,600.

Treat these as a different view of the same movement. Adding another $8,000 project-mix effect to the engagement bridge would count the same revenue again. The partner responsible for recurring services should review renewals; the project leader should confirm whether the advisory win can repeat.

A realized unit fee is net revenue divided by comparable delivered units. It reflects scope and concessions as well as pricing. For whether fees are appropriate for a client's size, use fee per client against the norm. Revenue growth alone also says nothing about delivery economics; that belongs in accounting firm cost analysis.

Where it goes wrong

  • Seasonal work labeled lost. Check service dates and engagement status before interpreting a missing invoice.
  • Unlike units combined. A return, a service month and an audit are different activities. Calculate volume effects within each service before summing dollars.
  • Credits excluded. Net negative adjustments against the relevant engagement and explain any period reassignment.
  • A project called recurring. Repeated work without a continuing agreement may still depend on a new sale.
  • Mix added twice. Client, service and work-pattern views must reconcile to one movement, not create additional movements.

Covirage is not affiliated with Microsoft.

Analyze your practice's revenue in Covirage

Bring a billing export with client, engagement, service and period fields, plus the revenue adjustments needed for reconciliation. Covirage maps the columns; its tools compute and check the comparisons, 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 tax and accounting firms for the practice context.

Questions people ask

Should an accounting firm analyze billed or recognized revenue?

Use recognized revenue for a financial revenue bridge and billed fees for a billing performance review. Label the basis clearly. Reconcile unbilled work, deferred amounts and other accounting adjustments before treating an invoice export as recognized revenue.

Does a missing engagement mean the client was lost?

No. An annual tax engagement may be billed in a different month, or a completed project may have no expected renewal. Confirm the engagement status and compare equivalent service periods before labeling a client or engagement as lost.

How should recurring and project revenue be compared?

Tag each engagement with a consistent work pattern and compare the same periods. Keep recurring monthly services separate from one-time advisory and project work, then show each group's contribution to the total revenue movement.