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.
The bottom line: You don’t need to memorize thousands of codes. You just need to know the four coding systems (CPT, ICD-10, HCPCS, DRG), how to look them up, and what red flags to watch for. This guide covers all of that in plain English.

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 CodeDescriptionTypical ChargeMedicare Rate
99213Office visit, established patient, Level 3 (15–20 min, low complexity)$150–$300$112
99214Office visit, established patient, Level 4 (25–35 min, moderate complexity)$250–$450$167
99203Office visit, new patient, Level 3 (30 min, low complexity)$200–$400$142
99285Emergency department visit, Level 5 (high complexity, immediate threat)$1,000–$3,500$472
99283Emergency department visit, Level 3 (moderate complexity)$500–$1,500$180
80053Comprehensive metabolic panel (blood test, 14 components)$100–$400$11
85025Complete blood count (CBC) with differential$50–$200$8
71046Chest X-ray, two views$200–$750$27
73721MRI of lower extremity joint (e.g., knee), without contrast$1,000–$4,500$240
29881Knee 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.

Pro tip: Request an itemized bill with CPT codes. If your bill only shows descriptions like “Lab Services — $847,” you can’t verify anything. The CPT code is the key that unlocks the Medicare rate, the code description, and the ability to spot errors. Upload your bill to BillKarma and we’ll decode every code for you automatically.

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.
Check your diagnosis codes. Request your claim from your insurer (or look at your Explanation of Benefits) and verify that the ICD-10 codes match your actual diagnosis. If a routine screening was coded as diagnostic, or if the diagnosis code doesn’t match what your doctor told you, ask the provider’s billing department to correct and resubmit the claim. For a deeper dive, see our ICD-10 and DRG codes guide.

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 CodeDescriptionTypical ChargeMedicare Rate
J0135Adalimumab (Humira) injection, 20 mg$2,500–$6,000$1,190
E0601CPAP device (continuous positive airway pressure)$500–$2,000$360
L1832Knee orthosis, custom-fitted$400–$1,500$290
A4253Blood glucose test strips, 50 per box$30–$120$10
A0427Ambulance 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:

  1. You’re admitted to the hospital for pneumonia.
  2. During your stay, you receive chest X-rays, blood tests, IV antibiotics, respiratory therapy, and nursing care.
  3. At discharge, the hospital assigns DRG 194 (simple pneumonia with major complication or comorbidity) to your stay.
  4. 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.
After any hospital stay: Request your discharge summary and medical records, which will include the DRG code. Search the DRG code online to see its description and severity level. If the DRG describes complications you didn’t have, or a severity level that doesn’t match your experience, contact the hospital’s billing department and ask for a review. For a complete breakdown, see our ICD-10 and DRG codes guide.

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.

Itemized Statement — Regional Medical Center — Date of Service: 01/22/2026
99214 — Office visit, established patient, Level 4 $310.00
99215 — Office visit, established patient, Level 5   ⚠ Possible upcoding: visit was 20 min for a routine follow-up $425.00
36415 — Venipuncture (blood draw) $35.00
82947 — Glucose, quantitative, blood   ⚠ Unbundling: this test is included in the metabolic panel below $65.00
82310 — Calcium, total   ⚠ Unbundling: also included in the metabolic panel $55.00
80053 — Comprehensive metabolic panel $245.00
85025 — Complete blood count (CBC) with differential $110.00
TOTAL CHARGED $1,245.00

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
Spot these red flags on any bill: Two office visit codes on the same date, individual lab tests billed alongside a panel that includes them, a Level 5 visit (99215) for a routine follow-up, and any code you don’t recognize. Upload your bill to BillKarma — we automatically flag upcoding, unbundling, and duplicate charges.

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