CPT Codes for Common Lab Panels: CMP, BMP, CBC, Lipid and Thyroid

CPT codes for common lab panels: CMP 80053, BMP 80048, CBC 85025 and 85027, lipid 80061, TSH 84443, venipuncture 36415: what each includes, who bills.

Ona Health team

11 min read

Share

The CPT codes for the most common lab panels are 80053 for a comprehensive metabolic panel, 80048 for a basic metabolic panel, 85025 for a CBC with automated differential, 85027 for a CBC without one, 80061 for a lipid panel and 84443 for TSH. Venipuncture is 36415. The lab that performs the test usually bills it.

Quick answer:

  • A panel code only applies when every test in the panel's definition was performed. CMS says it will not pay a panel code otherwise, and since 2019 Medicare expects the panel code rather than its components when all of them were run.
  • Medical necessity rides on the diagnosis code. Several common tests, including blood counts, thyroid testing and lipids, are governed by Medicare national coverage determinations with diagnosis lists that CMS updates quarterly.
  • In most cases the practice orders and the lab bills. The practice bills its own visit, any test it runs in-house under a CLIA certificate, and specimen collection where the payer allows it.

This is a reference for functional, integrative and primary care practices that order these panels. It is coding information, not guidance on which tests a patient should have.

Code Reference Table

The panel contents below are paraphrased from CMS's chemistry panel table in the Medicare Claims Processing Manual, Chapter 16 and from the Labcorp test directory, not the AMA's official descriptors.

CPT codePanel or testWhat it includes (paraphrased)Notes
80048Basic metabolic panel (total calcium)Calcium, carbon dioxide, chloride, creatinine, glucose, potassium, sodium, urea nitrogen (BUN)8 tests; all are also in the CMP
80053Comprehensive metabolic panelThe 8 BMP tests plus albumin, alkaline phosphatase, ALT, AST, total bilirubin and total protein14 tests
80076Hepatic function panelAlbumin, alkaline phosphatase, ALT, AST, total and direct bilirubin, total proteinShares six tests with the CMP; adds direct bilirubin
80061Lipid panelTotal cholesterol, HDL cholesterol, triglycerides; Labcorp also reports calculated LDL and VLDLCoverage governed by NCD 190.23
85025CBC with automated differentialRed and white cell counts, hemoglobin, hematocrit, red cell indices, platelets, plus the automated white cell differentialCoverage governed by NCD 190.15
85027CBC without differentialThe same counts and indices without the differentialUse when no differential is ordered
84443TSHThyroid-stimulating hormoneCoverage governed by NCD 190.22
84439Free T4Free thyroxineLabcorp's TSH plus free T4 test carries 84443 and 84439
83036Hemoglobin A1cGlycated hemoglobinA single test, not a panel
36415VenipunctureCollection of venous blood by venipunctureThe draw, not the test; see who bills below

Two details from the lab side. Labcorp's CMP and BMP reports also show calculated values, such as eGFR and the BUN to creatinine ratio, which come with the panel rather than as extra tests. And CMS's own panel table lists the basic metabolic panel with ionized calcium separately, as 80047.

Panels Only Count When They Are Complete

Panel codes are defined groupings, and Medicare treats them that way. Chapter 16, section 90.2 says the only acceptable Medicare definition of a panel's component tests is the AMA's, and that CMS will not pay for a panel code unless all of the tests in the definition are performed. If a lab runs a custom panel with extra tests, the extras are billed separately alongside the panel code.

Since January 1, 2019, the same section says, laboratories bill the panel code and do not unbundle the components when all of them were performed, and claims are returned as unprocessable if the panel code isn't billed. When only some components were run, they are billed individually.

Ordering matters too. Section 90.5 tells physicians to check what each panel contains and not order individual tests that duplicate tests in the panel, because Medicare denies duplicate tests. Every BMP component is in the CMP, so ordering both for the same draw duplicates eight tests.

Medical Necessity and the Diagnosis Code

A lab claim is paid on the diagnosis that justifies the test, so the ICD-10 code on the order matters as much as the CPT code on the claim.

