Unlocking the Secrets of ICD-10 Codes for Better Billing
ICD-10 codes tell a payer why a patient needed care. If the code is wrong, vague, or does not match the service, the claim can be denied or paid late. Getting these codes right is one of the cheapest ways to protect your revenue.
This guide explains what ICD-10 codes are, how the code set is built, how to find the right code, and the coding habits that cause the most denials. It also covers the difference between ICD-10 and CPT codes, since billing teams mix them up often.
What Are ICD-10 Codes?
Why ICD-10 Codes Matter for Getting Paid
ICD-10 codes are alphanumeric codes that describe a patient’s diagnosis, symptom, or reason for a visit. ICD stands for International Classification of Diseases. The World Health Organization publishes the base system, and the 10th revision is the one in use today.
In the United States, providers use two related code sets:
- ICD-10-CM (Clinical Modification) for diagnoses. Every practice uses it on every claim. The CDC’s National Center for Health Statistics maintains it.
- ICD-10-PCS (Procedure Coding System) for inpatient hospital procedures. CMS maintains it.
The US moved to ICD-10 on October 1, 2015, replacing ICD-9. The set is much larger than ICD-9. ICD-10-CM holds more than 70,000 codes, which is why a good lookup habit matters.
A payer reads your claim in a simple way. The diagnosis code says what was wrong. The procedure code says what you did about it. The payer then asks one question: does the service make sense for that diagnosis?
That question is called medical necessity. If you bill an MRI of the knee and the only diagnosis on the claim is “unspecified abdominal pain,” the payer sees a mismatch. The claim may be denied even though the care was appropriate.
Diagnosis codes affect more than single claims:
- Payment. Many payers have coverage rules that link certain services to certain diagnoses.
- Risk adjustment. Medicare Advantage and some other programs use diagnosis codes to estimate how sick a patient population is. That affects plan payments.
- Quality reporting. Quality programs use diagnosis codes to decide which patients count in a measure.
- Audit risk. Codes that the chart does not support are a compliance problem, not only a billing one.
A coding mistake can cost you more than one claim. The same mistake, repeated by a front desk or a template, can repeat on hundreds.
How ICD-10-CM Codes Are Built
Every ICD-10-CM code has between 3 and 7 characters. The first character is always a letter. The second is a number. The rest can be letters or numbers. A decimal point comes after the third character.
Here is how it reads using a familiar code, I10 (essential hypertension):
| Part | What it tells you |
|---|---|
| First character (letter) | The chapter, or body system or condition group |
| Characters 2 and 3 | The category, such as the general disease |
| Characters 4 to 6 | More detail, such as the cause, site, or severity |
| Character 7 | An extension, often showing the stage of care |
You do not need to memorize this. You do need to know that more characters usually mean more detail, and payers expect the most detail the chart supports.
What the 7th Character Means
Injury codes often need a 7th character. It usually shows whether this is the first active treatment (A), a later visit during healing (D), or a visit for a problem left over from the injury (S). Leave it off and the code is invalid, so the claim will be rejected.
Laterality and Specificity
Many codes now ask which side of the body is affected: left, right, or both. If your provider documents “knee pain” without a side, the coder may have only an unspecified option. That choice is available, but it often draws attention from payers.
How to Use an ICD-10 Codes Lookup the Right Way
A lookup tool gives you a list of codes. It does not tell you which one is right. The chart does.
Here is a simple process for coders and billing staff:
- Start with the provider’s documentation. Code what the provider wrote for that visit. Do not code from memory or from the last visit.
- Search the Alphabetic Index. Search by the main term, such as “hypertension” or “pain, back.” The index points you to a code or a range.
- Verify in the Tabular List. Never code from the index alone. The Tabular List shows the full code, its notes, and any instructions.
- Read the notes. Look for “Excludes1,” “Excludes2,” “Code first,” and “Use additional code.” These tell you what can and cannot be reported together.
- Go to the highest level of detail. Use a 3-character code only if no more characters exist for it.
- Check the date. Use the code set for the date of service, not today’s date.
For free, official sources, use the ICD-10-CM files and the Official Guidelines for Coding and Reporting on the CDC website, and the ICD-10 pages on CMS.gov. Paid encoder software can speed this up, but it still depends on clear documentation.
The Code Set Changes Every October
New, revised, and deleted codes take effect on October 1 each year. A code that worked last September may be invalid this October. Make sure your billing software and your encoder have the current year’s update loaded. Claims with invalid codes are rejected before a payer even reviews them.
Common ICD-10 Codes Billing Teams See Every Day
No list replaces looking up the code for each patient. Still, it helps to know what some of the most searched codes look like and where billing errors tend to happen. The examples below are for education. Always confirm against the current code set and the chart.
Hypertension, Diabetes, and Cholesterol
- I10 is essential (primary) hypertension. It is one of the most frequently billed diagnosis codes in primary care.
- E11.9 is type 2 diabetes mellitus without complications. If the provider documents a complication, such as kidney disease or neuropathy, a more specific code is needed. Billing E11.9 when the chart shows a complication understates the patient’s condition.
- E78.5 is hyperlipidemia, unspecified.
Pain Codes
- M54.50 is low back pain, unspecified. Back pain is a common search because it is a common visit reason. Since October 2021, the old M54.5 code has been replaced by more detailed codes, which is a good example of why you must check the current year.
- R10.9 is unspecified abdominal pain. A more specific location (such as right upper quadrant) leads to a more specific code.
Mental Health and Behavioral Health
- F32.A is depression, unspecified. More specific depression codes exist for single episode versus recurrent, and for severity. Behavioral health payers often expect that detail.
- F90.- codes cover ADHD. The fourth character shows the type, such as predominantly inattentive or combined.
Mental health billing has extra rules, such as telehealth modifiers and prior authorization for some services. Those sit outside the code set itself, so check each payer’s policy.
Other Frequent Codes
- N39.0 is urinary tract infection, site not specified.
- D64.9 is anemia, unspecified.
- E66.- codes cover obesity. The set was expanded in recent years to separate obesity by class, so older codes may not be the best match.
Unspecified ICD-10 Codes: When They Help and When They Hurt
An unspecified code, which usually ends in 9, means the provider did not document enough detail to pick a more specific code. Unspecified codes are not banned. If the chart truly does not say more, the unspecified code is the correct one.
The trouble starts when unspecified codes become a habit.
Picture a three-provider orthopedic practice. Its templates default to “knee pain, unspecified” for most visits. Payers see the same vague code on nearly every claim. Some deny imaging and therapy requests that need a more specific diagnosis. Others flag the practice for review.
The fix is not in the billing office. It starts with provider documentation:
- Which side is affected?
- What is the cause or the type?
- Is this a new problem, a flare-up, or a follow-up?
- How severe is it?
When your coder sees a pattern of unspecified codes, send a short query to the provider. A good query is polite, specific, and does not lead the provider toward a diagnosis. Coders code what is documented. They do not create diagnoses.
Z Codes in ICD-10: More Than Just Extra Codes
Z codes sit in chapter 21 of ICD-10-CM and run from Z00 to Z99. They describe reasons for a visit that are not a disease or injury. Examples include:
- Routine exams and screenings, such as a general adult medical exam
- Immunizations
- Status codes, such as a patient’s status after a certain procedure
- Personal and family history of a condition
- Long-term use of a drug
- Social factors that affect care, such as housing or food insecurity
Z codes are useful in two ways. First, many preventive visits must be reported with a Z code as the first-listed diagnosis. Second, social needs codes help show the full picture of a patient’s care. Some programs and payers use that data. Coverage and reimbursement tied to these codes vary by payer, so check each contract.
ICD-10 PCS Codes and Procedure Coding
ICD-10-PCS codes describe procedures. They have 7 characters, and every character is a letter or a number with a specific meaning. There is no decimal point.
The key point for most practices: ICD-10-PCS is used for inpatient hospital procedures. If you bill for physician services or for outpatient care, you use CPT or HCPCS Level II codes for procedures, not ICD-10-PCS. Hospital coding teams and inpatient coders use PCS to report what was done during a stay. ICD-10 procedure codes are therefore a hospital topic more than a practice topic.
CPT vs ICD Codes: What Is the Difference?
This is the question that trips up many new billers. The short version: ICD-10 explains why. CPT explains what.
| Category | ICD-10-CM | CPT |
|---|---|---|
| What it describes | The diagnosis or reason for the visit | The service or procedure performed |
| Who maintains it | CDC (NCHS) and CMS | American Medical Association (AMA) |
| Where it goes on the claim | Diagnosis pointer fields | Procedure code field |
| Example | I10, essential hypertension | 99213, an established patient office visit |
| Updated | Yearly, October 1 | Yearly, January 1 |
A claim needs both. The CPT code says what you billed for, and the ICD-10 code supports why. On a professional claim (CMS-1500), each service line points to one or more diagnosis codes. If the pointer links a service to an unrelated diagnosis, the payer may deny that line.
Modifiers, HCPCS codes, and place of service also affect payment, but they work alongside these two main code types.
Seven ICD-10 Mistakes That Lead to Denials
These are patterns that billing teams commonly report. They are not unique to any one specialty.
- Using an outdated code. The claim fails at the first edit because the code was deleted or changed.
- Stopping at a 3-character code when 4 or more characters are required.
- Missing the 7th character on injury or fracture codes.
- Reporting codes that cannot go together, such as two codes with an Excludes1 note between them.
- Choosing a code that does not support the service. The diagnosis does not meet the payer’s medical necessity rule.
- Coding a diagnosis that is not in the note. This is a compliance risk, especially for risk-adjusted programs.
- Wrong diagnosis order. The first-listed diagnosis should be the main reason for the visit. Secondary diagnoses come after it.
Most of these are easy to catch before a claim leaves your office. A scrubber or claim editing tool can flag outdated codes and many invalid pairings. It cannot tell whether the chart supports the code. That still takes a trained person.
How to Build a Cleaner ICD-10 Workflow in Your Practice
You do not need a large team to improve ICD-10 accuracy. Start with a few steps.
Step 1: Run a denial report. Pull your denials for the last 90 days and sort them by reason. Look for diagnosis-related denials, such as “diagnosis not covered” or “invalid diagnosis code.”
Step 2: Find the top five codes tied to denials. A small group of codes usually causes most of the trouble.
Step 3: Review the templates. Many unspecified codes come from EHR templates and favorite lists. Update them with the provider’s input.
Step 4: Train your front desk and providers. Short, focused sessions work better than long ones. Show real (de-identified) examples from your own denials.
Step 5: Update code sets each October. Assign one person to confirm that the EHR, the billing system, and the encoder are updated.
Step 6: Audit a small sample monthly. Even 10 to 20 charts a month will show you whether the codes match the notes.
Small practices often do not have time for all of this. That is one reason many hand coding review and denial work to a billing partner. If you want a second set of eyes, our team can review your last 90 days of claims and flag the ICD-10 patterns behind your denials. See our medical coding services page or denial management services page for how this works.