You booked the annual physical because it's the one visit insurance advertises as 100% covered. You went, you feel fine, the doctor said everything looks good. Then the bill arrives: $180 for an office visit, or $240 from a lab you've never heard of, for the blood draw that happened down the hall. Nothing about the visit felt different from last year's free one. What changed is invisible to you and decisive to your insurer: the codes on the claim.
What the ACA actually makes free
The Affordable Care Act requires most private plans to cover a defined list of preventive services with no copay, coinsurance, or deductible, when you use an in-network provider. The list is specific: services graded A or B by the U.S. Preventive Services Task Force, recommended immunizations, and additional services for adults, women, and children. For bloodwork, that means screenings like cholesterol, diabetes, and hepatitis C are free for the people and intervals the recommendations name, based on age, sex, and risk factors. The wellness visit itself is covered as prevention: history, exam, risk assessment, counseling, and orders for those screenings. What the law never promised is a free annual head-to-toe lab panel for everyone. That gap between what people expect and what the list says is where every one of these bills comes from.
The three traps that turn a free physical into a bill
Trap one: you mentioned a symptom, and the visit split in two. Somewhere between the blood pressure cuff and the goodbye, you said your knee has been aching, or asked about your reflux, or the doctor adjusted a medication for an existing condition. Clinically, that's a normal physical. In billing, the visit just became two visits: the preventive service and a diagnostic evaluation of a problem. Coders attach a second office-visit code (an E/M code such as 99213, usually flagged with modifier 25) alongside the preventive code, and that second code is ordinary medical care subject to your copay and deductible. The maddening part is that both the doctor and the coder did their jobs correctly. The same flip drives surprise colonoscopy bills, where a free screening becomes diagnostic the moment a polyp is found; the colonoscopy trap guide is this article's sibling.
Trap two: the labs went beyond the preventive list. "Let's run some routine labs" is where most of these bills are born. A lipid panel to screen for high cholesterol may be free for you. A comprehensive metabolic panel, a CBC, a vitamin D level, a thyroid test, or a PSA ordered as part of the same draw may not be, because they aren't on the A-or-B preventive list for your age, sex, and risk profile, or because they were ordered to monitor an existing condition, which is diagnostic by definition. If you have diabetes, the A1C that tracks it is management, and it processes under your normal cost-sharing even on physical day. What each of those tests measures is its own topic (the CBC and CMP guide decodes them); the billing point is simpler: every tube of blood carries its own codes, and each code is judged against the preventive list separately.
Trap three: the lab itself was out-of-network. Your doctor is in-network. The clinic is in-network. And the vial of blood got couriered to a lab company that isn't in your plan's network, so the lab's claim processed as out-of-network with its own deductible, or wasn't covered at all. You had no way to see this happening; the lab was chosen by the office's routing, a sticker on a tube. On the bill it shows up as a separate charge from a company name you don't recognize, often weeks later. If the draw happened at an in-network facility and you had no choice in the lab, say exactly that in a dispute with your insurer and ask them to process it at the in-network rate.
How to read the bill against the EOB, and get it fixed
- Pull the EOB for the visit date from your insurer's portal, and get an itemized bill from the provider if the codes aren't printed on the one they mailed.
- Find the visit codes. A preventive visit is a 993xx-series code (99381 to 99397 by age). If you also see a second office-visit code (99202 to 99215), often with modifier 25, that's the diagnostic add-on you're being charged for.
- Find each lab code and its claim line. Every test has its own five-digit code and its own patient-responsibility amount. The free ones show $0; the billed ones show your deductible or coinsurance doing the work. The claim-codes guide translates the denial and remark codes.
- Check the lab's network status on the EOB. An out-of-network lab line is a different fight from a diagnostic-coding line, so identify which one you actually have before you call anyone.
When it was coded wrong, dispute it. If the visit was scheduled and conducted as a routine physical and nothing diagnostic actually happened, call the doctor's billing office and ask for a coding review: "This was scheduled as my annual preventive visit. Can you review why a diagnostic code was added, and rebill it as preventive if that was an error?" Offices can and do correct claims and resubmit them. If the office insists the coding is right and you disagree with how the plan processed it, file an appeal with your insurer; the dispute guide covers the letter and the timeline. Be honest with yourself about one thing first: if you did spend part of the visit on a real problem, the second code may be legitimate, and the win is knowing that for next year rather than fighting a correct claim.
The prevention script for next year
- When booking: "I'm scheduling my annual preventive visit under my plan's preventive benefit." That sets the intent on the record.
- In the room, before the draw: "Is everything today being billed as preventive? Which of these labs might not be covered as preventive for me?"
- At the draw: "Is the lab you send this to in-network with my plan?" If they don't know, call the number on your insurance card before the results post.
- If you have a symptom to discuss, consider booking it as its own visit. You'll pay the normal copay for it either way; separating it keeps the physical clean and the billing legible.
How Kite handles this
Kite turns this from an afternoon of phone tag into a photo. Text it the bill and the EOB and it decodes every line: which code is the preventive visit, which is the diagnostic add-on, which lab tests carried the charge, and whether an out-of-network lab is hiding in the claim. It flags what looks disputable, and on Pro it drafts the coding-review request to the office or the appeal letter to your insurer as a ready-to-send PDF, then reminds you to chase the rebill in two weeks. Text Kite to start.