For Medicare, many common tests sit under one of the 23 laboratory national coverage determinations in sections 190.12 to 190.34 of the NCD Manual. Each comes with lists of diagnosis codes that do and don't support the test, and CMS updates the edit software quarterly. The October 2026 update, MLN Matters MM14536, effective October 1, 2026, adds and deletes ICD-10-CM codes for NCDs including 190.15 Blood Counts and 190.22 Thyroid Testing. The FY2027 ICD-10-CM code set took effect the same day, so diagnosis lists built before October are worth rechecking.

What the NCD text says about frequency, for two common panels:

  • Lipids, NCD 190.23. The NCD says it is reasonable to perform the lipid panel annually for long-term monitoring of therapy, and that a single component or a measured LDL may be medically necessary up to six times in the first year of monitoring dietary or drug therapy. Routine screening of people without signs or symptoms isn't covered under this NCD. Screening runs separately: medicare.gov says Part B covers cardiovascular screening blood tests once every five years.
  • Thyroid, NCD 190.22. The NCD text says testing may be covered up to two times a year in clinically stable patients, with more frequent testing reasonable when therapy has changed or symptoms appear.

Specificity helps. A few FY2027 ICD-10-CM codes that often show up on panel orders, checked against the 2027 code set:

ICD-10-CMDescriptor
Z00.00Encounter for general adult medical examination without abnormal findings
Z00.01Encounter for general adult medical examination with abnormal findings
Z13.220Encounter for screening for lipoid disorders
E78.5Hyperlipidemia, unspecified
E03.9Hypothyroidism, unspecified
E11.9Type 2 diabetes mellitus without complications
D64.9Anemia, unspecified
R53.83Other fatigue

Whether a given code supports a given test depends on the NCD, your MAC's local policy or the commercial payer's policy on the date of service, so check the list rather than assuming. Screening and wellness codes in particular are handled differently from diagnostic codes. When a Medicare test is likely to be denied for frequency or necessity, an Advance Beneficiary Notice may need to be given to the patient before the draw.

Who Bills the Lab Work

This is the question that trips up practices most, especially functional practices that order through several labs.

The performing lab, in most cases. Chapter 16 notes that the law requires that, with certain exceptions, only the entity that performed the test may be paid. When Quest, Labcorp or a specialty lab runs the panel, that lab bills the payer or the patient. Medicare pays most clinical diagnostic lab tests under the Clinical Laboratory Fee Schedule.

The practice, for tests it runs itself. In-office testing needs CLIA certification. CMS's CLIA page says all laboratories must be properly certified to receive Medicare or Medicaid payments, and a physician office laboratory is a laboratory.

The practice, for the draw, depending on payer. CMS lists 36415 as the code for collection of venous blood by venipuncture (Chapter 16, section 60.1.2). Medicare's separate specimen collection fee, $9.34 per encounter from January 1, 2026, has narrow eligibility set out in section 60.1, and commercial payers set their own rules for 36415. Confirm with your MAC and your main payers before you build it into every lab visit.

The patient, for cash-pay labs. Many functional practices order specialty and direct-pay labs the patient pays for. Through Junction in Ona, each test shows its lab fee before you add it, along with the patient's insurance for lab billing. Through Fullscript's lab catalog, the order and any payment are handled in Fullscript.

How a Lab Order Flows Through Ona

In Ona Labs, labs are ordered from the patient chart three ways: through Junction for an electronic order with tracked status, through Fullscript's lab catalog, or as a PDF requisition for any lab.

The requisition is where medical necessity starts. Ona fills it in from the chart: the ordering provider's NPI, the patient's primary and secondary insurance, the tests and panels, and an ICD-10 diagnosis field you add codes to for medical necessity. Every detail comes from the record at generation time, so a missing insurance card prints as blank. Fax it from Ona, print it, or share it to the patient's portal.

On the practice's own claim, the codes flow from the visit:

  1. Services carry their CPT codes. Each service has billing defaults for CPT code, place of service and modifiers, so an in-office draw or test can carry its code.
  2. The fee schedule prices them. Fee schedules set a global rate per CPT code, payer-specific overrides, and separate self-pay cash rates.
  3. Billing rules catch gaps. Claim scrubbing can require a linked diagnosis code on every claim line before submission, which is where a lab line without a supporting diagnosis gets caught.
  4. Superbill or claim. A completed visit produces a superbill for out-of-network patients, or a draft claim from the visit's Insurance page, as set out in from visit billing to superbill and claim.
  5. Submission and remittance. Claims go out through Ona Clearing House or your own Claim.MD account, and ERAs post back to the claim and the patient's invoice. Clearing house plans run from $69 to $1,099 per month, and cash-pay practices don't need one.

