Search “ICD-10 code for CBC” and most lists act like there’s one right answer. There isn’t. A complete blood count is billed with a CPT code, 85025 or 85027 in the large majority of cases, while the ICD-10-CM code on the claim, sometimes shorthanded as a CBC DX code on order forms, identifies why the physician ordered it. Mix the two up and a lab claim can bounce before it ever reaches a payer’s medical review desk.
In practice, this distinction decides whether a claim clears on the first pass. A biller pulling a diagnosis code for a CBC needs to know the clinical reason behind the order: a routine screening visit, a preprocedural workup, an ongoing symptom, or a confirmed hematologic condition. Each scenario points to a different code, and payers, Medicare included, treat some of those codes very differently from others.
Why a CBC doesn’t have one universal ICD-10 code
ICD-10-CM is organized around clinical circumstances and conditions, not around individual lab tests. A CBC can support dozens of different diagnosis codes depending on what’s driving the order. A patient getting labs before a scheduled surgery needs a different code than a patient with three weeks of unexplained fatigue, even though the lab draws the same tube of blood for both.
Records forwarded from patients treated outside the US sometimes list “FBC,” full blood count, rather than CBC. It’s the same panel under a different regional name. US claims still code it as a domestic CBC, under CPT 85025 or 85027, with whichever ICD-10-CM code matches the actual clinical reason for the test.
This is different from how some imaging studies work, where a narrower set of accepted diagnoses tends to apply across most orders. For a CBC, the diagnosis code has to reflect the reason documented in the chart, not a default pulled from an EHR template. Coders who reuse the same generic code on every CBC order, regardless of the visit type, are the ones who watch denials accumulate over time.
CPT codes for CBC with and without differential
Before touching the diagnosis code, get the procedure code right. The CBC family includes several CPT codes, and the physician’s order determines which one applies.
CPT code | What it reports |
85025 | Complete blood count, automated, with automated differential WBC count |
85027 | Complete blood count, automated, without differential |
85004 | Automated differential WBC count, reported alone |
85007 / 85008 | Manual differential WBC count (blood smear review, with or without physician exam) |
85032 | Manual cell count, each individual cell type |
85048 | Automated white blood cell (leukocyte) count, alone |
85049 | Automated platelet count, alone |
The rule of thumb billing teams use: if the order simply reads “CBC,” bill 85027. If it specifies “CBC with differential” or “CBC w/diff,” bill 85025. Defaulting to 85025 just because the hematology analyzer generates differential data automatically creates a mismatch between what was ordered and what was billed, and that mismatch is exactly the kind of pattern payers flag on audit.
One phrase worth clearing up: physician orders sometimes read “CBC with differential and platelet.” That’s not a fourth billable combination. Platelet count is already part of the base CBC panel under either 85025 or 85027, so the “and platelet” language describes what the test already includes rather than something extra to code separately.
Under National Correct Coding Initiative edits, 85027, 85049, and 85004 aren’t billed alongside 85025, since each is already a component of the more complete code. The same logic applies to 85007: automated differential (85025) and manual differential (85007) aren’t reported together for the same patient on the same date. If an automated analyzer flags an abnormal result that then needs manual review, the standard approach is to bill either 85025 alone, covering the automated component, or 85027 plus 85007 together, capturing the base count and the manual review as separate services.
Common ICD-10 codes used to justify a CBC
The diagnosis code falls into three broad categories: screening or preventive encounters, presenting signs and symptoms, and confirmed hematologic diagnoses. Picking the right category, then the right code within it, is what keeps a CBC claim clean.
Screening and preventive encounters
- Z13.0, encounter for screening for diseases of the blood and blood-forming organs and certain disorders involving the immune mechanism, is the code built specifically for a CBC ordered as a hematologic screen in an asymptomatic patient.
- Z01.812, encounter for preprocedural laboratory examination, applies when the CBC is part of pre-surgical or pre-procedure clearance rather than a general screen.
- Z00.00, encounter for general adult medical examination without abnormal findings, covers labs drawn as part of a routine annual physical, though some payers process this differently than a standalone CBC order billed on its own.
These three codes aren’t interchangeable. A CBC drawn purely as a hematologic screen belongs under Z13.0. One drawn ahead of a scheduled procedure belongs under Z01.812. Filing a preprocedural CBC under Z00.00, or the reverse, misrepresents the actual encounter, and that mismatch can draw payer scrutiny even when the lab work itself was entirely appropriate.
Worth knowing: the complete blood count doesn’t appear on the US Preventive Services Task Force’s list of recommended screening tests for asymptomatic, average-risk adults, unlike a lipid panel or an A1C. A 2007 discussion published in American Family Physician grouped the CBC with urinalysis as a low-cost test often ordered out of habit during physicals rather than from a specific evidence-based recommendation. That doesn’t make a screening CBC uncodeable. It does mean the screening code, Z13.0, needs to reflect an actual screening encounter rather than standing in for a symptom the physician simply didn’t write down.
Signs and symptoms that commonly support a CBC order
- R50.9, fever, unspecified
- R53.83, other fatigue
- R63.4, abnormal weight loss
- R70.0, elevated erythrocyte sedimentation rate
- R71.0, precipitous drop in hematocrit
- R71.8, other abnormality of red blood cells, used for findings such as anisocytosis or poikilocytosis on a smear
One mix-up shows up often enough to flag directly. Many billers reach for R79.89, other specified abnormal findings of blood chemistry, as a catch-all for any unclear CBC result. That code actually sits in the blood chemistry subsection alongside metabolic findings like abnormal calcium or sodium, not hematology. For a CBC abnormality that doesn’t fit a symptom code or a confirmed diagnosis, R71.8 or D75.9, disease of blood and blood-forming organs, unspecified, land closer to the mark.
Confirmed diagnoses coded from CBC results
Once a condition is established, the diagnosis code should reflect it directly rather than the symptom that led to testing in the first place.
- D64.9, anemia, unspecified
- D69.6, thrombocytopenia, unspecified
- D70.9, neutropenia, unspecified
- D72.819, decreased white blood cell count, unspecified (leukopenia)
- D72.829, elevated white blood cell count, unspecified (leukocytosis)
- D61.818, other pancytopenia
Each of these unspecified codes has more detailed children codes when the chart supports the extra specificity. The guiding principle is consistent across ICD-10-CM: unspecified codes are acceptable when the clinical picture genuinely isn’t known yet, but a more specific code should replace them once the documentation supports one. A repeat CBC ordered to monitor a known iron deficiency anemia, for example, should carry the iron deficiency anemia code rather than continuing to bill “anemia, unspecified.”
Medicare coverage rules under NCD 190.15
Medicare’s national coverage determination for blood counts, NCD 190.15, took effect November 25, 2002, with an implementation date of January 1, 2003, and it covers the CBC-related CPT codes above under the Diagnostic Laboratory Tests benefit category. It’s worth understanding how this particular NCD is built, because it works differently from several other Medicare lab policies.
A number of CMS lab NCDs, glycated hemoglobin among them, publish a specific, closed list of ICD-10-CM codes that support medical necessity, and anything outside that list gets denied automatically. NCD 190.15 runs in reverse. Any ICD-10-CM code is presumed to support coverage for a CBC unless it’s specifically named on the policy’s non-covered list or its list of codes that don’t support medical necessity. That gives ordering physicians more flexibility on a CBC than they’d have on, say, a lipid panel governed by a positive-list NCD.
Two operational details in the policy are worth flagging for billing staff:
- End-stage renal disease patients. If a blood count for an ESRD patient is billed outside the ESRD composite payment rate, documentation supporting medical necessity has to be submitted along with the claim.
- Repeat testing. A single CBC is often appropriate for a given sign or symptom, but the policy language notes that repeat testing isn’t automatically supported unless the prior result was abnormal, the patient’s clinical condition changed, or the patient carries an ongoing risk factor for a hematologic abnormality. When a repeat CBC is ordered, the policy specifically calls for replacing a generic symptom code with a more descriptive one (its own example is anemia) to support the repeat draw.
Because the national NCD leaves so much room, individual Medicare Administrative Contractors and commercial payers frequently publish their own coverage or medical policy references listing the diagnosis codes they see most often paired with a CBC. These lists aren’t binding the way the NCD is, but a claim coded against a MAC’s published reference is far less likely to trigger a manual review than one that isn’t.
Coding a CBC ordered alongside a CMP or BMP
There’s no combined diagnosis code that automatically covers a CBC and a comprehensive or basic metabolic panel just because both were drawn at the same visit. Payers evaluate medical necessity test by test, and the diagnosis pointer on the claim has to connect logically to each procedure code, not just to the encounter as a whole.
A patient being evaluated for a possible infection might reasonably justify both the CBC and the metabolic panel under the same infection-related diagnosis. A patient in for routine annual labs typically needs two separate diagnosis pointers instead: Z13.0 supporting the CBC, and a distinct screening code, such as Z13.220 for lipoid disorder screening, supporting the metabolic or lipid panel. A hematologic screening code doesn’t, by itself, establish medical necessity for a chemistry panel, and the reverse holds too. Treating the whole order as one bundle covered by a single code is a common source of partial denials, where one test in the panel pays and another doesn’t.
Avoiding CBC claim denials
A handful of habits prevent more CBC denials than any single code lookup ever will.
- Match the ICD-10-CM code to the documented reason for the order, not to whatever code appeared on the patient’s last visit.
- Confirm whether the physician’s order specifies a differential before defaulting to 85025.
- Replace generic symptom codes with more specific ones once a diagnosis is confirmed, rather than continuing to bill under the original presenting complaint.
- Check the local MAC’s published coverage article for CBC, since it often lists the diagnosis codes that clearinghouse edits actually screen against, even when the national NCD itself is broad.
- For repeat CBCs, document the clinical reason for repeating the test, whether that’s an abnormal prior result, a change in condition, or an ongoing risk factor, rather than resubmitting the code from the original order.
- If a diagnosis code isn’t on a payer’s accepted list and the physician still wants the test performed, get a signed Advance Beneficiary Notice before the draw so the patient understands their potential financial responsibility.
A complete blood count is one of the most frequently ordered tests in outpatient medicine, and the diagnosis coding around it follows a fairly simple logic once the pieces are separated. The CPT code follows what the analyzer runs. The ICD-10-CM code follows why the physician ordered it. Matching both to what the chart documents is what keeps CBC claims moving through a payer’s system instead of sitting in a denial queue.


