Complete Guide to PFT CPT Code Billing and Documentation

  • Home
  • CPT
  • Complete Guide to PFT CPT Code Billing and Documentation
PFT CPT Code Billing & Documentation Complete Guide

A pulmonologist orders a same-day panel: spirometry, lung volumes, and a diffusion study. Three different technologies, three different CPT codes, and three different sets of rules about what can be billed together on the same claim. Multiply that by every payer’s local coverage policy, and it’s easy to see why pulmonary function testing generates more coding questions than almost any other outpatient diagnostic service.

The PFT CPT code set isn’t one code. It’s a family of codes in the 94000 series, each tied to a specific test method, each governed by its own documentation and bundling rules. Bill the wrong combination and a clean clinical encounter turns into a denied claim. This guide covers what healthcare providers, respiratory therapists, and medical billers actually need: what each code covers, where the bundling edits sit, what payers expect to see in the chart, and how a full pulmonary workup gets billed when no single “complete PFT” code exists.

What a pulmonary function test actually measures

Pulmonary function testing isn’t a single procedure. It’s a group of separate tests, each aimed at a different piece of respiratory physiology: how much air the lungs hold, how fast that air moves, and how efficiently oxygen crosses from the alveoli into the bloodstream. A patient might receive one component in isolation, such as basic spirometry for a pre-employment screening, or a fuller panel combining spirometry, lung volumes, and diffusion capacity to work up unexplained shortness of breath.

That modular structure is exactly why the coding gets complicated. Clinicians order testing to answer a specific clinical question: confirming asthma, staging chronic obstructive pulmonary disease (COPD), evaluating pulmonary fibrosis, or clearing a patient for surgery. Billers then have to translate whatever combination of tests was actually performed into matching CPT codes, without duplicating any measurement that a broader code already includes. Undercode a completed test, or stack codes that overlap, and the claim runs into trouble either way.

The core PFT CPT codes

CPT code

What it measures

Key billing note

94010

Basic spirometry: FVC, FEV1, FEV1/FVC ratio, flow rates

Usually includes the flow-volume loop and vital capacity from the same session

94060

Spirometry before and after a bronchodilator

Includes baseline spirometry; don’t also bill 94010 for the same encounter

94070

Bronchospasm provocation (methacholine, cold air, or antigen challenge)

Bundles every serial spirometry reading taken during the challenge into one service

94150

Vital capacity measured alone

Rarely billed separately; usually bundled into 94010

94200

Maximum voluntary ventilation

Same bundling logic as 94150

94375

Respiratory flow-volume loop

Typically included in 94010 when generated as part of routine spirometry

94726

Body plethysmography for lung volumes, and airway resistance when performed

Includes airway resistance; not billed with 94727 for the same encounter

94727

Gas dilution or washout for lung volumes

Alternative method to 94726

94729

Diffusing capacity (DLCO)

Add-on code; always billed with a primary PFT code

Spirometry: where every PFT panel starts

Spirometry is where most pulmonary evaluations begin. CPT 94010 covers a full spirometric session: forced vital capacity (FVC), forced expiratory volume in one second (FEV1), the FEV1/FVC ratio, and the associated flow rates, generally including the graphic flow-volume loop from that same session. A patient coming in for a routine breathing evaluation, a baseline asthma workup, or a pre-employment respiratory screening typically gets coded under 94010 alone. This is the code most people mean when they search for the CPT code for a pulmonary function test with spirometry.

Two related codes exist for narrower situations: 94150 for vital capacity measured alone, and 94200 for maximum voluntary ventilation measured alone. In practice, both are billed far less often than their presence on a fee schedule might suggest. When vital capacity or maximum voluntary ventilation is captured as part of a standard spirometry session, rather than as a stand-alone test, that measurement is already part of what 94010 covers. Billing 94150, 94200, or 94375 (the flow-volume loop code) on top of 94010 for the same encounter is a frequent source of denials, not because the codes themselves are wrong, but because the component they describe was already paid for once.

Bronchodilator responsiveness: CPT 94060

