Key takeaways
HCPCS code G0166 reports one session of external counterpulsation, the code Medicare requires for EECP therapy.
Medicare will not accept a CPT code in place of G0166 on a Part B EECP claim.
NCD 20.20 covers refractory chronic stable angina at CCS class III or IV, usually capped at 35 sessions.
G0166 carries CMS PC/TC indicator 5, so Medicare pays the non-facility rate only.
Practice management software like Pabau validates payer fields on a claim, then submits and tracks it for you.
HCPCS code G0166 reports external counterpulsation, per treatment session. It is the code Medicare Part B requires for enhanced external counterpulsation (EECP) therapy, billed one unit per session. No CPT code substitutes for it.
Two facts shape everything else. Coverage runs through National Coverage Determination (NCD) 20.20, and the code pays at the non-facility rate only. This guide covers the coverage criteria, the documentation contractors look for, and the modifiers that apply. It also covers the denial patterns that cost practices the most rework.
HCPCS code G0166: definition and code details
HCPCS code G0166 is a Medicare-specific Level II G-code for enhanced external counterpulsation therapy, priced per treatment session. According to the Centers for Medicare and Medicaid Services, known as CMS, G-codes are temporary codes. CMS creates them for services that have no permanent CPT code.
The official long descriptor reads: “External counterpulsation, per treatment session.” Each unit of G0166 represents one complete EECP session, regardless of session duration (typically one hour).
What is enhanced external counterpulsation (EECP)?
Enhanced external counterpulsation (EECP) is a non-invasive cardiac therapy for refractory chronic stable angina. It is used when medical management has failed, or when the patient is not a candidate for revascularization. The treatment uses pneumatic cuffs applied to the calves, thighs, and buttocks.
These cuffs inflate and deflate in sync with the cardiac cycle, timed to the ECG. Inflation raises diastolic blood flow, and deflation at systole onset reduces the heart’s workload.
A typical EECP course consists of 35 one-hour sessions delivered over seven weeks. Cardiology and longevity practices often run those courses alongside a full outpatient caseload. Purpose-built longevity clinic software keeps every session log, note, and invoice on the same patient record.
- Primary indication: refractory chronic stable angina at Canadian Cardiovascular Society class III or IV
- Procedure mechanism: cuffs inflate in diastole to augment coronary perfusion. They deflate at systole onset to reduce afterload.
- Session format: one hour per session, typically 35 sessions over seven weeks
- Patient selection: standard medical therapy has failed and the physician judges the patient a poor revascularization candidate
- Clinical evidence: FDA-cleared device therapy, with randomized trial data (MUST-EECP) supporting angina symptom relief
G0166 vs CPT codes: why Medicare requires a G-code
Medicare requires HCPCS code G0166 on every EECP claim, and it does not accept a CPT code in its place. That single rule explains the largest share of EECP denials.
G-codes are CMS-created temporary codes for services that have no CPT equivalent. Because EECP has no dedicated CPT code, CMS established G0166 to enable consistent tracking, coverage policy enforcement, and payment under the Medicare Physician Fee Schedule. CMS uses G-codes the same way for other time- or session-based therapy services, including G0237.
For commercial payers such as Blue Cross Blue Shield, Cigna, Aetna, and UnitedHealthcare, the code requirement varies by plan. Some accept G0166. Others use a different internal code, or require prior authorization separately. Always verify each commercial plan’s EECP coverage policy before the first session.
Medicare coverage criteria for HCPCS code G0166
Medicare coverage for G0166 is governed by National Coverage Determination (NCD) 20.20. Coverage is narrow, and it turns on the angina itself rather than on an imaging number. A patient must meet all of the following:
- Diagnosis of chronic stable angina at Canadian Cardiovascular Society class III or IV
- Angina that is refractory to optimal medical therapy
- A physician judgment that the patient is a poor candidate for revascularization, whether from inoperable anatomy, high surgical risk, or comorbidity
- Alternatively, revascularization that was already performed without adequate symptom relief
- No active lower extremity deep vein thrombosis, and no other contraindication to cuff inflation
- Sessions delivered under physician supervision
The current NCD text, effective March 20, 2006, sets no ejection-fraction criterion. Payer and third-party summaries sometimes add an LVEF cutoff above 35%, so build your checklist from the NCD itself.
Medicare typically covers up to 35 one-hour sessions per course of treatment. Sessions beyond 35 are generally not covered without separate medical necessity documentation and MAC approval. A course also cannot be repeated within 24 months unless you submit information supporting medical necessity for the repeat.
Individual MAC policies may add requirements or prior authorization steps on top of the NCD. Always verify with the patient’s MAC before assuming coverage.
ICD-10 codes that support the claim
Every G0166 claim requires a supporting ICD-10-CM diagnosis code that establishes medical necessity. The codes below are the ones commonly paired with G0166 to document the underlying cardiac condition.
Unstable angina codes do not support G0166. I25.110 describes coronary atherosclerosis with unstable angina, and NCD 20.20 covers chronic stable angina only.
Verify every ICD-10-CM code against the current fiscal year’s CMS update files before submitting. Codes can be added, revised, or inactivated annually, and I25.10 is a common pairing worth checking each October.
Documentation requirements for G0166
Insufficient documentation is the leading cause of G0166 denials on audit. Medicare contractors expect the record to tell a complete clinical story. Using digital intake forms structured around these requirements reduces the risk of missing a required element at the point of care.

