How Do I Audit My Service Fees to Recover Lost Margin?
Audit service fees in five passes: inventory every fee you bill, measure each fee's attach rate against eligible accounts, surface value-added work you deliver but never invoice, kill disputed fees with no deliverable, then model recovery as (target attach − current attach) × units × fee × contribution margin. Fees carry 85–95% margin, so recovered dollars land almost entirely as gross profit.
The job a fee audit is actually hired to do
A service-fee audit is not a pricing exercise. Pricing asks "what should this cost?" An audit asks a narrower, more mechanical question: "of the money we already decided to charge, how much actually made it onto an invoice?" That distinction matters because the two projects have completely different risk profiles. Raising prices triggers churn conversations, contract renegotiations, and grandfather clauses. Collecting fees you already publish, on customers who already agreed to them, triggers almost nothing — the customer signed a service agreement that lists the setup fee; you simply stopped billing it eighteen months ago when a billing admin left and nobody rebuilt the checklist.
The job, then, is leak detection on the revenue plumbing. Three leaks dominate. First is attach decay: a fee exists in the catalog, gets billed to some accounts, and the percentage quietly slides as reps waive it to close deals, as CSMs credit it to smooth a support escalation, or as new-hire billers never learn it exists. Nobody logs a decision; the number just drifts. Second is unbilled delivery: you perform after-hours work, expedited onboarding, data migration, or priority response, and it goes out the door unpriced because the work started as a favor and calcified into an expectation. Third is failed collection: the fee was billed correctly, the card declined, dunning gave up after two attempts, and the line item silently became bad debt.
Each leak needs a different instrument. Attach decay shows up in a cohort comparison — same fee, same eligible population, measured this quarter versus four quarters ago. Unbilled delivery never shows up in billing data at all, because the transaction does not exist; you find it by walking the service-delivery process with the people who do the work and asking what they do that never appears on an invoice. Failed collection lives in the payment processor's decline and recovery reports, not the CRM.

The reason this recovers margin so efficiently comes down to cost structure. A base subscription or a labor-heavy service carries real delivery cost — engineers, technicians, hosting, materials. A service fee is usually attached to work you are already performing or capacity you already hold, so the incremental cost of billing it approaches zero. Contribution margin on fee revenue commonly runs 85–95%. Recovering $180,000 in leaked fee revenue is not equivalent to $180,000 of new subscription revenue — it is worth substantially more to the bottom line, and it required zero net-new customer acquisition. That asymmetry is why RevOps teams that run this audit quarterly tend to run it forever.
There is a second-order benefit worth naming. The audit forces a written inventory of what you charge and why, which almost no services business maintains. That inventory becomes the input for the next pricing cycle, the onboarding doc for new billers, the reference for legal when a customer disputes a charge, and the source of truth for CPQ configuration. Teams routinely report that the artifact outlasts the project.

Where the audit sits in the RevOps stack
A fee audit is a cross-system reconciliation, and that is precisely why it fails when one team runs it alone. The fee's life spans four systems: it is agreed in the contract (CLM or a signed PDF in a shared drive), configured in the quoting layer (CPQ or a price book), billed in the billing platform, and collected by the payment processor. Leakage happens in the seams between those systems, not inside any one of them. A fee that exists in the contract but was never added to the price book is invisible to billing. A fee in the price book that reps routinely zero out is visible in CPQ but never reaches billing. A fee that billed cleanly but failed collection is visible only in the processor.
The practical implication is that you need a join key that survives all four hops — usually the account ID, occasionally the subscription ID — and you need someone with read access across all of them. In most organizations that is RevOps, which is why the audit tends to land there rather than in finance or sales. Finance sees what was collected. Sales sees what was promised. Only RevOps sees the whole chain.
Sequencing matters as much as coverage. Pull the billing extract first, because it defines the denominator — the population of accounts and the fees actually applied. Then reconcile upstream to contracts, which tells you what should have been applied. Then reconcile downstream to the processor, which tells you what survived. Running it in the other direction produces a lot of motion and few conclusions, because you end up chasing individual disputed invoices without knowing whether they represent a systemic pattern or a one-off credit.