Results come back to the same chart. Junction results arrive as parsed reports, faxed results are added, and anything else can be uploaded and parsed into values with their LOINC code, flag and reference range. Trends follows each marker across labs.

Coding guidance here is general. Payer rules vary, so confirm codes, coverage and frequency with the payer before you bill. CPT is a registered trademark of the American Medical Association.

Frequently asked questions

What is the CPT code for a CMP?

80053. A comprehensive metabolic panel includes 14 tests: the eight in the basic metabolic panel (calcium, carbon dioxide, chloride, creatinine, glucose, potassium, sodium and BUN) plus albumin, alkaline phosphatase, ALT, AST, total bilirubin and total protein. CMS will not pay the panel code unless every test in the definition was performed.

What is the difference between CPT 85025 and 85027?

Both are complete blood counts. 85025 is a CBC with an automated white cell differential, and 85027 is the same counts and indices without the differential. Bill the one that matches what was ordered and performed. Medicare coverage of blood counts falls under NCD 190.15, whose diagnosis lists CMS updated again effective October 1, 2026.

What is the CPT code for a lipid panel?

80061. It covers total cholesterol, HDL cholesterol and triglycerides, and Labcorp's version also reports calculated LDL and VLDL. For Medicare, NCD 190.23 treats an annual lipid panel as reasonable for long-term monitoring of therapy, and routine screening is handled separately: Part B covers cardiovascular screening blood tests once every five years.

Can I bill a BMP and a CMP on the same day?

Not for the same draw in the normal case. Every BMP component is also in the CMP, and the Medicare Claims Processing Manual tells physicians not to order individual tests that duplicate tests in a panel, because Medicare denies duplicate tests. If a test is genuinely repeated on the same day for a medical reason, the lab handles that with its own coding rules.

Who bills for lab panels, the practice or the lab?

Usually the lab that performed the test. CMS notes that, with certain exceptions, only the entity that performed the test may be paid. The practice bills its own visit, tests it runs in-house under a CLIA certificate, and specimen collection with 36415 where the payer allows it. For cash-pay labs, the patient pays the lab or the dispensary directly.

What is CPT 36415?

36415 is the code CMS lists for collection of venous blood by venipuncture. It covers the draw, not the test. Payment rules for collection differ by payer and setting, and Medicare's separate specimen collection fee has narrow eligibility, so confirm with your MAC and commercial payers before billing it routinely.

How does Ona handle lab orders and billing codes?

Labs are ordered from the chart through Junction, Fullscript or a PDF requisition that Ona fills in with the ordering provider's NPI, the patient's insurance and the ICD-10 codes you add for medical necessity. Services carry CPT codes, the fee schedule prices them, billing rules can require a diagnosis on every claim line, and the visit becomes a superbill or a draft claim.

Next step

Bring the panels you order most and a recent lab denial to a 15-minute demo, and we'll walk through the requisition, the fee schedule and the claim in Ona. Or start the 14-day free trial from the pricing page, no card required. The billing side is covered on insurance and claims.

Written by

Ona Health team

Related reading

Keep exploring.

12 min read

ICD-10 Codes for Depression: F32 and F33 Explained

Depression ICD-10 codes for FY2027: F32 single episode vs F33 recurrent, severity and remission digits, F32.9 vs F32.A, F34.1, and how to avoid denials.

Ona Health team
10 min read

Running a Telehealth Weight Loss Clinic: The Tech Stack

What a virtual GLP-1 or weight loss clinic needs end to end, from lead capture and intake to video visits, e-prescribing, labs and payments.

Ona Health team
12 min read

ICD-10 Codes for Bipolar Disorder: F31 Code Guide

Bipolar ICD-10 codes for FY2027: how F31 codes record episode, severity, psychotic features and remission, plus F31.81 bipolar II, F31.9 and F34.0.

Ona Health team

See Ona in action.

One platform for scheduling, charting, billing and insurance. Try everything free for 14 days — no credit card required.