Every charge on your medical bill is driven by a code — a short alphanumeric string that tells your insurer what was done, why it was done, and how much to pay. These codes determine whether your claim is approved or denied, whether you owe $50 or $5,000, and whether you’ve been overcharged. Yet most patients never see these codes, and fewer still understand them. Medical billing errors appear on an estimated 49–80% of hospital bills, and the majority of those errors involve incorrect, duplicated, or inflated codes. Understanding the basics of CPT, ICD-10, and DRG codes gives you the power to read your bill, spot mistakes, and fight back.
1. Why billing codes matter to patients
Billing codes are not just administrative details — they are the single biggest factor in what you pay. Every line item on your hospital bill corresponds to a code. That code determines three things:
- Whether your insurance covers the service. If the diagnosis code doesn’t match the procedure code, or if the code is classified as “not medically necessary,” your insurer may deny the claim entirely — leaving you with the full bill.
- How much the provider gets paid. Each CPT code has a Medicare-assigned dollar value. Hospitals and doctors use this as a baseline, then mark up. A higher-level code means a higher charge.
- Whether you’ve been overcharged. Upcoding (billing a higher code than warranted), unbundling (billing separately for bundled services), and duplicate codes are the three most common billing errors. You can’t catch them if you don’t know what the codes mean.
2. CPT codes explained
CPT stands for Current Procedural Terminology. These are five-digit numeric codes maintained by the American Medical Association (AMA) that describe every medical service and procedure a doctor can perform. When your bill says “Office Visit — $350,” there’s a CPT code behind that charge that specifies exactly what level of visit it was.
CPT codes fall into three main categories:
- Category I (most common): Standard procedures and services — office visits, surgeries, lab tests, imaging. These are the codes you’ll see on nearly every bill.
- Category II: Tracking codes used for performance measurement. These don’t generate charges.
- Category III: Temporary codes for new or experimental procedures.
The 10 most common CPT codes patients see
| CPT Code | Description | Typical Charge | Medicare Rate |
|---|---|---|---|
| 99213 | Office visit, established patient, Level 3 (15–20 min, low complexity) | $150–$300 | $112 |
| 99214 | Office visit, established patient, Level 4 (25–35 min, moderate complexity) | $250–$450 | $167 |
| 99203 | Office visit, new patient, Level 3 (30 min, low complexity) | $200–$400 | $142 |
| 99285 | Emergency department visit, Level 5 (high complexity, immediate threat) | $1,000–$3,500 | $472 |
| 99283 | Emergency department visit, Level 3 (moderate complexity) | $500–$1,500 | $180 |
| 80053 | Comprehensive metabolic panel (blood test, 14 components) | $100–$400 | $11 |
| 85025 | Complete blood count (CBC) with differential | $50–$200 | $8 |
| 71046 | Chest X-ray, two views | $200–$750 | $27 |
| 73721 | MRI of lower extremity joint (e.g., knee), without contrast | $1,000–$4,500 | $240 |
| 29881 | Knee arthroscopy with meniscectomy | $5,000–$15,000 | $980 |
Notice the gap between what hospitals charge and what Medicare pays. A comprehensive metabolic panel (CPT 80053) that Medicare values at $11 can appear on a hospital bill for $400 — a 3,500% markup. This is why looking up the CPT code on your bill and comparing it to the Medicare rate is the single most powerful tool you have for spotting overcharges.
3. ICD-10 codes explained
ICD-10 stands for the International Classification of Diseases, 10th Revision. While CPT codes describe what was done, ICD-10 codes describe why it was done — the diagnosis. Every claim submitted to your insurer must include at least one ICD-10 code that justifies the medical necessity of the service.
ICD-10 codes are alphanumeric, starting with a letter followed by up to six characters. They are extremely specific. For example:
- E11.9 — Type 2 diabetes mellitus without complications
- E11.65 — Type 2 diabetes mellitus with hyperglycemia
- M54.5 — Low back pain
- J06.9 — Acute upper respiratory infection, unspecified
- I10 — Essential hypertension (high blood pressure)
Why ICD-10 codes matter for your wallet
The ICD-10 code on your claim determines coverage. Here are three common scenarios where the wrong diagnosis code costs patients money:
- Preventive vs. diagnostic: A screening colonoscopy coded with ICD-10 Z12.11 (encounter for screening for malignant neoplasm of colon) is covered at 100% under the ACA with no cost-sharing. The same colonoscopy coded with K63.5 (polyp of colon) becomes a diagnostic procedure, and you may owe $1,000+ in coinsurance. If polyps are found during a preventive screening, the primary code should still reflect the screening purpose.
- Medical necessity denials: If the ICD-10 code doesn’t support the procedure, your insurer may deny the claim as “not medically necessary.” For example, an MRI billed with a diagnosis of “general knee pain” may be denied, while the same MRI with a specific diagnosis of “internal derangement of knee” is approved.
- Pre-existing conditions and underwriting: While the ACA prohibits coverage denial for pre-existing conditions, incorrect ICD-10 codes can still create problems for certain supplemental or non-ACA-compliant plans.
4. HCPCS codes explained
HCPCS stands for Healthcare Common Procedure Coding System (pronounced “hick-picks”). HCPCS has two levels:
- Level I: This is just the CPT code system described above. The terms are used interchangeably.
- Level II: These are alphanumeric codes (a letter followed by four digits) that cover items not included in CPT — durable medical equipment, prosthetics, orthotics, supplies, ambulance services, and drugs administered in a clinical setting.
Common HCPCS Level II codes you may see on a bill:
| HCPCS Code | Description | Typical Charge | Medicare Rate |
|---|---|---|---|
| J0135 | Adalimumab (Humira) injection, 20 mg | $2,500–$6,000 | $1,190 |
| E0601 | CPAP device (continuous positive airway pressure) | $500–$2,000 | $360 |
| L1832 | Knee orthosis, custom-fitted | $400–$1,500 | $290 |
| A4253 | Blood glucose test strips, 50 per box | $30–$120 | $10 |
| A0427 | Ambulance service, ALS emergency transport | $1,500–$5,000 | $490 |
HCPCS codes are where some of the most extreme markups appear. Drug charges in hospital settings routinely exceed the Medicare rate by 300–800%. Durable medical equipment (DME) like knee braces and CPAP machines are often billed at several times the rate you could purchase them for retail. Always compare the HCPCS code on your bill against the Medicare fee schedule, and check whether you can obtain supplies or equipment from an independent DME supplier for less. For more on drug charges specifically, see our guide to hospital drug pricing.
5. DRG codes explained
DRG stands for Diagnosis-Related Group. Unlike CPT codes, which bill for each individual service, DRG codes bundle everything for an inpatient hospital stay into a single payment. When you’re admitted to the hospital, Medicare (and most insurers) doesn’t pay the hospital per procedure — it pays a lump sum based on the DRG code assigned to your stay.
Here’s how it works:
- You’re admitted to the hospital for pneumonia.
- During your stay, you receive chest X-rays, blood tests, IV antibiotics, respiratory therapy, and nursing care.
- At discharge, the hospital assigns DRG 194 (simple pneumonia with major complication or comorbidity) to your stay.
- Medicare pays the hospital a fixed amount for DRG 194 — roughly $9,500 — regardless of how many individual tests and treatments were performed.
Why DRG codes matter to patients
- DRG upcoding: Hospitals have a financial incentive to assign a higher-severity DRG because it pays more. A pneumonia stay coded as DRG 194 (with major complication) pays ~$9,500, while DRG 195 (without major complication) pays ~$6,800. If complication codes are added to your chart that don’t reflect your actual condition, the hospital collects more — and your coinsurance may be higher.
- Observation vs. inpatient: Whether you’re classified as “inpatient” (and assigned a DRG) or “observation” status drastically affects your bill. Observation status means the DRG system doesn’t apply, and you may be billed for each service individually at outpatient rates — often costing more. See our observation status guide for details.
6. How billing codes lead to errors
According to a 2024 analysis by the American Medical Association, coding errors are present on nearly half of all medical claims. Three types of coding errors are most common — and most costly for patients.
a) Upcoding
Upcoding occurs when a provider bills a higher-level code than the service delivered. The most common upcoding scenario involves office visit levels. CPT codes 99211 through 99215 represent five levels of office visit complexity, with 99215 being the most complex and expensive. A routine 15-minute follow-up (Level 3, CPT 99213, Medicare rate ~$112) billed as a complex visit (Level 5, CPT 99215, Medicare rate ~$211) nearly doubles the charge.
For more on how often this happens, see our medical billing error statistics.
b) Unbundling
Unbundling is billing separately for services that should be combined under a single code. For example, a comprehensive metabolic panel (CPT 80053) includes 14 individual blood tests. If the lab bills each test separately instead of using the panel code, the total can be 3–5x higher. Medicare’s NCCI edits specifically prohibit unbundling, but it still occurs frequently on hospital bills.
c) Wrong modifier or missing modifier
Modifiers are two-digit codes appended to CPT codes to provide additional context. For example, modifier -59 indicates a “distinct procedural service” that should be paid separately. A missing modifier can cause a legitimate charge to be denied. A wrong modifier can cause an improper charge to slip through. The most commonly misused modifier is -25, which allows a provider to bill an office visit separately from a procedure performed during the same encounter.
What this bill should look like after corrections:
- 99215 downgraded to 99213 (routine follow-up): saves ~$200
- 82947 and 82310 removed (already included in 80053 panel): saves $120
- Corrected total: ~$925 — savings of $320
7. How to use billing codes to fight your bill
Billing codes give you a concrete, data-driven way to challenge medical charges. Here’s the step-by-step process:
Step 1 — Get the codes
Request an itemized bill with CPT codes, ICD-10 diagnosis codes, and HCPCS codes for every line item. If the billing department sends a summary bill without codes, call back and specifically request the “itemized statement with procedure and diagnosis codes.” You have a legal right to this information.
Step 2 — Look up each code
For each CPT or HCPCS code, look up two things: (1) the code description, to verify it matches the service you actually received, and (2) the Medicare rate for your geographic area, which serves as the fair-market benchmark. Use our free calculator to look up any code instantly.
Step 3 — Flag discrepancies
Compare each line item against three criteria:
- Accuracy: Does the code description match what actually happened during your visit?
- Duplication: Is the same service billed twice, or are individual components billed alongside a comprehensive code?
- Markup: Is the charge more than 3x the Medicare rate? Markups above 300% are a strong negotiation lever.
Step 4 — Dispute with data
Contact the billing department with specific code-level objections. Instead of saying “my bill is too high,” say: “CPT 99215 was billed for a 20-minute routine follow-up. The documentation supports a Level 3 visit, CPT 99213. I’m requesting a coding review and adjustment.” Billing departments take code-level disputes far more seriously than general complaints.
Upcoding caught on an ER bill — $1,800 saved
A 38-year-old woman visited the ER for a sprained ankle. She was seen for 25 minutes, received an X-ray, an ACE bandage, and discharge instructions. Her bill showed CPT 99285 — the highest-level ER visit code, reserved for cases involving immediate threats to life or limb. The Medicare rate for 99285 is ~$472, and she was charged $2,400.
She requested her medical records and confirmed no life-threatening condition was documented. She filed a written dispute arguing the visit should be coded as 99283 (moderate complexity ER visit, Medicare rate ~$180). The hospital reviewed the chart, agreed the documentation did not support a Level 5 visit, and recoded to 99283. Her charge dropped from $2,400 to $600. Savings: $1,800.
Unbundled lab charges reversed — $430 saved
A 55-year-old man with diabetes received routine blood work at his annual physical. His bill included a comprehensive metabolic panel (CPT 80053) for $285 plus five individual tests that are already components of that panel — glucose ($65), calcium ($55), sodium ($60), potassium ($60), and creatinine ($55). The individual tests totaled $295 on top of the panel charge.
He contacted the billing department, cited the NCCI edit rules prohibiting unbundling of panel components, and requested removal of the five duplicate charges. After a 10-minute phone call, all five individual charges were removed. His lab portion of the bill dropped from $580 to $150 (after applying a more reasonable rate for the panel). Savings: $430.
Frequently asked questions
What are the main types of codes on a medical bill?
There are four main coding systems on medical bills. CPT codes describe what the doctor did (procedures and services). ICD-10 codes describe the diagnosis (why it was done). HCPCS codes cover supplies, equipment, and drugs. DRG codes bundle all services for an inpatient stay into a single payment category. Your bill may include codes from one or all of these systems.
How do I look up what a CPT code means?
You can look up any CPT code using the AMA’s CPT code lookup tool at apps.ama-assn.org, or use our free calculator to see both the code description and the Medicare rate for your area. Always request an itemized bill with CPT codes — you need the codes to verify charges and compare against benchmarks.
What is upcoding and how do I spot it?
Upcoding is billing a higher-level code than the service delivered. The most common example is billing a Level 5 office visit (CPT 99215) for a routine 15-minute follow-up that should be Level 3 (CPT 99213). Signs of upcoding: charges for “comprehensive” visits when yours was brief, and total charges that seem disproportionate to the care you received. Compare the code description to your actual experience.
What is unbundling in medical billing?
Unbundling is billing separately for services that should be billed under a single code. For example, billing individual blood tests alongside a comprehensive metabolic panel that already includes those tests. Medicare’s NCCI edits prohibit this practice. If you see individual lab tests on a bill that also includes a panel code, those individual tests are likely duplicates.
Do ICD-10 codes affect how much I pay?
Yes. ICD-10 diagnosis codes determine whether your insurer covers a service and at what level. A wrong diagnosis code can cause a claim denial or shift hundreds of dollars in costs to you. The most common example: a preventive colonoscopy coded as “diagnostic” instead of “screening” can change your cost from $0 to over $1,000 in coinsurance.
Can I request the billing codes on my medical bill?
Yes. You have a legal right to an itemized bill with CPT codes, ICD-10 codes, and charges for each line item. Call the provider’s billing department and specifically ask for an “itemized statement with procedure and diagnosis codes.” If they send a summary without codes, call back and insist. You need the codes to verify charges and compare against Medicare rates.
Sources
- American Medical Association — CPT Code Overview and Code Approval Process
- CMS — ICD-10 Code Sets and Classification System
- CMS — Healthcare Common Procedure Coding System (HCPCS)
- CMS — Acute Inpatient PPS: Diagnosis-Related Groups (DRGs)
- CMS — National Correct Coding Initiative (NCCI) Edits
- HHS Office of Inspector General — Reports on Upcoding in Medicare Claims
- Health Affairs — Prevalence and Cost of Billing Errors in U.S. Hospital Claims
- MedPAC — March 2024 Report to Congress: Hospital Payment and Coding Practices