Two adjacent workflows share most of this machinery and are worth running in the same quarter while the data extracts are fresh. The first is usage and overage reconciliation — comparing metered consumption records against rated charges. If you sell anything by seat, API call, gigabyte, ticket, or transaction, this is frequently a larger leak than fixed fees, because it fails silently: nobody notices an overage that was never rated. The second is entitlement drift — accounts receiving a service tier above what they pay for, usually because a trial upgrade never reverted or a support team informally escalated an account and never changed the plan. Cross-referencing support ticket volume or response-time SLAs against the billed tier surfaces this quickly, and it is the same join across the same systems.
Running the five passes with real numbers
Pass one — inventory. Build one row per fee with: name, invoice-line description, amount, billing frequency, eligibility rule (which accounts should get it), the system where it is configured, and the owner who can change it. Include fees you inherited and no longer understand — those are usually the junk-fee candidates. A mid-market services firm typically finds 8 to 20 distinct fees. Anything past 25 is itself a finding: catalogs that large are impossible to bill consistently, and consolidation will recover more than enforcement.

Pass two — attach rate. For each fee, compute billed accounts ÷ eligible accounts over a trailing period, and compare to the same measurement a year earlier. A fee whose attach rate fell from 68% to 41% without a documented decision is your headline finding. Segment the comparison by acquisition cohort, by rep, and by CSM. Attach decay is rarely uniform; it usually concentrates in one team, one product line, or accounts sold after a specific policy change. Knowing that turns "enforce the fee" into "retrain this pod," which is a solvable problem.
Pass three — missing fees. Interview delivery, support, and implementation. Ask what work they do that is not on the customer's invoice: after-hours callouts, expedited turnaround, extra training sessions, data exports, integration builds, additional environments, replacement hardware. For each, estimate monthly volume and a defensible price. This is the pass with the highest ceiling and the most political friction, because introducing a new fee is a customer-facing change, not a back-office correction — treat it as a pricing decision with a communication plan, not an audit fix.
Pass four — kill list. Flag any fee with a high dispute or chargeback rate and no articulable deliverable. Vague "administrative surcharge" or "processing fee" line items are the usual suspects. The full cost of a disputed fee is not the refund — it is the refund plus support handling time plus processor dispute fees plus the elevated churn risk on an account that now believes you nickel-and-dime. Removing a $6 fee that 9% of customers dispute is frequently net-positive within two quarters, and it buys credibility for the fees you are about to start enforcing.

Pass five — model the recovery. Per fee:
Recoverable Margin = (Target Attach − Current Attach) × Eligible Units × Fee Amount × Billing Periods × Contribution Margin %

Worked example. A managed-services firm has 800 clients and a $25/month priority-support fee. Current attach is 40%; the deliverable genuinely supports 75%. The gap is 0.35 × 800 = 280 accounts × $25 × 12 months = $84,000 in annual fee revenue, and at a 90% contribution margin, roughly $75,600 of recovered gross profit — without signing a single new client. Layer in a $50 setup fee on ~30 monthly onboardings that was never turned on: 30 × 12 × $50 = $18,000 annually. Then subtract the killed surcharge, which might cost $8,000–$12,000 in gross revenue but eliminates the dispute load. The net is still six figures of near-pure margin on a book of 800 accounts.
Two disciplines keep this honest. First, set the target attach rate from what the deliverable can actually support, not from 100%. Some accounts have contractual exemptions, some are strategic logos where the fee was deliberately waived, and some genuinely do not consume the service. Document the exempt population explicitly so the target is defensible. Second, phase the ramp. Enforcing a fee on 280 accounts in one billing cycle generates 280 simultaneous support conversations. Enforce at renewal, or in tranches of 30 to 50 accounts, with the CSM notified before the invoice goes out — recovery realized over three quarters with no churn spike beats recovery realized in one month with a retention fire.
Scoping the work, tooling it, and what it costs
The audit itself is mostly labor, and the labor is dominated by data extraction rather than analysis. A single-product SaaS business with clean billing data and fewer than ten fees is a 15 to 25 hour project — one analyst, two weeks part-time. A multi-entity services firm with contracts scattered across a shared drive, legacy accounts on grandfathered terms, and a mix of fixed and usage fees is 60 to 120 hours, and the bottleneck will be reading contracts, not writing queries.