Most EECP candidates also carry diabetes, hypertension, or lipid disorders, and those comorbidities are often the reason revascularization was ruled out. A metabolic health EMR keeps that history on the same chart as the session logs.
Per CMS and NCD 20.20 requirements, the medical record must include:
- Referring physician order specifying EECP therapy, including the indication and planned session count
- Diagnosis documentation confirming chronic stable angina at class III or IV, with ICD-10-CM code support
- Evidence of refractory disease: records showing failure of optimal medical management, including nitrates, beta-blockers, and calcium channel blockers
- Revascularization assessment: a cardiology note or cath report explaining why CABG or PCI is not appropriate
- Absence of contraindications: a vascular assessment ruling out DVT, aortic regurgitation, aortic aneurysm, and uncontrolled hypertension. An ankle-brachial index reading is a common part of that workup.
- Session-by-session treatment logs: date, duration, patient response, and vital signs for each session
- Physician supervision: a record showing the sessions ran under the supervising physician’s direction
Maintaining HIPAA-compliant documentation throughout the EECP course is essential. Medicare auditors request the complete treatment record, not just the initial order.
Pro Tip
Build a G0166 pre-authorization checklist that mirrors NCD 20.20 criteria. Review it before the first session, not after. A missing revascularization note caught before session one is an easy fix. The same omission found during a post-payment audit is a repayment demand.
G0166 billing guidelines and reimbursement
G0166 is billed under Medicare Part B on a CMS-1500 claim form, or its electronic equivalent, the 837P. Each session is one billable unit. You do not bundle sessions or bill a course of treatment as a single claim.
The 35-session limit is not something the claim itself enforces, so the running total has to come from your treatment log. Check it before each claim leaves the practice.

What Medicare pays for a session
Medicare reimbursement for G0166 is set annually through the CMS Physician Fee Schedule. Rates vary by geographic locality and are adjusted by each Medicare Administrative Contractor (MAC). Because rates change each January 1, never rely on prior-year figures in claims decisions.
To find your locality’s rate, open the CMS fee schedule lookup tool, enter G0166, then select the current year and your MAC locality.
G0166 carries PC/TC indicator 5, which marks it as an incident-to service with no professional or technical split. That means Medicare publishes and pays only the non-facility rate. The fee schedule also does not separately pay G0166 under a facility place of service, which rules out POS 19 and POS 22.
Modifiers that apply
Most G0166 claims do not require a modifier. A few situations call for one:
Do not append evaluation and management (E&M) modifiers to G0166. EECP treatment sessions are not E&M services. If a separate, distinct E&M service happens on the same date, bill it separately with modifier 25 on the E&M code. Never put modifier 25 on G0166.
Related HCPCS and crosswalk codes
Coders working with G0166 should know the codes that sit next to it. The AAPC HCPCS lookup is a useful starting point for verifying adjacent G-codes and their descriptors.
Do not bill G0166 and an E&M code together unless a separately identifiable E&M service was performed and documented. The E&M must reflect decision-making beyond routine EECP monitoring. The CMS covered-code list is the reference for cross-checking.
Cardiac device codes such as C1732 pay through the outpatient prospective payment system instead, not the fee schedule.
Common billing errors and denial reasons
EECP billing has a narrow error margin. The denial reasons cited most often on G0166 claims are predictable. Practices using automated billing workflows can build pre-submission checks around each of these patterns.

