Ask any family medicine biller what keeps them up at night, and it’s rarely a single hard code. It’s the sheer volume of overlapping code families a single day can touch: a well-visited visit that turns into a problem visit, a Medicare patient asking for “just a regular physical,” and a chronic care management claim that’s missing one documentation detail nobody caught until the denial came back.
Family medicine doesn’t have the luxury of specializing in one type of encounter. One exam room might have a 6-month-old getting vaccines, the next a 70-year-old managing five chronic conditions, and the one after that a 35-year-old who booked a physical but really wants to talk about her knee. Each of those needs a different code family, and mixing them up is where most of the denials in this specialty actually start.
This isn’t meant to replace your CPT book or your payer contracts. Think of it as the sheet you’d want taped next to your monitor, the codes you’ll use constantly, the rules that trip people up, and the small documentation details that decide whether a claim pays the first time.
Office Visit E/M Codes: 99202–99215
This is the backbone of family medicine billing and also where the most revenue quietly leaks.
- New patients: 99202–99205
- Established patients: 99212–99215
Code level depends on either Medical Decision Making or total time on the date of the visit; pick one and let the documentation back it up; not both. If you’re coding on time, the thresholds have to be met exactly. A visit billed as 99213 needs a documented minimum of 20 minutes; if the note says 19, don’t be surprised when an audit knocks it back down a level. Rounding up “close enough” is one of the easiest ways to get flagged.
A pattern worth watching for on your end: a lot of family practices default to 99213 out of habit even when the visit’s complexity- three chronic conditions being actively managed, a medication change, a new symptom worked up- genuinely supports 99214. That gap adds up fast across a busy panel.
Preventive Visits: 99381–99397
Preventive and problem-oriented visits are not the same animal, even when they happen in the same fifteen-minute slot, and this is where a lot of confusion creeps in.
- New patient preventive visits: 99381–99387 (age-banded)
- Established patient preventive visits: 99391–99397 (age-banded)
These codes cover the full wellness package: age-appropriate history, a comprehensive exam, risk assessment, counseling, anticipatory guidance. What they don’t cover is management of a new or worsening problem that comes up during the same visit. That’s the scenario everyone runs into constantly: patients in for their annual physical, and halfway through, mention knee pain that’s been bothering them for two weeks. If the provider genuinely evaluates and manages that separately from the preventive exam, modifier 25 on a separately identifiable E/M code is usually appropriate, but only if the note actually separates the two components clearly. A vague note that blends both visits together is an easy denial, or worse, a modifier 25 audit flag.
Medicare’s Annual Wellness Visit: G0438 / G0439
This one deserves its own line because it trips up practices constantly. Medicare’s Annual Wellness Visit is not a routine physical, and Medicare doesn’t pay for routine physicals at all under standard coverage.
- G0438 – Initial AWV
- G0439 – Subsequent AWV
The AWV is built around a personalized prevention plan and health risk assessment, not a head-to-toe exam. Bill 99397 for a Medicare patient expecting their “yearly checkup,” and you’ll likely get a denial; the front desk needs to know which service the patient is actually booking for before the visit even happens, not after.
Chronic Care Management: 99490 / 99491
CCM billing rewards practices doing real longitudinal work between visits, but it’s unforgiving about documentation gaps.
- 99490 – Non-complex CCM, at least 20 minutes of clinical staff time per calendar month
- 99491 – CCM performed personally by the physician or qualified health professional
Both require documented patient consent and an actual care plan on file, not just a mental note that “we manage her diabetes every month.” If the 20-minute threshold isn’t logged with some kind of time tracking, the claim doesn’t have anything to stand on if a payer asks for backup.
G2211: The Add-On Code Everyone Gets Wrong
G2211 is meant to reflect the ongoing complexity of longitudinal primary care relationships, and it can be billed alongside problem-oriented E/M visits (99202–99215), but only when the documentation shows genuine ongoing care responsibility, not a one-off visit.
Two mistakes show up constantly with this code: billing it without any documentation of that longitudinal relationship and billing it alongside preventive visit codes (99381–99397), where it doesn’t belong at all. Both are frequent, predictable denial triggers, and both are entirely avoidable with a quick documentation check before submission.
Combo Respiratory Testing: CPT 87428
Worth flagging since it’s easy to miss: CPT 87428 bundles Flu A/B, COVID-19, and RSV testing into a single code. If your practice is still billing these as separate single-virus tests, expect bundling edits to catch it. Update your superbill or EHR order set so the combo code is the default, not an afterthought.
Quick Reference Table
| Scenario | Code(s) | Watch For |
| New patient office visit | 99202–99205 | MDM or time, not both |
| Established patient office visit | 99212–99215 | Time thresholds must be met exactly (e.g., 99213 = 20 min minimum) |
| New patient preventive visit | 99381–99387 | Age-banded; excludes problem management |
| Established preventive visit | 99391–99397 | Modifier 25 needed if a separate problem is addressed |
| Medicare Annual Wellness Visit | G0438 (initial) / G0439 (subsequent) | Not the same as a routine physical |
| Chronic Care Management | 99490 / 99491 | Requires consent, care plan, logged time |
| Longitudinal care add-on | G2211 | Not billable with preventive codes |
| Combo respiratory panel | 87428 | Replaces separate Flu/COVID/RSV tests |
| Single-dose Part B injectables (e.g., RSV monoclonal antibody) | Varies | -JZ if no waste, -JW if discarded, NOT required on routine flu/COVID/pneumococcal vaccines |
The Pattern Behind Most of These Denials
Look closely at this list, and there’s a common thread: almost none of these are coding knowledge problems. They’re documentation and workflow problems. The codes themselves aren’t obscure; 99214 isn’t a secret, and neither is G0438. What actually causes the denial is a note that doesn’t clearly separate the preventive exam from the problem visit, a care plan that exists in someone’s head but not on paper, or a front-desk scheduling error that books an AWV as a physical.
The practices that stay ahead of this aren’t the ones with the most detailed knowledge of CPT; they’re the ones who’ve built small habits around it: a modifier 25 checklist providers actually use, age-specific preventive visit templates, a front-desk script for explaining the AWV-versus-physical difference before the patient sits down. None of that is glamorous. It’s just consistent, and it’s the difference between a clean claim and a three-week delay.