On tooling, the honest answer is that you do not need to buy anything. Most first audits run in a spreadsheet against a CSV export, and that is the right call — you are looking for order-of-magnitude findings, not four-decimal precision. Reach for platform capability when the audit becomes recurring:
- Billing platforms (Stripe Billing, Chargebee, Recurly, Zuora, Maxio) hold the line-item truth. What you need from them is a per-invoice, per-line-item extract with the account ID intact. Stripe exposes this through Sigma's SQL layer as a paid add-on; Chargebee, Recurly, and Maxio ship add-on and revenue reporting natively. Zuora is the one built for genuinely complex fee catalogs and usage rating at enterprise scale, and it is priced accordingly — custom-quoted, enterprise contracts.
- Subscription analytics (ProfitWell/Paddle, ChartMogul) decompose MRR into components so you can watch fee and add-on revenue separately from base subscription revenue. Both have free or low-cost entry tiers, which makes them the cheapest way to answer "is attach decaying?" on a recurring basis.
- Dunning and recovery reporting inside your billing platform or processor quantifies the failed-collection leak. This is often the fastest win in the whole audit because the remediation is configuration — more retry attempts, smarter retry timing, card-updater services — rather than a customer conversation.
- Accounting systems (QuickBooks, Xero, NetSuite) are where a small services firm without a billing platform will find invoice history. Less structured, entirely workable.
- CRM and service desk (HubSpot, Salesforce, Zendesk) close the entitlement-drift loop: match logged support volume and response times against the billed service tier to find accounts consuming premium service on a standard plan.

External help is available and sometimes worth it. Revenue-assurance consultancies and fractional RevOps practitioners run these engagements, typically as a fixed-scope project or on a contingency split of identified recovery. Contingency pricing sounds attractive and carries a real hazard: it incentivizes aggressive attach targets and new-fee introductions that book well and churn accounts later. If you go contingency, cap the measurement window and exclude net-new fees from the recovery basis.
The one budget line worth protecting is remediation. Finding the leak is cheap; plumbing it costs engineering time to reconfigure CPQ rules, billing time to run the enforcement tranches, and CSM time to have the conversations. Audits that fund discovery and starve remediation produce an excellent deck and zero recovered margin.
Choosing what to fix first
Not every finding deserves action, and the sequencing decision is where most of the value is either captured or lost. Score each finding on three axes: dollar size (annualized recoverable margin), friction (does this touch the customer, or is it purely internal?), and durability (will it stay fixed, or decay again in six months without a control?).

Zero-friction, high-durability findings go first. Failed-collection remediation is the canonical example — improving dunning retry logic recovers billed revenue from customers who already intended to pay, requires no conversation, and stays fixed because it is configuration. Same for a fee that is in the contract, in the price book, and simply absent from the invoice template: fix the template, and the leak closes permanently.
Enforcement of a decayed fee is medium-friction. The customer agreed to it, but they have not been charged in a year, and the first invoice that includes it will generate a call. Handle these at renewal wherever possible, and arm CSMs with the specific contract clause and the delivery evidence before the invoice lands.

