CPT code 83704 – Lipoprotein particle and subclass assay
83704 is the CPT code for lipoprotein, blood; quantitation of lipoprotein particle number(s) (eg, by nuclear magnetic resonance spectroscopy), includes lipoprotein particle subclass(es), when performed. It reports how many LDL and HDL particles a patient carries, not just how much cholesterol they hold.
Medicare pays it as a lab test under the Clinical Laboratory Fee Schedule, with a 2026 national limit of $34.19. Payment depends on a diagnosis showing why a standard lipid panel wasn't enough, because Medicare doesn't cover routine lipid screening.
- Section
- 80047-89398 Pathology and laboratory
- Subsection
- 82009-84999 Chemistry
- Code range
- 83700-83704 Lipoprotein, blood
- Billable
- No
- Code also known as
- NMR LipoProfile, lipoprotein particle number test, LDL particle number test, advanced lipid panel
Let Pabau's smart automation suggest the right codes, reduce claim denials, and keep your practice compliant—effortlessly.
- AI-powered code suggestions
- Real-time compliance checks
- Faster claims, fewer denials
Automate repetitive tasks and focus on what matters most—your patients.
Reduce coding errors and ensure compliance with the latest regulations.
Clean claims, fewer denials, and faster reimbursements.
Powerful insights and reporting to help your practice thrive.
HIPAA compliant SOC 2 certified GDPR-compliant Trusted by 4,000+ clinics worldwide
Key takeaways
CPT code 83704 reports lipoprotein particle numbers, with subclasses when performed, and NMR spectroscopy is the usual method rather than a requirement.
Medicare pays 83704 under the Clinical Laboratory Fee Schedule, with a 2026 national limit of $34.19, not under the physician fee schedule.
Medicare doesn’t cover routine lipid screening, so Z13.6 alone, or family history in a patient with no symptoms, won’t carry an 83704 claim.
Most 83704 denials trace back to the order note, so record the prior lipid panel and why particle data changes management before the draw.
Pabau sends US claims through Claim.MD, runs eligibility checks and tracks prior authorizations on the case, flagging a missing auth before you submit.
CPT code 83704 counts lipoprotein particles, not just cholesterol
CPT code 83704 is the lab code for counting lipoprotein particles in a blood sample, with subclasses reported when the lab performs them.
The AMA descriptor reads: Lipoprotein, blood; quantitation of lipoprotein particle number(s) (eg, by nuclear magnetic resonance spectroscopy), includes lipoprotein particle subclass(es), when performed.
Two phrases decide whether a test belongs here. “Quantitation of lipoprotein particle number(s)” means the lab counts particles. “Includes lipoprotein particle subclass(es), when performed” folds subclass reporting into the same line, so subclasses never earn a second code. NMR appears only as an example (“eg”), so the method alone doesn’t decide the code.
The best-known test billed this way is the NMR LipoProfile, developed by LipoScience and now run by Labcorp. Quest Diagnostics offers its own lipoprotein particle testing. Reports typically show total LDL particle number (LDL-P), small LDL-P, HDL particle number (HDL-P) and mean particle size.
The 83704 assay explains results a lipid panel can’t
The 83704 assay measures how many lipoprotein particles are in the blood, not only how much cholesterol they carry. A standard lipid panel tells you the cholesterol inside LDL particles. CPT code 83704 tells you how many LDL particles are doing the carrying.
A patient can have a normal LDL-C but a high LDL-P, especially when the particles are small and dense. Small dense particles are more atherogenic, one for one, than large buoyant ones. That discordance is the usual clinical reason to order 83704 after a standard panel.
83704 and 80061 answer different questions
CPT code 83704 and the lipid panel, 80061, measure different things. The panel reports total cholesterol, HDL-C, LDL-C and triglycerides as concentrations. CPT code 83704 adds the particle count, which explains why two patients with the same LDL-C can carry different risk.
Same-day billing note: Whether 83704 and 80061 can go on the same date of service depends on the payer. For Medicare Part B, check the NCCI edits and your MAC’s policy first. Commercial plans set their own rules, so read the plan policy rather than assuming either way.
Read the lab report before you pick a code in the 83700 series
The lipoprotein codes run from simple concentration tests to particle profiles, and the lab report tells you which one was done. Picking the wrong line here is a frequent source of upcoding and undercoding in cardiology and preventive practices. Lipoprotein(a) is a separate test with its own code, 83695.
Pro Tip
If the report says NMR LipoProfile or lists LDL-P, the lab has usually assigned 83704. Direct LDL cholesterol is 83721, and lipoprotein electrophoresis or phenotyping is 83700 or 83701. Code from the test the lab performed and the CPT code it assigned, never from what the order intended.
How an 83704 claim moves from order to payment
Most of the work on an 83704 claim happens before anyone opens the billing screen. Here’s the path, step by step, with the point where each one tends to break.
- Order. The provider orders the test with a supporting ICD-10-CM code and a line on why. A missing reason here becomes a medical necessity denial later.
- Coverage check. The front desk confirms eligibility and any prior authorization the plan requires. A Medicare patient likely to be denied signs an ABN before the draw.
- Draw and send. The specimen goes to the performing lab. For Medicare, the lab that performs the test generally bills it, so confirm who bills before you build a claim.
- Claim. If you bill it, the CMS-1500 or 837P line carries 83704, one unit and a diagnosis pointer to the supporting code. Add modifier GA when an ABN is on file.
- Payer edits. The payer runs NCCI edits, checks the diagnosis against its coverage policy and applies any frequency limit.
- Remittance. The ERA (835) shows the paid amount or a denial code. CO-50 means not medically necessary, and CO-197 means the authorization was missing.
Notice that steps one and two decide most outcomes. By step six, you can only appeal.
Medicare covers 83704 for diagnosis and monitoring, not screening
Medicare pays for CPT code 83704 when it helps diagnose or manage a lipid disorder, never as a screening test. The national rule is NCD 190.23, Lipid Testing, which lists 83704 among its codes. Contractors treat testing of a patient with no symptoms as screening, even when risk factors like family history are present.
In MolDX states, the LCD Biomarkers in Cardiovascular Risk Assessment adds its own limits. Its number depends on your contractor, for example L36358 for Noridian JE and L36139 for CGS.
Earlier versions listed lipoprotein subclasses and LDL particles as non-covered inside a cardiovascular risk panel. Read the current version and its billing article before you bill.
- Medicare Part B: Medicare pays 83704 as a clinical diagnostic lab test. Each claim needs documented medical necessity and a diagnosis the NCD and any applicable LCD accept.
- MolDX jurisdictions: Check the Biomarkers in Cardiovascular Risk Assessment LCD for your MAC. CMS revises and retires LCDs, so confirm the version is active.
- Other MACs: Coverage follows NCD 190.23 plus any local policy. Search your contractor’s LCDs on cms.gov before ordering for Medicare patients.
- Commercial payers: Coverage varies widely, and many plans class particle testing as investigational for routine use. Prior authorization is common, so verify each plan.
- Prior authorization: Medicare doesn’t require it for 83704 and checks coverage through claim edits and medical review instead. Commercial rules differ by plan.
The diagnosis on the order decides whether 83704 gets paid
Lead with the diagnosis that explains why particle testing was needed, such as an E78 lipid disorder or established coronary disease coded as I25.10.
Accepted codes vary by payer and by LCD, so treat the table below as a starting point. No list guarantees payment without checking the payer’s current policy.
Medicare pays 83704 from the lab fee schedule, at $34.19 in 2026
CPT code 83704 is a clinical lab test, so Medicare pays it under the Clinical Laboratory Fee Schedule (CLFS), not the physician fee schedule. The CY 2026 national limit is $34.19, and the MAC pays the lesser of that amount or your billed charge.
The chart below sets that rate beside the other lipid codes.