94060 is the CPT code for PFT with bronchodilator testing: spirometry repeated after a bronchodilator, usually albuterol, to check whether airflow obstruction reverses. The American Thoracic Society and European Respiratory Society define a significant bronchodilator response as an increase in FEV1 or FVC of at least 12 percent and at least 200 mL from baseline, a threshold that shows up repeatedly in asthma and COPD diagnostic criteria.

The billing rule that trips people up: 94060 already includes the pre-bronchodilator spirometry. Reporting 94010 alongside 94060 for the same session double-bills the baseline measurement, and most payers will deny or later recoup the duplicate charge.

Bronchospasm provocation: CPT 94070

94070 gets confused with 94060 fairly often, but it describes a different test. Where 94060 measures response to a drug that opens the airways, 94070 measures response to an agent meant to narrow them, typically methacholine, though cold air and specific antigen challenges also fall under this code. It’s used when a patient has symptoms suggestive of asthma but normal baseline spirometry, and the clinician needs to provoke airway hyperreactivity to confirm the diagnosis. Every serial spirometry reading taken during the graduated-dose challenge is bundled into the single 94070 charge; the individual maneuvers aren’t billed separately as repeated 94010 sessions.

Lung volumes and diffusing capacity

Spirometry measures airflow. It says nothing about how much air the lungs actually hold, which is where lung volume testing comes in.

CPT 94726 covers body plethysmography, the “body box” method, where a patient sits in a sealed chamber while pressure changes are used to calculate total lung capacity, functional residual capacity, and residual volume. It’s generally the more reliable method in patients with significant airway obstruction, where gas trapping can throw off dilution-based measurements. Airway resistance, when measured during the same session, is included in 94726 rather than billed as a separate line.

The alternative approach, helium dilution or nitrogen washout, falls under CPT 94727. Same clinical goal, different methodology. Because 94726 and 94727 measure the same thing by different means, payers generally expect to see only one of them billed per encounter; running both on the same date for the same patient is unusual enough that it invites a medical necessity question if it happens.

Diffusing capacity, billed under CPT 94729, measures how efficiently gas crosses the alveolar-capillary membrane, typically using a carbon monoxide uptake method. This is the CPT code for PFT with DLCO that shows up constantly in pulmonary fibrosis, emphysema, and pulmonary vascular disease workups, where airflow numbers alone don’t capture what’s happening at the gas-exchange level. The detail that catches billers off guard: 94729 is an add-on code. It can’t be billed by itself. A primary PFT code, spirometry, plethysmography, or gas dilution, has to appear on the same claim for 94729 to be payable.

Is there a CPT code for a complete PFT?

No, and it’s worth stating plainly, because the volume of searches for “CPT code for complete PFT” suggests a lot of people expect a single code to exist. A full pulmonary function evaluation is billed as a combination of separately reported codes, chosen based on which components the patient actually received.

A typical full panel for something like unexplained dyspnea or a new interstitial lung disease diagnosis combines:

  • 94010 or 94060 (spirometry, with or without bronchodilator)
  • 94726 or 94727 (lung volumes, by plethysmography or gas dilution)
  • 94729 (diffusing capacity, added on)

When bronchodilator response is also being tested, the spirometry component becomes 94060 instead of 94010, which is what a complete PFT with post-bronchodilator spirometry actually looks like on a claim: 94060, 94726, and 94729 reported together. Each code in that stack is reimbursed on its own, provided the documentation shows the test was performed and medically necessary. There’s no bundled “complete PFT” rate to look up. It comes down to listing every component code that applies.

Bundling edits that catch PFT claims

CMS maintains procedure-to-procedure bundling edits through its National Correct Coding Initiative (NCCI), and pulmonary testing has several that show up regularly in denial reports. The pattern is the same across most of them: a broader code already contains a measurement that a component code also describes, so billing both charges twice for one data point.

The combinations worth watching:

  • 94010 and 94060 together, for the same session. The baseline spirometry inside 94060 makes a separate 94010 charge redundant.
  • 94726 and 94727 together, for the same session. Different methods, same measurement goal; payers expect one or the other, not both.
  • 94150, 94200, or 94375 billed alongside 94010, when those measurements were captured as part of the same spirometry session rather than performed independently.
  • 94729 billed without any primary PFT code on the claim. As an add-on, it has nothing to attach to on its own.