New fee introduction is high-friction and should be sequenced last, treated as a pricing initiative with its own communication plan, grandfathering policy, and an agreed churn tolerance. Bundling a new fee into an audit remediation is how a $75K recovery project turns into a retention problem.
The durability question is the one teams skip, and it is why the same audit finds the same leaks two years later. Every fix needs a control attached: a required field in CPQ so a fee cannot be omitted, an approval step so a rep cannot waive above a threshold without a manager, a dashboard tile showing attach rate by fee, or a monthly exception report listing eligible accounts that were not billed. A fix without a control is a temporary correction. A fix with a control is a system change. The cadence that holds up in practice is a full audit annually and a fifteen-minute attach-rate check on the top five fees each quarter — enough to catch drift before it compounds, cheap enough that it actually happens.
One last framing worth carrying into the exec conversation: express recovery as an equivalent-bookings number. "We recovered $93,000 of near-pure margin" is abstract. "That is the gross profit equivalent of roughly forty new mid-tier accounts, with no acquisition cost and no delivery load" tends to fund the remediation headcount.
Related questions
How is a fee audit different from a price increase?
An audit collects revenue you already agreed to charge; a price increase changes the agreement. The audit is a back-office correction with low churn risk. A price increase is a customer-facing negotiation requiring notice periods, grandfathering decisions, and a retention forecast. Run the audit first — it is cheaper and faster.
What attach rate should I target?
Set the target from what the deliverable can genuinely support, not 100%. Subtract accounts with contractual exemptions, strategic waivers, and genuine non-consumption. Document the exempt population explicitly. A defensible 75% target that CSMs will actually enforce beats a theoretical 95% target everyone quietly ignores.
Who should own the audit?
RevOps, because the fee's life spans contracts, CPQ, billing, and the payment processor, and only RevOps typically holds read access across all four. Finance owns the recognized-revenue outcome, sales owns the customer conversation, but the reconciliation itself needs the person who can join all the systems.
Can I audit usage and overage fees the same way?
Yes, and you should — the join is identical, but the comparison changes. Instead of billed-versus-eligible accounts, you compare metered consumption records against rated charges. Unbilled overages are often a larger leak than fixed fees because they fail silently: nobody notices consumption that was never rated.
How long before recovery shows up in revenue?
Configuration fixes like dunning improvements land within one or two billing cycles. Enforcement of decayed fees realizes over two to four quarters if you phase it at renewal. New fees take longest — notice periods plus grandfathering typically push meaningful revenue six to twelve months out.
FAQ
What is an attach rate, and why does it matter for a fee audit?
Attach rate is the percentage of eligible accounts actually billed a given fee. It matters because it isolates execution from strategy: a low attach rate on a fee you already publish means the money is available without any new sales effort, pricing change, or customer negotiation. Measure it against the eligible population, not total accounts, or the number is meaningless.
How do I find fees I should charge but currently don't?
Billing data cannot tell you, because the transaction never existed. Walk the delivery process with implementation, support, and field teams and ask what work leaves the building without appearing on an invoice — after-hours callouts, expedited onboarding, data migrations, extra environments, replacement parts, additional training. Estimate monthly volume and a defensible price for each, then treat introduction as a pricing decision.
Should I remove fees during an audit?
Yes, selectively. Any fee with a high dispute rate and no articulable deliverable is usually net-negative once you count refunds, support handling time, processor dispute fees, and elevated churn risk. Removing it costs visible revenue and buys credibility for the fees you are about to start enforcing consistently — which is often the larger number.
How often should this run?
A full audit annually, plus a short quarterly check of attach rates on your top five fees. The quarterly cadence is what actually prevents decay; the annual pass catches structural issues like catalog bloat, entitlement drift, and fees nobody can explain anymore. Skipping the quarterly check is how the same leaks reappear two years later.
What is the realistic recovery?
It varies with catalog complexity and billing hygiene, so avoid promising a percentage. What is dependable is the margin character: because service fees attach to work or capacity you already carry, contribution margin typically runs 85–95%, so recovered dollars convert to gross profit far more efficiently than equivalent net-new subscription revenue. Model your own number with the recovery formula rather than a benchmark.
Will enforcing fees increase churn?
It can if you enforce all at once. Phase it — at renewal where possible, otherwise in tranches of 30 to 50 accounts with the CSM briefed before the invoice goes out. Arm them with the contract clause and the delivery evidence. Recovery realized over three quarters with no churn spike is strictly better than recovery realized in one month with a retention fire.
Sources
- Stripe Billing documentation — https://docs.stripe.com/billing
- Chargebee documentation — https://www.chargebee.com/docs/
- Recurly product documentation — https://docs.recurly.com/
- Zuora Knowledge Center — https://knowledgecenter.zuora.com/
- Maxio documentation — https://docs.maxio.com/
- ChartMogul — https://chartmogul.com/
- Paddle / ProfitWell metrics — https://www.paddle.com/profitwell
- FASB ASC 606, Revenue from Contracts with Customers — https://www.fasb.org/
- HubSpot Service Hub product documentation — https://knowledge.hubspot.com/
Related on PULSE
- [How Many Attendants Should I Schedule Each Day at My Car Wash?](/knowledge/tl0067)
- [How Many Sales Reps Do I Need to Hire for My Logistics Company?](/knowledge/tl0058)
- [How Many Salespeople Do I Need to Hire for My Car Dealership?](/knowledge/tl0052)
- [How Many Producers Do I Need to Hire for My Insurance Agency to Grow My Book?](/knowledge/tl0015)
- [How Do I Figure Out How Many People to Schedule Each Day and at What Times for My Single Store?](/knowledge/tl0002)










