Revenue Cycle · Operating Playbook

KPIs aren't a report.
They're a to-do list.

Anyone can recite a formula. What separates an operator is knowing what to do when the number moves. These are the metrics I run a revenue cycle on, and they hold up across primary care, labs, behavioral health, and multispecialty groups. Edit any number below and the math updates live, including the status pill, so you can stress test your own book.

K01

Gross & Net Collection Rate

What you actually collected against what was billed (GCR), and against what was collectible (NCR).

GCR = Payments ÷ Total Charges
NCR = Payments ÷ (Charges − Contractual Adjustments)
Try your own numbers
Total charges
Contractual adjustments
Payments
Allowable
GCR (vs. charges)
NCR (vs. allowable)
NCR target is 90 to 95 percent, with elite performers above 95. GCR isn't a performance metric.
How I'd handle it

GCR mostly reflects how inflated the charge master is, so I don't manage to it. NCR is the number that tells the truth. The points sitting under 100 percent aren't random, so I break that gap into denials, underpayments, and write offs, give each one an owner and a target, and work it down. When NCR gets stuck around 89, there are almost always underpayments that nobody is flagging.

K02

Clean Claim Rate

The share of claims accepted on submission with no rejection or edit.

CCR = Claims accepted without rejection ÷ Total claims submitted
Try your own numbers
Claims submitted
Accepted, no edit
Clean Claim Rate
Target is 95 to 99 percent. Below 95 means the scrubber is letting dirty claims through.
How I'd handle it

Every point under 95 is rework I'm paying for twice. I trace the rejections back to the few edit failures that cause most of them, and those shift by specialty. Eligibility shows up everywhere, modifiers and bundling drive it in surgery and multispecialty, medical necessity and LCD mismatches dominate in labs, and provider taxonomy trips up behavioral health. I tune the scrubber to the actual mix so the claim never goes out dirty in the first place. Fixing a claim at this stage costs a fraction of what it costs to fix the same claim later as a denial.

K03

First Pass Resolution Rate and Staffing

Claims paid in full on first submission, and the headcount the rest quietly costs.

FPRR = Claims paid in full on first submission ÷ Total claims submitted
Quality becomes headcount
Claims per month
First pass rate (%)
Rework capacity per FTE-month
Target FPRR (%)
Claims needing rework now
FTEs on rework now
Lifting to target frees
Target is 85 percent or higher. Below 85 points to an upstream problem, not a follow up one.
How I'd handle it

This is the metric that turns claim quality into a number leadership actually feels. I model an FPRR improvement as FTE savings. On a 10,000 claim book, every ten points is roughly one and a half analysts pulled off rework and put back on appeals that recover real money. That's how I make the case for scrubbing and automation. Not "cleaner claims," but two people back.

K04

Days in AR

How long, on average, a dollar sits unpaid.

Days in AR = Total AR ÷ (Total charges ÷ days in period)
Try your own numbers
Total AR
Annual charges
Avg daily charges
Days in AR
High performers stay under 30 to 35 days. Anything over 50 is a red flag.
How I'd handle it

Days in AR is a lagging symptom, so I don't chase it in the aged buckets. By then the claim is already old. I work it upstream at submission lag, clean claim rate, and authorization, and AR comes down on its own. If AR is climbing while clean claim rate looks healthy, the problem isn't the claims. It's how we're following up with payers, and I retune the worklist.

K05

AR Aging, 60+ and 90+

The share of receivables drifting toward the timely filing cliff.

Aging % = AR in the bucket (60+ or 90+ days) ÷ Total AR
Try your own numbers
Total AR
AR 60+ days
AR 90+ days
60+ share
90+ share
Keep 90+ under 10 percent of total AR. Past 90 days, claims start to die.
How I'd handle it

The 90+ bucket is where revenue quietly turns into a write off as filing windows close. I run a worklist scored by days to deadline and dollar value, so the team always works the claims closest to expiring before the easy ones. Nothing collectible should ever age out by accident.

K06

Patient Aging

Patient responsibility balances, tracked on their own and kept out of the payer numbers.

Patient Aging = Patient responsibility AR by age bucket ÷ Total patient AR
Try your own numbers
Total patient AR
Patient AR 90+ days
0 to 90 days
90+ days
Watch Rising across the industry as deductibles climb, and it needs its own playbook.
How I'd handle it

Patient AR behaves nothing like payer AR, so it gets its own approach. Collect at the point of service, set up FDCPA compliant payment plans, and offer financial counseling before anything escalates. As deductibles keep climbing, the practices that let patient aging hide inside the payer numbers watch their bad debt grow without noticing. I break it out so they can see it.

K07

Payment Velocity

Days from clean claim submission to first payment, read one payer at a time.

Velocity = Avg days from clean claim submission to first payment, per payer
Try one payer
Actual days to first payment
Contracted term (days)
Days over contract term
Payer dependent. The spread between payers tells you more than the average does.
How I'd handle it

Velocity is really a payer behavior metric, so I never look at it blended. A payer paying in 34 days against a 14 day contract term is a follow up escalation and a contract conversation, and it goes straight onto the payer scorecard. A blended average is dangerous, because it hides the one payer that's choking the client's cash flow.

K08

Submission and Posting Lag

