Pulmonology CPT codes in 2026: spirometry, PFT, and bronchoscopy coding guide
The most-used pulmonology CPT codes in 2026 are 94010 and 94060 for spirometry, 94726 to 94729 for pulmonary function tests, and 31622 to 31654 for bronchoscopy. Each one carries its own bundling rules, modifier requirements, and medical-necessity documentation, and getting any of those wrong is what turns a clean claim into a denial.
Pulmonology lives or dies on procedure coding. A pulmonologist can document a flawless encounter, but if the coder bills 94010 when the provider performed a pre- and post-bronchodilator study, or unbundles a diagnostic bronchoscopy that should have been folded into a biopsy, the revenue leaks out quietly. Current Procedural Terminology (CPT) codes change every January 1, and the supporting diagnosis codes change every October 1, so what passed last year may trigger an edit this year.
This guide breaks down the pulmonology CPT codes that matter most in 2026, the International Classification of Diseases, 10th Revision (ICD-10) diagnoses that support them, and the specific mistakes that drive denials. Whether you handle billing in-house or you are evaluating a pulmonology billing partner, you will leave knowing exactly where pulmonology revenue gets lost.
Key Takeaways - The 94010 vs 94060 distinction is the single most common spirometry coding error: 94010 is a baseline study, 94060 is pre- and post-bronchodilator. - Diagnostic bronchoscopy (31622) is a "separate procedure" that bundles into more extensive bronchoscopic work; billing it alongside a biopsy without justification triggers National Correct Coding Initiative (NCCI) edits. - Pulmonary function test (PFT) codes (94726 to 94729) each measure something different. Billing a full panel without documentation to support each component invites payer review. - Every pulmonology procedure needs an ICD-10 diagnosis specific enough to prove medical necessity. Unspecified codes like J44.9 are valid but weaker support for advanced testing. - CMS Article A57225, "Billing and Coding: Respiratory Care," is the authoritative reference for Medicare coverage and frequency limits on respiratory testing.
What changed for pulmonology billing in 2026
Pulmonology coding did not get simpler in 2026. Payers continue to tighten medical-necessity review on PFTs and high-cost interventional bronchoscopy, and the shift toward navigational and robotic bronchoscopy has added codes that many billers are still learning.
Coding disclaimer: Billing codes and guidelines are subject to annual updates. The codes below reflect commonly used pulmonology CPT and ICD-10 codes, but you should always verify current codes and descriptors with official sources (AMA for CPT, CMS for coverage) before claim submission.
Three themes define the 2026 landscape. First, documentation specificity matters more than ever, because payers increasingly auto-deny advanced testing tied to unspecified diagnoses. Second, the bundling logic around bronchoscopy continues to catch practices off guard, especially when multiple biopsies happen in one session. Third, telehealth pulmonology visits carry their own modifier requirements that sit alongside the procedure codes you bill in the office.
Consider what happened to a three-physician pulmonology group in Tennessee this past winter. Their biller had been appending no modifier to repeat spirometry performed the same day as an evaluation and management visit, assuming the payer would sort it out. Over four months, $18,000 in spirometry charges bounced back as bundled into the office visit. The fix took fifteen minutes of training, but the recovered revenue required re-billing dozens of claims. Coding precision is not a back-office detail. It is cash flow.
Want to know where your pulmonology claims are leaking? Schedule a free billing audit and we will pull your denial data by code and payer.
Spirometry CPT codes: 94010, 94060, and the rest
Spirometry is the workhorse of pulmonology, and it is also where the most preventable coding errors happen. The two codes you will use most are 94010 and 94060, and confusing them is the fastest way to get paid less than you earned or denied outright.
94010 vs 94060: the difference that triggers denials
CPT 94010 reports a single, baseline spirometry: the graphic record, total and timed vital capacity, and expiratory flow rates, with or without maximal voluntary ventilation. CPT 94060 reports bronchodilation responsiveness, meaning spirometry performed both before and after the patient receives a bronchodilator. If the provider gave albuterol and re-tested, you bill 94060, not 94010.
Here is the rule of thumb: one set of measurements means 94010, before-and-after means 94060. You do not bill 94010 in addition to 94060 for the same session, because the pre-bronchodilator spirometry is already built into 94060.
|
Code |
What it reports |
Bill when |
|
94010 |
Baseline spirometry, single set of measurements |
No bronchodilator administered |
|
94060 |
Pre- and post-bronchodilator spirometry |
Bronchodilator given and patient re-tested |
|
94070 |
Bronchospasm provocation, multiple spirometric determinations with administered agents |
Methacholine or similar challenge testing |
|
94375 |
Respiratory flow-volume loop |
Flow-volume loop performed as a distinct study |
|
94150 |
Vital capacity, total (separate procedure) |
Standalone vital capacity measurement |
Common spirometry denials and how to prevent them
The most frequent spirometry denial is bundling into the office visit. When spirometry is performed on the same day as an E/M service, the payer may bundle the two unless the documentation supports a separately identifiable service and the correct modifier is applied. The second most common denial is medical necessity, where the diagnosis on the claim does not justify the test.
Prevention comes down to three habits. Pair every spirometry with a specific respiratory diagnosis, document the clinical reason for the test, and confirm whether the payer requires a modifier when spirometry accompanies an E/M visit. Practices that build these checks into charge entry rather than fixing them after the denial protect the most revenue.
Pulmonary function test (PFT) CPT codes
"Pulmonary function test" is an umbrella term, and that is exactly why PFT coding gets messy. The codes in the 94726 to 94729 range each measure a different aspect of lung function, and billing a full panel without documentation to support each component is a fast track to a payer audit.
Lung volume, diffusion, and resistance codes
The core PFT codes break down by what they measure. Understanding the distinction keeps you from over-coding or under-coding a panel.
- 94726: Plethysmography for determination of lung volumes and, when performed, airway resistance.
- 94727: Gas dilution or washout for determination of lung volumes and, when performed, distribution of ventilation and closing volumes.
- 94728: Airway resistance by oscillometry.
- 94729: Diffusing capacity, such as carbon monoxide or membrane (DLCO).
These codes can be billed together when each component is performed and documented, but they are not automatically a bundle. If the provider performed plethysmography and diffusing capacity, you bill 94726 and 94729. If only diffusing capacity was performed, you bill 94729 alone.
Pulmonary stress testing
Pulmonary stress and exercise testing carries its own codes. CPT 94617 covers exercise testing for bronchospasm, including pre- and post-spirometry and electrocardiographic recordings, while CPT 94621 covers complex cardiopulmonary exercise testing. The complexity of the documentation has to match the code: a simple walk test does not support a complex CPET code.
A solo pulmonologist in Ohio learned this the hard way. She was billing complex cardiopulmonary exercise testing for routine six-minute walk assessments, and when a Medicare Administrative Contractor (MAC) review flagged the pattern, the practice faced a refund request and a documentation audit. The codes existed for legitimate services she sometimes performed, but the documentation on the routine tests did not support the complex code. Matching the code to the actual work performed is not just compliance, it is protection.
For Medicare patients specifically, frequency and coverage rules live in CMS Article A57225, "Billing and Coding: Respiratory Care," which spells out covered PFT codes and the diagnoses that support them. Reviewing that article before billing repeat testing prevents the medical-necessity denials that plague pulmonology practices.
See how specialized coders catch these patterns. Our pulmonology billing team reviews PFT documentation against payer policy before claims go out, not after they bounce back.
Bronchoscopy CPT codes: the 31622 to 31654 range
Bronchoscopy is where pulmonology coding gets genuinely complex, and it is the area where 247 MBS sees the highest-dollar denials. The codes run from 31622 through 31654, and the relationships between them, what bundles, what adds on, and what stands alone, decide whether you collect full value.
31622: the diagnostic base code
CPT 31622 is diagnostic bronchoscopy, rigid or flexible, including fluoroscopic guidance when performed, with cell washing when performed. Critically, it is designated a "separate procedure," which means it bundles into more extensive bronchoscopic work performed in the same session. If the provider performs a biopsy, the diagnostic survey is generally part of that biopsy code, and billing 31622 separately triggers an NCCI edit.
You bill 31622 alone when a diagnostic flexible bronchoscopy is the only procedure performed, with no biopsy, no lavage, and no other intervention. The moment additional work happens, you move to the code that describes that work.
Add-on and component bronchoscopy codes
Most bronchoscopy sessions involve more than a diagnostic look. These codes describe the specific interventions, and each replaces or supplements the base code depending on what was done.
|
Code |
Procedure |
|
31623 |
Bronchoscopy with brushing or protected brushings |
|
31624 |
Bronchoscopy with bronchoalveolar lavage (BAL) |
|
31625 |
Bronchoscopy with bronchial or endobronchial biopsy(s), single or multiple sites |
|
31628 |
Bronchoscopy with transbronchial lung biopsy(s), single lobe |
|
31632 |
Transbronchial lung biopsy(s), each additional lobe (add-on to 31628) |
|
31629 |
Bronchoscopy with transbronchial needle aspiration biopsy(s) |
|
31627 |
Computer-assisted, image-guided navigation (add-on) |
|
31652, 31653 |
Endobronchial ultrasound (EBUS) guided sampling |
31625 vs 31628: biopsy coding that gets denied
The difference between 31625 and 31628 confuses even experienced coders. 31625 is an endobronchial biopsy, where tissue is sampled from the airway wall that the scope can see directly. 31628 is a transbronchial lung biopsy, where the instrument passes through the airway wall into the lung parenchyma. They describe different procedures, and choosing the wrong one means either a denial or a compliance exposure.
When multiple lobes are biopsied transbronchially, you bill 31628 for the first lobe and add 31632 for each additional lobe. This is where add-on coding earns real money, and where practices that default to a single code leave revenue on the table.
Bundling, modifier 59, and modifier 52
Bronchoscopy bundling follows NCCI logic. Diagnostic bronchoscopy bundles into therapeutic and biopsy procedures, and procedures performed at the same site generally do not unbundle. When genuinely distinct procedures are performed at separate anatomical sites, modifier 59 or the more specific modifier XS may be appropriate to indicate a distinct procedural service, but only when the documentation supports it.
There is also a documentation nuance specific to bronchoscopy. The American Association for Bronchology and Interventional Pulmonology has issued guidance on appending modifier 52 (reduced services) when a bronchoscopy is performed through a tracheostomy or endotracheal tube, since part of the typical procedure is bypassed. Knowing these payer-specific and society-specific rules is the difference between a coder who processes claims and one who maximizes legitimate reimbursement.
Pulmonology ICD-10 codes that support medical necessity
CPT codes tell the payer what you did. ICD-10 codes tell the payer why, and in pulmonology, the "why" is what gets advanced testing approved or denied. The codes below are drawn from the 2026 ICD-10-CM code set and are valid for claim submission, but specificity is what carries them.
|
Condition |
ICD-10 code |
Notes |
|
COPD, unspecified |
J44.9 |
Valid but weak support for advanced testing |
|
COPD with acute exacerbation |
J44.1 |
Stronger support for repeat testing |
|
COPD with acute lower respiratory infection |
J44.0 |
Documents the infectious component |
|
Asthma, unspecified uncomplicated |
J45.909 |
Use a severity-specific code when documented |
|
Asthma by severity |
J45.20 / J45.30 / J45.40 / J45.50 |
Mild intermittent through severe persistent |
|
Asthma with acute exacerbation |
J45.901 |
Supports same-day spirometry and bronchodilator testing |
|
Asthma with status asthmaticus |
J45.902 |
High-acuity documentation |
|
Other interstitial pulmonary disease |
J84.89 |
Common support for DLCO and full PFT panels |
|
Chronic pulmonary embolism |
I27.82 |
Supports advanced cardiopulmonary evaluation |
The lesson across every one of these codes is the same: reach for the most specific diagnosis the documentation supports. A claim for a full PFT panel backed only by J44.9, unspecified chronic obstructive pulmonary disease (COPD), is far more likely to face medical-necessity review than the same panel backed by J44.1 with documented exacerbation. Specificity is not bureaucratic box-checking. It is how you prove the test was warranted.
Building a pulmonology denial-prevention system
Fixing individual denials is necessary, but the real win is a workflow that prevents them. The highest-performing pulmonology practices track denials by code and payer, then address the root cause rather than re-billing one claim at a time.
Start with the five denial drivers that account for most pulmonology revenue loss:
- Bundling and NCCI edits, especially around 31622
- Missing or incorrect modifiers on same-day spirometry
- Medical-necessity denials from unspecified diagnoses
- Frequency-limit denials on repeat PFTs
- Documentation gaps on pre- and post-bronchodilator studies
Run a monthly denial report sorted by these categories, and you will see exactly where to focus.
Pulmonology shares billing patterns with adjacent specialties, which is why coordinated coding matters. Sleep studies often accompany pulmonology workups, so aligning your approach with sleep disorder billing prevents cross-specialty edits. Lung nodule and cancer workups overlap with oncology billing, where bronchoscopic biopsies feed into staging. And telehealth pulmonology visits carry modifier requirements covered in our guide to 2026 telemedicine billing modifiers.
The following webinar from a pulmonology coding society walks through real bronchoscopy coding scenarios and is a useful companion to this guide:
[Video] "Documentation, Coding, and Billing Best Practices", Society for Advanced Bronchoscopy (March 2026) Embed: https://www.youtube.com/watch?v=HkW-TytT2Uc
At 247 Medical Billing Services, our dedicated pulmonology billing team applies these checks at charge entry, validating CPT-to-ICD-10 pairing, flagging bundling conflicts, and confirming modifier requirements before claims leave the building. Across 60+ specialties, that proactive review is how we maintain a 98%+ clean claims rate for the practices we serve.
Frequently asked questions about pulmonology coding
How do you bill for PFTs?
Bill each pulmonary function test component with its specific CPT code: 94726 for plethysmography lung volumes, 94727 for gas dilution lung volumes, 94728 for airway resistance by oscillometry, and 94729 for diffusing capacity. Bill only the components actually performed and documented, pair each with a specific respiratory diagnosis, and check CMS Article A57225 for Medicare frequency and coverage rules.
What is the difference between 94010 and 94060?
CPT 94010 reports a single baseline spirometry with no bronchodilator. CPT 94060 reports spirometry performed both before and after a bronchodilator to measure responsiveness. If the provider administered a bronchodilator and re-tested the patient, bill 94060. You do not bill 94010 separately in addition to 94060 for the same session.
What CPT code is used for pulmonary function tests?
There is no single PFT code. The common pulmonary function test codes are 94726 through 94729, covering lung volumes by plethysmography, lung volumes by gas dilution, airway resistance, and diffusing capacity. Spirometry codes 94010 and 94060 are often performed alongside them, and pulmonary stress testing uses codes such as 94617 and 94621.
What is CPT code 31622?
CPT 31622 is a diagnostic bronchoscopy, rigid or flexible, including fluoroscopic guidance when performed, with cell washing when performed. It is designated a "separate procedure," which means it bundles into more extensive bronchoscopic procedures performed in the same session and should not be billed separately when a biopsy or other intervention is also performed.
What is the difference between CPT 31625 and 31628?
CPT 31625 is a bronchoscopy with endobronchial biopsy, sampling tissue from the visible airway wall. CPT 31628 is a bronchoscopy with transbronchial lung biopsy, passing the instrument through the airway wall into the lung tissue. They describe different procedures, and for multiple lobes biopsied transbronchially, add-on code 31632 is reported for each additional lobe beyond the first.
Turn pulmonology coding accuracy into recovered revenue
Pulmonology revenue depends on getting three things right: the procedure code that matches what was performed, the diagnosis code specific enough to prove medical necessity, and the modifier that satisfies payer bundling rules. Spirometry, PFTs, and bronchoscopy each have their own traps, from the 94010-versus-94060 mix-up to the 31622 bundling edit to the medical-necessity denials that follow unspecified diagnoses.
The practices that protect this revenue do not chase denials after the fact. They build coding accuracy into charge entry, pair every procedure with the right diagnosis, and stay current as CPT and ICD-10 codes change each year. That is exactly the work a specialized pulmonology billing team does every day.
If pulmonology denials are eroding your collections, the first step is knowing where the revenue is leaking. Schedule a free billing audit with 247 Medical Billing Services, and we will analyze your pulmonology claims by code and payer to show you the specific opportunities to recover revenue and reduce denials.