Our complete pulmonary medicine guide

PFT billing: 94010, 94060, and the lung volume codes

There's no single "complete pulmonary function test" CPT code, which means every PFT claim is only as correct as the coder's judgment about which components were actually performed and how each one has to be documented. This guide goes code by code through the 94010–94729 family — the 94010/94060 distinction, the 94726–94729 lung volume and DLCO group, the 26/TC component split, the interpretation-and-report requirement that drives most PFT denials, and the ICD-10 codes that support ordering the test in the first place.

Key takeaways

  • 94060 supersedes 94010, it doesn't stack with it. 94060 already includes a baseline maneuver plus post-bronchodilator maneuvers; billing both the same encounter reports the baseline twice.
  • Four separate codes cover lung volumes, resistance, and diffusing capacity (94726–94729), each needing its own interpretation — there's no bundled "full PFT panel" code.
  • A tracing without a signed interpretation isn't a billable service. The interpretation is what's being paid for, not the raw data, and it's the single most common reason a PFT claim denies or gets recouped.
  • Not every PFT code supports a 26/TC split. Check the PC/TC indicator before appending either modifier — a code priced as a single global service denies if you split it anyway.

There's no "complete PFT" code — bill what was performed

A pulmonary function evaluation is built from independent components, each reported separately based on what the lab actually ran. There's no bundled panel code covering spirometry plus lung volumes plus diffusing capacity in one line, so under-coding — leaving a performed-and-interpreted component off the claim — is as common an error here as over-coding.

Core PFT code family.
CodeServiceBilling note
94010Spirometry, baseline onlyNever billed with 94060 the same session
94060Spirometry, pre- and post-bronchodilatorIncludes a baseline maneuver — supersedes 94010, doesn't add to it
94726Plethysmography for lung volumes and airway resistanceBody-box method
94727Gas dilution or washout for lung volumesAlternative method to plethysmography — report whichever was actually run, not both for the same measurement
94728Airway resistance by oscillometryDistinct technique from the plethysmographic resistance measurement under 94726
94729Diffusing capacity (DLCO)Reported alongside the base study actually performed, not as a standalone order in most clinical workflows

94726 and 94727 both measure lung volumes by different methods — body plethysmography versus gas dilution/washout — and 94726 additionally captures airway resistance in the same session. They're alternative routes to the same measurement, not additive: a lab with a body box runs 94726; a lab using helium dilution or nitrogen washout runs 94727. Billing both for one lung-volume assessment reports the same measurement twice, not two distinct studies.

94010 vs. 94060: what the NCCI edit actually allows

94060 already includes a full baseline spirometry maneuver in addition to the post-bronchodilator maneuvers, so a same-session 94010 reports that baseline a second time. Secondary NCCI commentary describes this pair as carrying a modifier indicator of 1, not 0 — an override modifier is theoretically permitted, but only where documentation shows the two studies happened at genuinely separate encounters, not because the claim was denying. ⚠️ This build could not open CMS's primary NCCI PTP Edits file directly to re-confirm the current-quarter indicator value (CMS's site returned access errors to automated fetch attempts); the indicator-1 characterization is corroborated by secondary billing-industry sources (AAPC coding guidance). Confirm the current value in the CMS NCCI PTP Edits Lookup Tool before building a scrubber rule against it.

In practice, that override is defensible only in a narrow scenario: a patient gets baseline spirometry for an unrelated visit in the morning, then returns later the same day for a physician-ordered bronchodilator challenge tied to a different clinical question. A single visit where the physician orders bronchodilator testing and the lab simply runs the baseline first as part of that one protocol is not two services — it's 94060 alone.

Pro tip

The clinically significant bronchodilator response threshold — FEV1 or FVC up at least 12% and at least 200 mL from baseline (ATS/ERS criteria) — belongs in the interpretation itself as a stated yes/no finding. A report that lists raw pre- and post-bronchodilator numbers without saying whether the threshold was met leaves the payer's reviewer to do the arithmetic, and it's an easy target on a documentation audit.

The 26/TC split: check the PC/TC indicator before you default to it

PFT codes carry a technical component (equipment, supplies, technologist time) and a professional component (interpretation and report), the same pattern as most diagnostic testing. Bill without a modifier only when one entity owns the equipment, employs the technologist, and performs the interpretation, all three. A pulmonologist reading a tracing acquired on hospital equipment bills 26 only; the hospital bills TC.

The trap specific to this family: not every code in the 94010–94729 range is priced with a PC/TC split under the Medicare Physician Fee Schedule. Some are structured as a single global value regardless of ownership. Appending 26 or TC to a code that isn't split doesn't reduce the payment proportionally — it denies, because the payer has no split rate to pay against. Look up the specific code's PC/TC indicator in the CMS Physician Fee Schedule Look-Up Tool before assuming the whole family behaves like a typical imaging study.

Do
  • Check each code's own PC/TC indicator before appending 26 or TC.
  • Report every component actually performed and interpreted, even across four line items.
  • State the bronchodilator response finding explicitly (met/not met the 12%-and-200 mL threshold).
  • Block chart closure until a signed interpretation is attached to every tracing.