- Wrong code type: a CPT code submitted instead of G0166 for a Medicare patient. This is the single most common denial.
- Session count exceeded: billing past 35 sessions without documented medical necessity and MAC approval. Claims for session 36 and beyond are denied without an approved exception.
- Repeat course too soon: starting a second course within 24 months without documentation supporting medical necessity for the repeat.
- Missing NCD criteria documentation: the record does not clearly establish class III or IV refractory angina, or the reasoning that ruled out revascularization. Auditors look for each criterion by name in the notes.
- Incorrect place of service: G0166 pays at the non-facility rate only, so the office setting uses POS 11. Medicare does not separately pay it through the fee schedule under a facility POS such as 19 or 22.
- Absent or unsigned ABN: when coverage is uncertain, an Advance Beneficiary Notice must be signed before the session starts. Without it, you cannot bill the patient after a denial.
- Diagnosis code mismatch: using an unstable angina code rather than a stable angina code. NCD 20.20 covers chronic stable angina, so unstable angina or acute coronary syndrome falls outside coverage.
Pro Tip
Run a weekly session count report for every active EECP patient. Flag anyone approaching session 28 for a coverage review. If more treatment is clinically indicated, start the MAC exception process at session 28, not after the denial arrives at session 36.
How Pabau keeps EECP claims and documentation together
In most EECP programs the paperwork lives in three places. The physician order and cath report sit in the chart. The session logs sit on a printed sheet by the machine. Claim data lives somewhere else again.
Pabau, our all-in-one practice management system, keeps them on one patient record. Intake and consent forms capture the NCD criteria before session one. Treatment notes hold the session-by-session log. Claims management then pulls the payer details already on that record into a pre-filled claim.
It validates the payer fields that reject claims outright, such as a missing membership or authorization number. Your team then submits and tracks the claim from the same screen. Two years later, an auditor’s request comes off a single record.
Submit cleaner EECP claims from one record
Pabau keeps the intake forms, treatment notes, and payer details for a G0166 course on one patient record. Claims management validates the payer fields, then submits and tracks the claim without a second system.
Conclusion
Get the code right and most of G0166 falls into place. Medicare wants HCPCS code G0166, at the non-facility rate, for a patient whose class III or IV stable angina has stopped responding to medicine. The rest is documentation.
The trade-off worth remembering is timing. Every criterion the NCD names is cheap to document before session one and expensive to reconstruct during a post-payment audit. Build the checklist first, run the session count weekly, and start the MAC conversation at session 28.
Book a demo to see how Pabau keeps a full 35-session EECP record and its claims in one place.
Continue your research
Billing another session-based Medicare G-code? HCPCS code G0255 sets out how sensory nerve conduction threshold testing is documented and paid.
Running cardiac function tests before EECP? Autonomic testing explains the test types, patient preparation, and how to read the results.
Need a therapy code with its own coverage cap? HCPCS code G0161 shows how a maintenance program is billed once active therapy ends.
Coding a patient with a prior heart attack? ICD-10 code I25.2 covers the descriptor and the documentation that supports it.
Billing the echo side of the cardiac workup? CPT code 93356 walks through myocardial strain imaging and the add-on rules that apply.
Frequently asked questions
What is HCPCS code G0166 used for?
HCPCS code G0166 is used to bill Medicare Part B for enhanced external counterpulsation (EECP) therapy, reported per treatment session. It is the required code for EECP under Medicare, and no CPT code substitutes for it.
Is G0166 covered by Medicare?
Yes. Medicare Part B covers G0166 under NCD 20.20 for refractory chronic stable angina at CCS class III or IV. The patient must also be a poor candidate for revascularization, or have had it without adequate relief.
What is the difference between G0166 and CPT codes for EECP?
G0166 is a CMS-created HCPCS Level II G-code specifically for EECP therapy under Medicare. CPT codes are maintained by the AMA and used by commercial payers. No dedicated CPT code exists for EECP, which is why CMS established G0166. Submitting a CPT code for EECP on a Medicare claim results in denial.
How many EECP sessions can be billed under G0166?
Medicare typically covers up to 35 one-hour EECP sessions per course of treatment under NCD 20.20. Sessions beyond 35 require separate medical necessity documentation and MAC approval. A course also cannot be repeated within 24 months without documentation supporting medical necessity.
What documentation is required to bill G0166?
Required documentation includes a physician order for EECP, records confirming chronic stable angina at class III or IV, and evidence that optimal medical therapy failed. You also need a revascularization assessment, contraindication screening, and session-by-session logs with date, duration, and patient response.
Can G0166 be billed with private insurance or only Medicare?
G0166 is mandatory for Medicare and Medicaid EECP claims. Commercial payers vary. Some accept G0166, and others use a different internal code or require prior authorization. Always verify the commercial plan’s EECP coverage policy and accepted code before the first session.
Can G0166 be billed with a facility place of service?
Not for a separate fee schedule payment. G0166 carries PC/TC indicator 5, so Medicare publishes and pays only the non-facility rate. Bill the office setting with POS 11 rather than POS 19 or 22.