CMS publishes the CLFS files each January and updates them quarterly, so pull the current file before quoting a rate. There are no RVUs, GPCIs or facility rates to apply. Medicare patients also pay no deductible or coinsurance on most clinical lab tests, 83704 included.
Document the reason for particle testing before the draw
Medical necessity for CPT code 83704 has to be in the record before the claim goes out, not written after a records request. Auditors look for evidence that the provider found a standard lipid panel insufficient and had a reason for particle testing.
These elements satisfy most LCDs and commercial medical billing compliance requirements.
- Established or suspected dyslipidemia: A documented lipid disorder with its ICD-10-CM code, such as E78.01 or E78.2, in the problem list or visit note.
- Prior standard lipid panel: A recent 80061 result that justifies further assessment. That usually means LDL-C at odds with the patient’s risk, or borderline results in a high-risk patient.
- Cardiovascular risk context: Relevant risk factors, such as diabetes, hypertension, smoking, premature ASCVD in the family or existing coronary disease.
- Clinical rationale for 83704: One line on how particle data will change management, such as statin intensification or assessing residual risk on therapy.
- LCD compliance: For Medicare patients, a diagnosis the applicable NCD or LCD accepts, at the specificity it asks for.
Before you submit, run this quick 83704 checklist.
- The supporting diagnosis is on the order, at the specificity the policy asks for.
- The last lipid panel’s date and result are in the note.
- The note says how particle data changes management.
- Eligibility is checked, and any prior authorization number is recorded.
- A signed ABN is on file for a doubtful Medicare claim, with modifier GA on the line.
- The lab’s CPT assignment reads 83704, not 83701 or 83721.
- Any same-day 80061 has been checked against NCCI edits and payer policy.
Most 83704 denials start at order entry
CPT code 83704 is denied more often than routine lab codes because its coverage is conditional. Most denials come from missing documentation, not coding errors. Knowing which medical billing denial codes show up on these claims lets you prevent them instead of appealing them.
Coding mistakes cause the rest, and each one is easy to catch before submission.
- Coding from the order. The provider asked for an “advanced lipid panel”, but the lab ran direct LDL-C, which is 83721.
- Billing subclasses twice. Subclasses are included in 83704 when performed, so they never justify a second line.
- Screening code on a treated patient. A patient on a statin has a lipid disorder to code, so Z13.6 doesn’t belong on the claim.
A denial management workflow for 83704 works best at order entry. A missing diagnosis caught before the claim costs a minute. Caught after a denial, it means rework, delayed payment and a possible write-off if the appeal window closes.
How Pabau keeps 83704 orders, auths and claims together
When the lab order, the result and the claim live in separate systems, the diagnosis gets retyped and the auth number gets lost. That’s usually where an 83704 claim breaks.
Pabau, the practice management and billing platform we build, keeps those steps on one patient record. Practices that switch on labs order Quest tests from the record, and results import automatically. Labcorp orders go through Labcorp Link and sync back too, and a trend chart shows each biomarker across visits.
For US billing, Pabau’s claims management software submits CMS-1500/837P claims through Claim.MD and runs eligibility checks. Prior authorizations are tracked on the patient’s case, with a warning when one is missing. ERA remittances come back through the same connection, so you can see which 83704 lines paid.
The result is fewer lab claims leaving without an auth number, and a remittance trail your team can work from.
Keep 83704 orders, auths and claims together
See how Pabau runs eligibility checks, tracks prior authorizations on the case and submits lab claims through Claim.MD. ERA remittances post back, so you can spot denied 83704 lines quickly.