Don't
  • Don't bill 94010 alongside 94060 for the same encounter.
  • Don't bill both 94726 and 94727 for a single lung-volume measurement.
  • Don't submit a claim on a tracing without a completed, signed interpretation.
  • Don't assume 94726–94729 all share the same MUE cap or PC/TC split as 94010/94060.

The interpretation-and-report requirement

This is the single most common PFT denial reason, and it has nothing to do with the equipment or the technologist's work. A tracing sitting in the chart without a signed interpretation is billed but not supportable — payers treat the interpretation as the service being paid for, not the raw data. Caught at submission, this denies as CO-16 (missing information); caught later, it's a post-payment recoupment on a claim that initially paid.

Build this into the chart-closing workflow, not the coding workflow — by the time a claim reaches the biller, the interpretation either exists, signed, or it doesn't.

ICD-10-CM codes that support ordering a PFT

Medical necessity turns on the indication documented at order time, not the eventual result. The codes below cover the most common reasons a PFT is ordered outside the COPD- and asthma-specific diagnoses already covered in our pulmonary medicine billing guide.

ICD-10-CM codes commonly supporting PFT medical necessity, verified live against the FY2026 code set.
CodeDescription
R94.2Abnormal results of pulmonary function studies
R06.02Shortness of breath
R06.00Dyspnea, unspecified — less specific than R06.02 where the chart supports it
J84.10Pulmonary fibrosis, unspecified
J84.112Idiopathic pulmonary fibrosis — more specific than J84.10 where confirmed
Z87.891Personal history of nicotine dependence
Z01.811Encounter for preprocedural respiratory examination — pre-operative PFT ordering

R94.2 (abnormal PFT results) is a findings code, not an indication for the initial order — it belongs on the follow-up encounter after an abnormal result, not the claim for the study that produced it. R06.02 (shortness of breath) is the more specific, generally preferred code over R06.00 (dyspnea, unspecified) whenever the chart documents shortness of breath specifically — the same specificity trap that runs across pulmonology's diagnosis coding generally.

⚠️ This build found no Medicare NCD or general MAC local coverage determination governing standard in-office spirometry or lung-volume/DLCO medical necessity, searched live via the CMS Coverage MCP connector. The only PFT-related local coverage document currently indexed is CGS Administrators' A56808, Billing and Coding: Transtelephonic Spirometry (effective 10/02/2025), governing remote/home spirometry monitoring specifically, not standard in-office testing. Confirm against your specific MAC's article list and any commercial payer's medical policy before assuming no coverage article applies to your claims.

MUE limits: what's confirmed and what to verify yourself

Secondary billing-industry sources describe a Medically Unlikely Edit of 1 unit per date of service on 94726, consistent with a lung-volume measurement by a given method being one study per encounter, not a per-attempt billable unit. ⚠️ This build could not independently confirm the current MUE values for 94726, 94727, 94728, or 94729 against CMS's primary MUE files (CMS's downloadable edit tables returned access errors to automated fetch attempts). Point your scrubber configuration at the CMS MUE Lookup Tool by procedure code rather than a cached number, and re-check it quarterly.

Not sure your PFT claims are fully supported?

We'll audit a sample of recent PFT claims for missing interpretations, 94010/94060 duplication, and 26/TC errors, and show what's recoverable.

Book a free claims review

Frequently asked questions

Does modifier 26 or TC apply to every PFT code, or only some?

Only some. Not every code in the 94010–94729 family carries a professional/technical split under the Medicare Physician Fee Schedule — some are priced as a single global service regardless of who owns the equipment, while others do split. Appending 26 or TC to a code that doesn't support a split denies outright rather than paying at a reduced rate. Check the code's PC/TC indicator in the Medicare Physician Fee Schedule Look-Up Tool before defaulting to the same split across the whole family.

What counts as a clinically significant bronchodilator response on 94060?

The standard threshold, from American Thoracic Society/European Respiratory Society criteria, is an increase in FEV1 or FVC of at least 12% and at least 200 mL from the pre-bronchodilator baseline. Both thresholds have to be met — a 12% improvement under 200 mL in a patient with a low baseline FEV1 doesn't qualify. The interpretation should state explicitly whether a significant response was observed, not just list the raw numbers and leave the reader to do the math.

Can we bill 94729 (DLCO) by itself without a spirometry or lung volume code the same day?

Clinically, DLCO is almost always ordered alongside spirometry or lung volumes as part of a fuller pulmonary function evaluation, and payer medical policy is typically written around that combined pattern. A standalone DLCO with no accompanying code the same encounter is unusual enough to invite a medical-necessity review even where no NCCI edit blocks it outright — document specifically why DLCO alone answers the clinical question, such as monitoring known interstitial lung disease where the obstructive/restrictive pattern is already established.

Verify before billing. CPT is a registered trademark of the American Medical Association; codes here are paraphrased, not reproduced from the CPT Professional edition. CPT, HCPCS and ICD-10 codes, coverage policy, and bundling edits change, including annual code-set updates. This page reflects standard industry practice and is provided for general education — it is not a substitute for your own compliance review, your current payer contracts, or the current-year code sets. Confirm requirements against your specific payer mix before submitting claims.

Related resources