The part of the cycle that lives entirely inside your own walls.

Charge lag = Date of service to claim submission
Posting lag = Remit received to payment posted
Try your own numbers
Charge lag (days)
Posting lag (days)
Avg daily charges
Combined internal lag
Cash held back by charge lag
Aim for charge lag under 2 to 3 days, and posting close to same day.
How I'd handle it

This is the slice of AR I control completely, with no payer in the way. Every day of charge lag is a day added to AR before the payer has even seen the claim. I keep charge lag under two or three days and posting close to same day, so both the AR clock and the cash picture stay honest. It isn't glamorous, and it's free money.

K09

Average Payment per Claim and per CPT

The underpayment radar. Actual reimbursement against the contracted rate.

Avg per claim = Total payments ÷ claim count
Avg per CPT = Payments for a code ÷ units of that code
Try one code, e.g. 99214
Actual avg per unit
Contracted rate
Units per quarter
Shortfall per unit
Silent underpayment per quarter
Compare actual to contracted by payer and CPT. Any variance is money you can recover.
How I'd handle it

This is how I catch underpayments. I line up the actual average reimbursement per CPT against the contracted rate by payer, and the gap is silent money. A $15 shortfall on a high volume office visit, or a few cents on a high volume lab test, adds up to tens of thousands a quarter, and because it never shows up as a denial, nobody fights it unless someone is watching this number. I make sure someone is.

K10

Denial Rate and Appeal Overturn Rate

The metric pair that decides how much earned revenue you actually keep, in any specialty.

Denial rate = Denied ÷ Submitted
Overturn = Appeals won ÷ Appeals filed
Appeal rate = Appeals filed ÷ Appealable denials
Try your own numbers
Claims submitted
Denied
Appealed
Appeals won
Avg $ per claim
Denial rate
Appeal rate
Overturn rate
Winnable revenue left on the floor
Denial rates vary by specialty, from about 5 to 10 percent in primary care up to 15 to 20 percent in behavioral health and parts of lab. Target under 5.
How I'd handle it

A high overturn rate sitting next to a low appeal rate is the worst combination there is. It means we win when we fight, but we only fight half the time. I triage every denial into front end, medical necessity, or payer behavior, appeal the medical necessity ones with the clinical documentation and payer policy to back them, and push the front end ones back upstream so they stop happening. The number I watch hardest isn't the denial rate. It's how many winnable denials we're walking away from.

K11

AR Touches per Claim

How many times a person has to touch an account before it finally resolves.

Touches per Claim = Total AR work actions logged ÷ Claims resolved
Touches become labor
Claims resolved per month
Total touches logged
Best in class touches/claim
Minutes per touch
Touches per resolved claim
Excess touches per month
Avoidable work
Best in class resolves most claims in one or two touches. Above two is rework hiding in plain sight.
How I'd handle it

Touches are labor, and labor is the cost line I can actually move. When the same claim gets picked up three or four times before it resolves, that's usually missing information, a denial that should have been prevented, or a follow up that left no clear next step. I go after the highest touch reason codes first, because pulling touches per claim from 2.5 down to 1.5 on a 6,000 claim book hands me back a couple of analysts without losing a dollar of collections. It's the cleanest way I know to add capacity without adding headcount.

K12

Collector Productivity

How much an analyst clears in a day, and whether capacity matches the queue.

Productivity = Accounts resolved ÷ AR analysts (FTE) ÷ working days
Try your own numbers
Accounts resolved per month
AR analysts (FTE)
Working days
Team benchmark per FTE/day
Resolved per FTE per day
Below the team benchmark usually means rework, not slow people. Read it next to touches per claim.
How I'd handle it

I'm careful with this one, because productivity numbers get weaponized fast. A low figure rarely means the team is slow. More often they're reworking the same accounts, which is what K11 exposes, or fighting a payer that keeps denying. So I read productivity next to touches per claim and first pass rate, never on its own. When I do lift it, I do it by clearing the friction out of the work, not by pushing people to dial faster.

B13

Cost to Collect

The efficiency check that keeps "collect more" honest.

Cost to Collect = Total collection department cost ÷ Total payments collected
Try your own numbers
Department cost per year
Collected per year
Cost to collect
Lower is better. Reworking a single appealed claim alone can run $60 or more.
How I'd handle it

Cost to collect keeps me honest. I can always lift collections by throwing more bodies at the problem, but that isn't running things well. I bring this down by automating the predictable work, so the cost line drops while collections hold or grow. It's the metric that proves an improvement came from real efficiency and not just more effort.

B14

Underpayment and Net Recovery Rate

How much of the money you're owed you actually get back.

Net Recovery = Underpayments recovered ÷ Underpayments identified
Try your own numbers
Underpayments identified
Underpayments recovered
Net recovery rate
The bigger leak is usually in finding the underpayments, not collecting them.
How I'd handle it

Most teams measure how much of an underpayment they recover once they've found it, and stop there. The real leak is everything they never found, which is exactly why K09 feeds straight into this. Find the per CPT variance first, then go get it. You can't recover money you never knew was short.

Default figures are illustrative worked examples, not client data.
Benchmarks reflect current US healthcare revenue cycle ranges.

(c) 2026 Merwin David · All rights reserved · Unauthorized copying prohibited