Local Coverage Determinations back this up from the payer side. Novitas Solutions, the Medicare Administrative Contractor for Jurisdiction H, states in its Local Coverage Determination for pulmonary function testing (L34247) that tests performed as components rather than as a single, complete test will be denied. That one sentence covers most of the unbundling scenarios above.

Documentation Medicare and other payers expect to see

Correct coding only pays if the chart backs it up. A handful of documentation elements come up in nearly every payer’s PFT policy.

A signed order from the treating provider matters first. Under federal diagnostic testing rules at 42 CFR §410.32 and §410.33, Medicare pays for a diagnostic test only when the physician treating the patient for that condition orders it and uses the results in treatment.

The clinical indication needs to be specific. “Evaluate breathing problems” doesn’t hold up under review. “Assess reversibility of airflow obstruction in suspected asthma” ties the test to an actual clinical decision; a vague symptom note doesn’t.

Quality standards need to show up in the report, not just be assumed. The 2019 update to the joint American Thoracic Society and European Respiratory Society spirometry standard, led by Brian L. Graham and published in the American Journal of Respiratory and Critical Care Medicine, calls for at least three acceptable maneuvers with two reproducible results. Payers increasingly check whether the report documents that these criteria were met, not just the final numbers.

The interpretation has to be signed and substantive: more than “normal” or “abnormal.” A qualified practitioner should note the pattern (obstructive, restrictive, or mixed), the severity, and, when bronchodilator testing was done, the pre- and post-values with the percent change.

Screening doesn’t qualify. Medicare’s coverage policy excludes routine testing of asymptomatic patients, including screening based only on smoking history with no other symptoms or findings.

Frequency limits and medical necessity

Payers watch repeat PFT billing closely. Local Coverage Determinations generally state that routine, scheduled testing at every follow-up visit, without a documented change in clinical status, doesn’t meet the reasonable-and-necessary standard. A defensible repeat test ties to something specific: a new symptom, a medication change, disease progression, or a pre-operative decision point. Some LCDs set hard limits on narrower scenarios; one Medicare policy restricts post-bronchodilator studies performed for morbid-obesity-related calorimetry calculations to once every two years. A practice testing more often than a payer’s policy anticipates is worth a second look before it becomes a pattern of denials.

Place of service and the professional or technical split

Where a PFT is performed changes how it gets paid. Testing done in a physician’s office (place of service 11) is billed under the non-facility fee schedule, which usually reimburses the practice at a higher total rate than the same test performed in a hospital outpatient department (place of service 22), where the facility collects a separate payment for the technical side of the service.

That professional and technical split matters directly when interpretation and testing happen in different places. If a pulmonologist reads results from a test performed at a hospital’s pulmonary lab, the physician bills the spirometry code with modifier 26 (professional component) for the interpretation, while the hospital bills the same code with modifier TC (technical component) for performing the test itself.

Common questions about PFT CPT codes

What is the CPT code for a pulmonary function test?

There isn’t one single code. Basic spirometry is billed under 94010, and additional codes apply depending on which other components (bronchodilator response, lung volumes, diffusing capacity) were also performed.

What is the difference between CPT 94010 and 94060?

94010 covers baseline spirometry on its own. 94060 covers spirometry performed before and after a bronchodilator, and it already includes the baseline measurement, so the two aren’t billed together for the same session.

Can CPT 94729 be billed on its own?

No. It’s an add-on code for diffusing capacity testing, and it has to be reported alongside a primary PFT code, such as 94010, 94060, 94726, or 94727, performed during the same session.

Getting PFT claims right the first time

Match the code to the method actually used. Don’t stack a component code on top of a broader one. Attach 94729 to a primary code every time it appears on a claim. Keep the chart specific enough to show medical necessity rather than a generic complaint. The 2026 CPT code set didn’t change the core PFT codes, so a biller working from an accurate 2025 reference is still on solid ground this year.

Where practices actually lose money usually isn’t incorrect coding. It’s undercoding: leaving 94729 off a claim because the biller wasn’t confident it needed a companion code, or defaulting to 94010 when 94060 was the service actually performed and documented. A PFT CPT code, billed correctly and backed by a chart that shows the clinical reasoning behind the test, tends to get paid the first time it’s submitted.

Leave A Comment

Your email address will not be published. Required fields are marked *