CPT Codes, HCPCS, ICD-10, and Modifiers: A Plain-Language Guide to Medical Billing Codes
Everything you need to know about the codes on your medical bill - and how errors happen
Why Billing Codes Matter to You
Every single charge on your medical bill is tied to a code. When your doctor examines you, that is a code. When the lab runs your bloodwork, that is another code. When the hospital charges for the IV tubing used during your infusion, that is yet another code. These codes are the language of medical billing - and understanding them is the first step toward understanding your bill.
The problem is that most patients never see these codes, and when they do, the strings of letters and numbers are unintelligible. Yet these codes determine exactly how much you are charged, what your insurance covers, and what you owe out of pocket. A single wrong digit in a code can mean the difference between a $150 office visit and a $500 one. A missing two-character modifier can cause your insurer to deny an otherwise covered claim.
According to a 2023 analysis published by the American Medical Association, there are over 10,000 CPT codes in active use - and that is only one of several coding systems on your bill. When you add HCPCS codes, ICD-10 diagnosis codes, modifiers, and revenue codes to the mix, the complexity is staggering. Billing offices process millions of these codes daily, and errors are inevitable.
This guide will break down each coding system in plain language, show you the codes you are most likely to encounter, and explain exactly how coding errors lead to overbilling. If you have already read our guide on common medical billing errors, consider this the deeper dive into the coding layer underneath those errors. And if you want to understand the document where these codes appear, start with our guide to reading your Explanation of Benefits.
CPT Codes: The Foundation of Procedure Billing
CPT stands for Current Procedural Terminology. Maintained exclusively by the American Medical Association (AMA), CPT codes are the primary system used to describe medical, surgical, and diagnostic services performed by healthcare providers. Every time a provider performs a service - an office visit, a surgery, a blood draw, an X-ray - that service is assigned a five-digit CPT code.
The CPT code set is organized into three categories:
Category I codes are the most common. These are five-digit numeric codes (e.g., 99213) that describe widely performed procedures and services. Category I is further divided into six sections:
- Evaluation and Management (E&M): 99201–99499 - Office visits, hospital visits, consultations, and other encounters where a provider evaluates your condition and makes medical decisions.
- Anesthesia: 00100–01999 - Services related to administering anesthesia during procedures.
- Surgery: 10004–69990 - All surgical procedures, from minor skin biopsies to complex cardiac operations.
- Radiology: 70010–79999 - Imaging services including X-rays, CT scans, MRIs, and ultrasounds.
- Pathology and Laboratory: 80047–89398 - Lab tests, blood panels, tissue analysis, and other diagnostic testing.
- Medicine: 90281–99607 - A broad category covering vaccines, infusions, physical therapy, psychiatric services, and more.
Category II codes are supplemental tracking codes used for performance measurement and quality reporting. They are five digits followed by the letter F (e.g., 1234F). You will rarely see these on a patient bill.
Category III codes are temporary codes for emerging technologies and services that do not yet have a Category I code. They are five digits followed by the letter T (e.g., 0505T). These appear when your provider uses a newer procedure.
The CPT Codes Patients See Most Often
The codes you are most likely to encounter on your bills are Evaluation and Management (E&M) codes. These describe office visits and are also the codes most frequently involved in billing errors.
10 Most Common CPT Codes Patients See
| Code | Description |
|---|---|
| 99213 | Office visit, established patient, low complexity |
| 99214 | Office visit, established patient, moderate complexity |
| 99203 | Office visit, new patient, low complexity |
| 99204 | Office visit, new patient, moderate complexity |
| 99215 | Office visit, established patient, high complexity |
| 99385 | Preventive visit, new patient, 18–39 years |
| 99395 | Preventive visit, established patient, 18–39 years |
| 36415 | Routine venipuncture (blood draw) |
| 85025 | Complete blood count (CBC), automated |
| 80053 | Complete metabolic panel |
The difference between a 99213 and a 99215, for example, can be hundreds of dollars - yet both describe an office visit with an established patient. The distinction lies in the complexity of medical decision-making, the number of problems addressed, and the amount and complexity of data reviewed. When a provider bills a higher-level code than the documentation supports, that is called upcoding - one of the most common billing errors we document in our medical billing errors whitepaper. Upcoding is particularly prevalent in surgical settings - see our guide to surgery billing errors for the specific CPT codes and patterns to watch for after any procedure.
HCPCS Codes: Beyond Physician Services
HCPCS stands for the Healthcare Common Procedure Coding System, maintained by the Centers for Medicare & Medicaid Services (CMS). HCPCS is organized into two levels:
Level I is simply the CPT code set described above. When people refer to “HCPCS Level I codes,” they mean CPT codes.
Level II codes fill the gap. While CPT covers procedures and services performed by providers, HCPCS Level II covers products, supplies, and services that CPT does not - think ambulance rides, durable medical equipment (wheelchairs, CPAP machines), prosthetics, orthotics, and drugs administered in a clinical setting.
Level II codes are alphanumeric, starting with a letter followed by four digits. The letter indicates the category:
| Letter Range | Category |
|---|---|
| A0000–A0999 | Ambulance and transportation |
| A4000–A8999 | Medical and surgical supplies |
| E0100–E9999 | Durable medical equipment (DME) |
| J0000–J9999 | Drugs administered by injection or infusion |
| K0000–K9999 | Temporary DME codes |
| L0000–L9999 | Orthotics and prosthetics |
For example, if you receive a knee brace after surgery, the brace itself is billed with an HCPCS Level II code (such as L1832), while the surgery to repair your knee is billed with a CPT code. If you receive a chemotherapy drug via infusion, the administration of the infusion uses a CPT code, while the drug itself uses a J-code (such as J9271 for pembrolizumab).
Understanding the distinction matters because HCPCS Level II items are a frequent source of overcharges. A 2022 report from the Office of Inspector General (OIG) found that durable medical equipment claims accounted for a disproportionate share of Medicare billing errors, with error rates exceeding 30% in some DME categories. Laboratory and imaging studies - which use both CPT and HCPCS Level II codes - are among the highest-risk categories for overcharges; our guide to imaging and lab overcharges walks through the most common code-level errors in those service categories.
ICD-10 Codes: Why You Were Treated
If CPT codes describe what was done, ICD-10 codes describe why it was done. ICD stands for the International Classification of Diseases, and the current version - ICD-10 - is maintained globally by the World Health Organization (WHO) and adapted for clinical use in the United States by CMS.
ICD-10 codes are the diagnosis codes on your bill. Every procedure billed to insurance must be paired with at least one ICD-10 code that establishes medical necessity - proof that the service was required to diagnose or treat a specific condition. Without a valid ICD-10 code, your insurer can deny the claim entirely.
The structure of an ICD-10-CM (Clinical Modification) code is logical once you understand the pattern. Each code starts with a letter, followed by two digits, a decimal point, and then up to four additional characters. For example:
- M54.5 - Low back pain
- E11.9 - Type 2 diabetes mellitus without complications
- J06.9 - Acute upper respiratory infection, unspecified
- Z23 - Encounter for immunization
- S82.001A - Fracture of right patella, initial encounter
The first three characters identify the category of disease or condition. Characters after the decimal point add specificity - laterality (left vs. right), severity, episode of care (initial vs. subsequent), and other clinical detail. The ICD-10-CM code set contains over 72,000 codes, which is why the potential for miscoding is enormous.
ICD-10 coding errors affect patients in two primary ways. First, if the wrong diagnosis code is used, your insurer may determine the procedure was not medically necessary and deny the claim - leaving you with the full bill. Second, incorrect diagnosis codes can become part of your permanent medical record, potentially affecting future insurance coverage, life insurance applications, and even employment in some fields. If you spot an unfamiliar diagnosis code on your EOB, verify it with your provider.
Modifiers: The Fine Print That Changes Everything
Modifiers are two-character suffixes appended to CPT or HCPCS codes that provide additional information about how a service was performed. They do not change the base procedure - instead, they add context that can affect reimbursement. A missing or incorrect modifier is one of the most common causes of claim denials and overbilling.
Here are the modifiers you will encounter most frequently:
5 Most Important Modifiers to Know
| Modifier | Meaning | Why It Matters |
|---|---|---|
| -25 | Significant, separately identifiable E&M service on the same day as a procedure | Allows billing for both an office visit and a procedure. Frequently overused, leading to overbilling. |
| -59 | Distinct procedural service | Indicates two procedures that normally would be bundled were truly separate. Often misused to bypass bundling rules. |
| -26 | Professional component only | Splits the physician’s interpretation from the technical work. Used for radiology reads, pathology, etc. |
| -TC | Technical component only | The counterpart to -26. Covers the equipment and facility costs. |
| -50 | Bilateral procedure | Indicates a procedure was performed on both sides of the body. Should yield a single line item rather than two separate charges. |
Additional modifiers you may see include:
- -76 - Repeat procedure by the same physician on the same day
- -77 - Repeat procedure by a different physician on the same day
- -91 - Repeat clinical diagnostic laboratory test
- -24 - Unrelated E&M service during a postoperative period
- -57 - Decision for surgery made during E&M visit
Modifiers -25 and -59 deserve special attention because they are the most commonly abused. The CMS Office of Inspector General has repeatedly flagged modifier -25 overuse, finding that in a significant number of audited claims, the separately billed E&M service did not meet the criteria for a “significant, separately identifiable” evaluation. Similarly, modifier -59 is sometimes used to unbundle services that should be billed as a single code - a practice that inflates your bill.
For a deeper explanation of how NilesAI detects modifier abuse and other coding irregularities, see our scan engines overview.
Revenue Codes: Hospital-Specific Billing
If you have ever received a hospital bill - especially from an emergency room or inpatient stay - you may have noticed four-digit codes that do not look like anything described above. These are revenue codes, and they appear on the UB-04 (also called CMS-1450), which is the standard billing form used by institutional providers such as hospitals, skilled nursing facilities, and home health agencies.
Revenue codes categorize the department or type of service within a facility. Unlike CPT codes, which describe the specific procedure, revenue codes describe where or how the service was delivered. For example:
| Revenue Code | Description |
|---|---|
| 0120 | Room and board, semi-private |
| 0250 | Pharmacy, general |
| 0320 | Radiology, diagnostic |
| 0450 | Emergency room |
| 0710 | Recovery room |
Revenue codes work alongside CPT and HCPCS codes, not instead of them. A single hospital charge line might include revenue code 0450 (emergency room), CPT code 99284 (ER visit, high severity), and ICD-10 code S52.501A (fracture of lower end of radius). Together, these codes tell the full story: where you were treated, what was done, and why.
Errors in revenue codes can cause charges to be routed to the wrong cost center, resulting in inflated facility fees. If your hospital bill seems unusually high for a routine visit, the revenue codes assigned may be worth examining - particularly the distinction between outpatient observation (revenue code 0762) and inpatient admission (revenue codes 0110–0169), which can result in thousands of dollars of difference in your bill.
How Coding Errors Happen - and How Often
With tens of thousands of codes in use and millions of claims processed daily, coding errors are not occasional anomalies - they are a systemic feature of the billing system. Research from the American Academy of Professional Coders (AAPC) and CMS audit data consistently shows that coding errors appear in a significant percentage of medical claims.
The most common types of coding errors include:
Upcoding - Billing a higher-level code than the documentation supports. For example, billing a 99215 (high-complexity established patient visit) when the notes only support a 99213 (low-complexity visit). The price difference can be $200 or more per visit.
Missing or incorrect modifiers - Failing to append a required modifier (causing a denial) or appending one improperly (causing an overcharge). Modifier -25 is added to E&M codes on the same day as a procedure, but audits show it is frequently added when the E&M service was not truly “significant and separately identifiable.”
Unbundled codes - Billing separate codes for components of a procedure that should be billed as a single complete code. The National Correct Coding Initiative (NCCI) maintains bundling rules that define which codes should not be billed together, but violations remain common.
Wrong ICD-10 pairing - Assigning a diagnosis code that does not support the medical necessity of the procedure. This can cause outright denials or result in a lower reimbursement that shifts more cost to the patient.
Invalid or expired CPT codes - The AMA updates the CPT code set annually. Codes are added, revised, and deleted each January. If a provider bills with a code that has been retired, the claim may be denied or incorrectly processed.
Most Common Coding Errors in Flagged Bills
These errors are not always intentional. Many result from the sheer complexity of the coding system, staff turnover in billing departments, outdated software, or simple human mistakes under time pressure. But regardless of intent, the financial impact on patients is real. Our whitepaper on medical billing errors documents these patterns in detail.
How to Look Up Codes Yourself
You do not need a medical coding certification to investigate the codes on your bill. Several free and publicly available resources can help you understand what you are being charged for:
- CMS HCPCS Code Lookup: The CMS HCPCS page provides searchable access to Level II codes and their descriptions.
- CMS ICD-10 Code Lookup: The CMS ICD-10 page lets you search diagnosis codes and understand their clinical meaning.
- AAPC Code Finder: The AAPC offers a free code lookup tool that provides plain-language descriptions of CPT codes.
- FAIR Health Consumer: FAIR Health lets you estimate the cost of procedures by CPT code and geographic area - an invaluable tool for spotting charges that are far above the norm.
- Medicare.gov: Medicare.gov provides procedure pricing data for Medicare beneficiaries, but the pricing benchmarks are useful for any patient.
- Healthcare.gov: Healthcare.gov offers a glossary of insurance and billing terms that can help you decode your EOB alongside the codes.
You can also use the NilesAI cost lookup tool to quickly check whether a billed amount for a given CPT code is within the expected range for your area. For a complete list of billing terms, visit our glossary.
Start by requesting an itemized bill from your provider - not the summary statement, but the detailed line-item version that includes CPT codes, ICD-10 codes, and modifiers. Then pull your EOB from your insurer. Compare the two documents line by line, using the code lookup tools above to verify that each code matches the service you actually received. Our step-by-step guide to reviewing your medical bill walks you through this process in detail.
How NilesAI Validates Codes Automatically
Manually researching every code on a complex medical bill is time-consuming - and for a hospital stay with dozens or hundreds of line items, it is practically impossible for most patients. That is exactly the problem NilesAI was built to solve.
When you upload a bill to NilesAI, our scan engines perform automated validation across every coding dimension described in this guide:
- CPT code validity: NilesAI checks every CPT code against the current year’s AMA code set, flagging any codes that are expired, deleted, or invalid for the date of service.
- Modifier validation: Each modifier is evaluated in context - verifying that modifier -25 is supported by documentation of a separately identifiable E&M service, that modifier -59 is not being used to improperly unbundle codes, and that component modifiers (-26 and -TC) are applied correctly.
- NCCI bundling checks: NilesAI cross-references every code pair against the CMS National Correct Coding Initiative edit tables to detect unbundled charges - cases where two or more codes should have been billed as a single service.
- ICD-10 medical necessity pairing: NilesAI verifies that each procedure code is paired with a diagnosis code that establishes medical necessity, reducing the risk of inappropriate denials.
- E&M level validation: For office visits and other E&M services, NilesAI evaluates whether the billed complexity level aligns with the reported services, flagging potential upcoding.
To learn more about how each of these engines works, read our detailed scan engines overview.
Medical billing codes are complex by design - but they should not be a mystery to the patients who are paying the bills. Whether you choose to investigate codes on your own or let NilesAI handle the analysis automatically, the important thing is that you never pay a bill you do not understand. Start by uploading your bill to NilesAI today, and see exactly what those codes mean for your bottom line.
The medical bill review hub brings together every guide, tool, and checklist for reviewing bills in one place.
You can scan a bill for free now to see what NilesAI finds.
Ready to check your medical bills?
NilesAI scans your bills against 16 validation engines and 2.6 million billing rules — free to start.
Stay informed on medical billing
Get new guides, industry updates, and billing tips delivered to your inbox.
Thanks! You're subscribed.
No spam. Unsubscribe anytime.
Related Articles
The 5 Most Common Medical Billing Errors (And How to Spot Them)
Discover the five most common medical billing errors - from duplicate charges to NCCI violations - and learn how to spot them on your bills before you overpay.
7 min read
explainerHow NilesAI's 16 Scan Engines Catch What Manual Review Misses
Learn how NilesAI's 16 scan engines - from NCCI bundling to fee schedule variance - use deterministic rules to find billing errors other tools miss.
8 min read
explainerHow Hospitals Set Prices: The Chargemaster Explained
Hospitals use a secret price list called the chargemaster to set charges. Learn how it works, why prices vary wildly, and how to negotiate using this knowledge.
24 min read