Conclusion
CPT code 83704 pays more than a basic lipid panel, and payers review it that way. The claim stands or falls on the note written at ordering, not on the coding done later.
If you change one habit, make it the order note. Record the last panel, the diagnosis and why particle data matters, then check coverage before the draw. A Medicare patient with no symptoms gets an ABN, not a hopeful claim.
Book a demo to see how Pabau tracks the auth, submits the claim and posts the remittance for every lipid test you bill.
Continue your research
Need a foundation in lab code submission? Revenue cycle management explained covers how lab claims move from order entry to payment posting.
Seeing recurring 83704 denials? Clean claim submission best practices outlines the pre-submission checks that prevent the most common lab code rejections.
Billing advanced lipid tests through a clearinghouse? How Claim.MD clearinghouse works explains real-time eligibility, 837P claim routing, and ERA remittance handling for high-volume lab billing practices.
Billing a total cholesterol on its own? CPT code 82465 covers serum total cholesterol and how it relates to the lipid panel.
Frequently asked questions
Who bills 83704, the practice or the lab?
Usually the laboratory that performs the test. Under Medicare, the performing lab generally bills it directly. Your practice bills 83704 only when its own CLIA-certified lab runs the assay.
Is 83704 a CLIA-waived test?
No. CMS lists no waived (QW) version of 83704, unlike the basic lipid panel. A lab running it in house needs a CLIA certificate beyond a certificate of waiver.
Is an apoB test billed under 83704?
No. Apolipoprotein B has its own code, 82172, billed for each apolipoprotein measured. Some providers order both, so check payer policy before billing them on the same date.
When should a Medicare patient sign an ABN for 83704?
Before the draw, whenever you expect Medicare to deny the test, such as screening in a patient with no symptoms. Add modifier GA to the line so you can bill the patient if it’s denied.
Do Medicare patients pay coinsurance on 83704?
No. Medicare Part B pays most clinical lab tests, including 83704, with no deductible or coinsurance. A patient pays only for a denied test covered by a signed ABN.



