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)
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
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
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
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
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
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
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
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
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
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
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
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.