
V codes were a category of ICD-9-CM diagnosis codes used to document healthcare encounters that didn’t involve a disease or injury — preventive visits, screenings, follow-up care, family history, and social factors influencing health.
The U.S. retired ICD-9-CM in October 2015, and ICD-10-CM replaced V codes with Z codes (Z00-Z99), which serve the same conceptual purpose with significantly expanded specificity.
The term “V code” persists in billing conversations, training materials, and legacy documentation, which is why providers and coders still search for it.
But every V code referenced in older resources now has an ICD-10-CM Z code equivalent that must be used on current claims. Submitting an ICD-9 V code on a claim today will produce an automatic rejection.
In this guide, we’ll dive more into:
- What V codes represented and why Z codes replaced them
- Common coding mistakes with Z codes that cause denials
- The major Z code categories used in modern billing
- When Z codes are primary diagnosis vs secondary
What did V codes represent?
Under ICD-9-CM, V codes belonged to the Supplementary Classification of Factors Influencing Health Status and Contact with Health Services (V01-V91). They documented encounters where patients sought care for reasons other than active disease or injury.
Common V code functions included:
- Routine physical examinations (V70.0)
- Cancer screenings (V76.12 for mammography)
- Prenatal care (V22.2 for normal pregnancy supervision)
- Personal history of disease (V12.01 for tuberculosis history)
- Health counseling (V65.42 for smoking cessation)
- Long-term medication management (V58.69)
- Immunization encounters (V05 series)
These codes were essential for billing preventive services because without them, payers had no diagnosis to explain why a healthy patient received care. The same logic applies today — Z codes fill the identical role in ICD-10-CM.
How do V codes map to ICD-10 Z codes?
Every V code from ICD-9-CM has a corresponding Z code (or set of Z codes) in ICD-10-CM.
The mapping isn’t always one-to-one because ICD-10 expanded the classification substantially, adding specificity that ICD-9 didn’t capture.
ICD-10-CM expanded the Z code chapter far beyond what V codes covered. The Z00-Z99 range now includes over 2,000 codes compared to approximately 300 V codes in ICD-9, with much finer granularity for social determinants of health, screening specificity, and aftercare documentation.
What are the major Z code categories in current billing?
Z codes organize into functional groups based on the reason for the encounter:
Z01 — Special exams
Z02 — Administrative exams
Typically primary diagnosis
Z13 — Other disease screening
Z11 — Infectious disease screening
Primary when screening is reason for visit
Z09 — Follow-up exam
Z51 — Antineoplastic therapy
Primary when no active condition
Z80 — Family history
Z79 — Long-term drug use
Usually secondary to support medical necessity
Z59 — Housing/economic issues
Z60 — Social environment
Secondary codes — support risk adjustment
The social determinants of health (SDOH) category deserves special attention because it’s where Z codes have expanded most aggressively since the ICD-9 era.
CMS and commercial payers increasingly require SDOH codes (Z55-Z65) for risk adjustment scoring, value-based care programs, and population health analytics.
Medicare Advantage plans use Z code data to adjust capitation payments based on patient complexity — practices that undercapture SDOH codes may receive lower risk-adjusted reimbursement than their patient population warrants.
When is a Z code the primary diagnosis?
The billing rules for primary vs secondary Z code placement depend on the reason for the encounter — and getting this wrong is one of the most common sources of preventive care claim denials.
Preventive exam with no illness found → Z00.00 primary
Screening mammogram → Z12.31 primary
Routine child wellness → Z00.129 primary
Post-surgical follow-up (no active condition) → Z09 primary
Office visit for hypertension (I10) + Z79.899 long-term medication
Diabetes management (E11.9) + Z87.39 history of past complications
Any encounter + Z59.0 homelessness (SDOH)
Any encounter + Z80.0 family history of cancer
The practical consequence of getting this wrong — a preventive visit billed with a disease code as primary (instead of a Z code) may process as a diagnostic visit rather than a preventive one.
That changes the patient’s cost-sharing, may trigger a copay that shouldn’t apply, and can cause the claim to deny if the payer’s preventive benefit requires a Z code in the primary position.
The reverse mistake (Z code as primary when a disease was the actual reason for the visit) can trigger a medical necessity denial because the Z code doesn’t justify the services billed.
How do Z codes affect reimbursement and risk adjustment?
Z codes influence payment through three mechanisms that extend well beyond individual claim reimbursement.
Preventive service coverage
Under the ACA preventive care mandate, most commercial plans must cover recommended preventive services without cost-sharing when billed correctly. The Z code in the primary position is what triggers preventive benefit coverage. Without it, the claim processes under the patient’s diagnostic benefit, potentially generating deductibles and copays the patient shouldn’t owe.
Medicare risk adjustment
CMS uses diagnosis codes — including Z codes — to calculate risk adjustment scores for Medicare Advantage plans.
SDOH codes, history codes, and status codes contribute to the risk profile that determines capitation payments.
Practices that undercapture Z codes effectively underrepresent patient complexity, which can reduce MA plan reimbursement at the population level.
Quality reporting
Z codes feed into quality measures reported through programs like MIPS and HEDIS.
Screening codes (Z12 series), preventive exam codes (Z00), and counseling codes (Z71) are tracked as evidence of guideline-adherent care.
Missing Z codes create gaps in quality reporting that affect performance scores and, in value-based contracts, payment.
What Z code mistakes cause claim denials?
Most Z code denials follow predictable patterns that are straightforward to prevent with the right coding workflow.
Wrong diagnosis position
Billing a wellness visit with a disease code as primary instead of Z00.00 converts the claim from preventive to diagnostic — different benefit, different cost-sharing, different coverage rules. The Z code must be in the primary position when the encounter’s purpose is preventive.
Missing screening code when finding is abnormal
When a screening discovers an abnormal finding, the screening Z code remains the primary diagnosis (the reason the patient came in was the screening).
The abnormal finding is listed as secondary. Dropping the screening code and leading with the finding can lose preventive benefit coverage and shift cost to the patient.
Undercoding SDOH
Many practices document social determinant information in clinical notes but don’t translate it into Z codes on the claim.
This creates incomplete risk profiles and missing quality data — a silent revenue loss that compounds across the patient panel, particularly for MA-heavy practices where risk adjustment directly affects capitation.
Using obsolete V codes
Legacy billing systems, outdated superbills, and training materials that still reference ICD-9 V codes produce automatic claim rejections. Every V code reference in the practice’s workflow should be mapped to its ICD-10-CM Z code equivalent.
Accurate Z code capture starts with the right billing process
Z code errors — wrong primary/secondary placement, missing SDOH codes, dropped screening codes, outdated references — create a pattern of preventive care denials and incomplete risk adjustment that most practices don’t quantify until the cumulative revenue impact becomes visible.
MedHeave operates as an embedded revenue cycle department inside medical practices, with AAPC-certified coders who validate Z code placement, screening-to-finding sequencing, and SDOH capture on every claim before submission.
- Claims submitted within 24-48 hours of signed encounter notes
- No lock-in agreements — 30-day exit, performance-based pricing (4-7%)
- Dedicated account managers with direct access (Monday-Friday, 9-5 EST)
- Denials addressed within 72 hours with payer-specific appeal templates
- 90%+ first-pass rate across all claim types
If preventive care denials or risk adjustment gaps are affecting your revenue, contact MedHeave to see how structured coding closes those gaps.
Frequently asked questions
Here are some commonly asked questions about V codes:
No. V codes belonged to ICD-9-CM, which the U.S. retired in October 2015. All current claims require ICD-10-CM codes. The V code concept — documenting non-disease healthcare encounters — now lives in ICD-10-CM’s Z code chapter (Z00-Z99). The term “V code” still appears in billing conversations, training materials, and older documentation, but submitting an ICD-9 V code on a claim today will produce an automatic rejection.
V codes (ICD-9-CM) and Z codes (ICD-10-CM) serve the same purpose — classifying encounters for reasons other than active disease, such as preventive care, screenings, follow-up, family history, and social factors. The structural difference is that ICD-10-CM expanded the classification from approximately 300 V codes to over 2,000 Z codes, adding significantly more specificity for screening types, SDOH factors, aftercare categories, and encounter context. Z codes are the current standard; V codes are legacy only.
Yes — and in many preventive care scenarios, they must be primary. When the reason for the encounter is a screening, preventive exam, or follow-up with no active disease, the Z code goes in the first diagnosis position. If a disease or abnormal finding is the primary reason for the visit, the disease code takes the primary position and the Z code becomes secondary. The ICD-10-CM Official Guidelines specify which Z codes can be primary, which can only be secondary, and which can serve either role.
Reimbursement depends on the payer and the specific Z code. Under the ACA, most non-grandfathered commercial plans cover recommended preventive services without cost-sharing when billed with appropriate Z codes. Medicare covers annual wellness visits (G0438/G0439) and specific screenings. Medicaid coverage for preventive Z code encounters varies by state. Some Z codes (particularly SDOH codes) don’t directly generate reimbursement but affect risk adjustment scoring and quality metrics that influence payment indirectly.
Social determinants of health (SDOH) Z codes (Z55-Z65) document non-medical factors that affect patient health — housing instability (Z59.0), food insecurity (Z59.41), educational barriers (Z55), and social isolation (Z60.2). CMS uses these codes in risk adjustment models for Medicare Advantage, and payers increasingly require them for value-based care reporting. Practices that undercapture SDOH codes underrepresent patient complexity, which can reduce risk-adjusted payments and create gaps in care coordination data.
The screening Z code remains the primary diagnosis because the reason for the encounter was the screening itself. The abnormal finding or confirmed condition is listed as a secondary diagnosis. For example, a screening mammogram (Z12.31) that reveals a suspicious mass would carry Z12.31 as primary and the mass finding code as secondary. If the Z code is dropped and only the finding is reported, the claim may lose preventive benefit coverage and shift cost-sharing to the patient.