Key takeaways
HCPCS Code G0009 is the Medicare administration code for pneumococcal vaccines, and CPT 90471 covers the same act for other payers.
G0008, G0009, and G0010 are three separate Medicare G-codes, each with its own vaccine type and companion product codes.
G0009 has to appear on the same claim as a vaccine product code, such as 90671, 90677, or 90732.
Medicare Part B waives the deductible and the coinsurance when a participating provider bills G0009 directly.
No modifier belongs on G0009 itself, but modifier 25 goes on a separate E/M visit billed the same day.
A single dose of PCV20 or PCV21 completes the series, so no PPSV23 dose follows it.
HCPCS Code G0009 is the Medicare-specific code for administering a pneumococcal vaccine. It reports the injection, while the vaccine supply is billed under its own product code on the same claim. Commercial insurers and most Medicaid programs use CPT 90471 for the same act.
Medicare Part B covers G0009 under its preventive services benefit. Patients pay no deductible and no coinsurance when a participating provider gives the vaccine and bills directly. The quick-reference table below pairs each Medicare vaccine G-code with its non-Medicare equivalent, modifier rule, and diagnosis code. The sections after it cover product codes, payment, frequency limits, and documentation.
What HCPCS Code G0009 covers
G0009 is an HCPCS Level II G-code maintained by the Centers for Medicare and Medicaid Services (CMS), for use in Medicare billing only. Its official descriptor reads Administration of pneumococcal vaccine.
G-codes exist because Medicare built its own payment categories for services that do not map cleanly onto CPT. The G prefix on its own tells you nothing about coverage, though. Medicare also uses G-codes well outside preventive care, such as G0289.
G0009 is the administration-only code. It does not bundle the vaccine supply, so the vaccine product code is billed separately on the same claim.
- Code: G0009
- Code set: HCPCS Level II (Healthcare Common Procedure Coding System)
- Maintained by: Centers for Medicare and Medicaid Services (CMS)
- Clinical purpose: Reports the act of administering a pneumococcal vaccine to a Medicare beneficiary
- Payer applicability: Medicare Part B only
- Companion code required: Yes, a vaccine product code must appear on the same claim
G0009 is one of three Medicare-specific immunization administration codes. The other two are G0008 for influenza and G0010 for hepatitis B. Both follow identical billing logic within their own vaccine types.
G0009 at a glance: Codes, modifiers, and diagnosis pairing
Here is the whole billing picture for the three Medicare vaccine administration codes, in one place. Each row shows what the code covers and the code other payers expect instead. It also carries the modifier rule, the diagnosis code, and the same-day billing note.
All three are paid from the annual Medicare Physician Fee Schedule, at a national amount your MAC adjusts by locality. None of them carries patient cost-sharing when a participating provider bills Medicare directly. The vaccine product code is paid separately, on its own line.
Medicare coverage and billing requirements
Medicare Part B covers pneumococcal vaccine administration under the preventive services benefit in Social Security Act Section 1861(s)(10). Bill G0009 correctly and the patient owes nothing, provided the administering provider participates in Medicare and bills the program directly.
G0009 pays for the injection itself, so no separate injection code goes on the claim. Billers hunting for a CPT code for intramuscular injection usually land on 96372, which Medicare does not accept for vaccine administration. PCV15, PCV20, and PCV21 are all intramuscular injections, and G0009 already reports that work.
Preventive claims run through the same revenue cycle management process as every other charge. Most G0009 denials start at charge entry, so the checks below belong in your workflow rather than in your appeals queue.

Here is what Medicare expects on a compliant G0009 claim.
Which pneumococcal vaccine product codes to bill with G0009
G0009 pairs with one of four vaccine product codes, 90670, 90671, 90677, or 90732. The administration act and the vaccine supply are billed on separate lines of the same claim. Each product code is tied to a formulation that Medicare Part B covers.
CPT 90677 is the code to know for the current adult schedule. The Prevnar 20 CPT code is 90677, and one dose of PCV20 completes the adult series without a PPSV23 follow-up. Billing 90732 after it is the mistake that follows from using the older schedule.
Always check product code coverage against the current CMS vaccine code list before billing. CMS adds and updates covered product codes as new formulations are approved. An unlisted product code alongside G0009 comes back as a denial.
This split between supply and service repeats across HCPCS Level II. Drug codes such as J1250 and J0780 bill the substance, while the service that delivers it is coded on its own line.
G0009 vs CPT 90471: Which code applies
Payer type decides which code you bill. G0009 applies when Medicare Part B is primary, and CPT 90471 covers the same injection for commercial insurers and most Medicaid programs.
Medicare’s claim-processing system expects G0009, so 90471 on a Medicare vaccine claim is denied. EHR billing integration that reads payer type at charge entry stops the error before the clearinghouse sees it.
If the patient is not a Medicare beneficiary, 90471 may well be correct, depending on the payer. G0009 is Medicare-only. Practices serving mixed payer populations need charge capture that routes the administration code by primary insurance.

How G0008, G0009, and G0010 differ
The three codes differ by vaccine type and nothing else. G0008 reports influenza administration, G0009 pneumococcal, and G0010 hepatitis B for at-risk beneficiaries. Mixing them up is a billing error rather than a clinical one, and it produces the same denial. Primary care software that records the vaccine type at booking keeps the wrong G-code off the claim.
One naming confusion causes most of the trouble. Search results for a G0008 CPT code description come back full of CPT lookups. G0008 is an HCPCS Level II G-code, and CPT has no equivalent numbering for it.
The CPT code for influenza vaccine is a product code, and it depends on the formulation given. CPT code 90661 covers a cell-culture influenza vaccine, while 90686 and 90682 cover other preparations. G0008 pays for the administration, exactly as G0009 does for pneumococcal.
All three share the same logic. The administration G-code and the vaccine product code go on the same claim, with no extra CPT administration code for the Medicare portion.
A flu shot and a pneumococcal vaccine given at the same visit are billed together. G0008 and G0009 both go on the claim, each on its own line with its own product code. Medicare pays both administration codes, and neither one needs a modifier to sit alongside the other.
How Medicare sets the reimbursement rate
CMS publishes a national allowable amount for G0009 in the annual Medicare Physician Fee Schedule. That national rate is a benchmark, and your Medicare Administrative Contractor (MAC) may adjust it by locality. Check the current figure in the CMS fee schedule tool before you use it for budgeting.
Rates for vaccine administration G-codes are updated each calendar year, per the CMS HCPCS overview. The amount has always been modest, because it pays for the administration act and nothing else. The vaccine product code carries its own separate allowable.
- National rates are published in the Medicare Physician Fee Schedule and take effect on January 1 each year
- MAC locality adjustments produce slightly different payment amounts by geographic area
- The product code allowable is set separately from the G0009 allowable, and both appear on the Explanation of Benefits
- Non-participating providers who accept assignment receive 95% of the Medicare-approved amount
- Non-participating providers who do not accept assignment face further limits on what they can charge
The AAPC HCPCS lookup is a quick way to cross-check the current G0009 descriptor against the amounts CMS publishes.
Modifiers used with G0009
G0009 does not normally carry a modifier. Medicare recognizes it as a preventive service from the code itself, so nothing extra is needed to waive the patient’s cost-sharing.
The modifier that matters here sits on a different line. When a separately identifiable evaluation and management (E/M) visit happens on the same day as the vaccine, append modifier 25 to the E/M code. It tells Medicare the visit was distinct from the vaccine administration, so both lines can be paid.
Modifier 25 never goes on G0009 itself. It belongs on the E/M code, and the note has to show work beyond the injection to support it.
A vaccine-only encounter has no E/M service to bill at all, which is how most flu-season and travel clinic visits run. Attaching an E/M code to those encounters is a well-known audit trigger.
One correction is worth making here, because plenty of coding write-ups get it wrong. Modifier PT is often quoted for Medicare preventive vaccine claims, and it does not apply. PT marks a colorectal cancer screening test that was converted to a diagnostic procedure, and it has no connection to vaccine administration.
Beyond modifier 25, requirements vary by MAC. Confirm with your contractor before applying anything that is not written into a local coverage determination or a published billing article.
Diagnosis codes to report on the claim
Z23, encounter for immunization, is the primary diagnosis code on a G0009 claim. Medicare requires a supporting ICD-10-CM code on every claim, and Z23 sits in the chapter covering factors that influence health status. These are administrative codes rather than disease codes, which suits a well-patient preventive encounter.
Z23 is the workhorse code for G0009 claims. Some practices add secondary ICD-10 codes for underlying risk factors, such as immunocompromised status. Z23 on its own generally satisfies Medicare’s medical necessity documentation for covered pneumococcal vaccines. Confirm with your MAC whether it expects anything more.
Frequency limits and patient eligibility
G0009 can be billed again only when the ACIP schedule says another dose is due. Medicare’s pneumococcal coverage follows that schedule, and it decides which claims clear medical necessity. Tracking patient compliance with the immunization schedule tells staff who is due and who has already finished the series.
- Adults 65 and older: A single dose of PCV20 or PCV21 completes the series on its own, with no PPSV23 dose to follow. Where PCV15 is used instead, it is followed by PPSV23 at least one year later.
- Interval after PCV15: At least 12 months should separate the PCV15 dose from the PPSV23 dose. Billing G0009 with PPSV23 inside that window is likely to be denied.
- High-risk patients under 65: Medicare may cover pneumococcal vaccines for beneficiaries under 65 at high risk of pneumococcal disease. Document the clinical indication clearly in the record.
- Series completion: Once a patient’s series is complete under ACIP guidance, Medicare stops covering further doses. A new ACIP recommendation or a high-risk exception is the only route back to coverage.
The CDC’s pneumococcal recommendations set out which combinations count as a complete series. The MAC checks frequency against the patient’s Medicare record during processing, so review the immunization history before you administer and bill.
Documentation that supports the claim
The record has to show the vaccine given, its lot number, the route and site, the administering provider, and the date. CMS and MAC guidance require that detail behind every G0009 claim, and thin documentation is a leading cause of post-payment recoupment.
Digital intake forms that capture vaccine consent and administration detail at the point of care build that record without extra work.

Pair your MAC’s billing articles with a HIPAA compliance checklist and a clinical forms workflow so nothing is missing at submission.
- Vaccine name and lot number: Record the specific vaccine given, the manufacturer, and the lot number in the encounter note or vaccine log
- Date of administration: Must match the date of service on the claim
- Route and site: Intramuscular injection, with the site documented (for example, left deltoid)
- Administering provider: Name and NPI of the provider who gave the vaccine
- ICD-10 diagnosis code: Z23 documented in the medical record to support the claim
- Vaccine Information Statement (VIS): Record that the VIS was given to the patient, plus its edition date and the date of administration
- Vaccine product code billed: Confirm the product code on the claim matches the vaccine actually given
A periodic medical chart audit on a sample of vaccine encounters catches missing lot numbers and VIS dates while you can still correct them.
Common billing errors and how to avoid them
Most G0009 denials come down to payer routing, the companion product code, the vaccine schedule, and the diagnosis code. Each one is a charge-entry problem rather than a clinical one. Practices that build payer-routing rules into their billing workflows catch them before a claim leaves the office.
Edits from the National Correct Coding Initiative (NCCI) rarely appear on vaccine billing checklists. They are worth a look when a clean-looking claim comes back denied. The NCCI procedure-to-procedure file stops two codes being paid together on the same day.
CMS also publishes medically unlikely edits, which cap the units allowed on a line. A G0009 line billed with more than one unit runs into that cap.
Run a short check before you submit. Confirm Medicare is primary, the product code matches the vaccine given, and the date of service matches the administration log. Where PPSV23 follows PCV15, confirm the 12-month interval has passed.
How Pabau keeps pneumococcal vaccine claims clean
In most practices, coding mistakes surface once the remittance arrives. The vaccine was given weeks ago, the biller is reconstructing the visit from a note, and the correction has to compete with this week’s claims.
Practice management software like Pabau moves that work forward to the point of care. The vaccine, its lot number, and the administering provider are recorded against the patient file as the injection happens. Pabau’s claims management then pairs the administration code with the product code at charge entry. A G0009 line never leaves the office on its own.
Immunization history sits in the same record. Staff can see the last pneumococcal dose and which conjugate was used before booking the next one. That is what keeps a PPSV23 claim out of the 12-month window. Vaccine management in Pabau handles the recall side too, flagging patients whose series is not finished.
Every subscription includes the whole platform, so the records, the billing, and the recall messaging are not split across tiers. Your front desk and your biller work from the same immunization history.
Stop losing revenue to preventable claim denials
Pabau routes vaccine administration codes by payer and pairs companion codes at charge entry. Your team catches billing errors before the claim is submitted.
Conclusion
G0009 is a simple code with a narrow set of ways to get it wrong. Route by payer, pair the product code, and respect the interval. Do those three things and the claim pays.
The changes worth making sit upstream of billing. A charge-capture rule that reads payer type, plus an immunization history the front desk can see, removes most denials before anyone writes an appeal.
The one thing to keep checking is the schedule itself. ACIP guidance moves, and a rule that held two years ago can turn a clean claim into a denial. Book a demo to see how Pabau pairs vaccine records with claims, so preventive visits get paid the first time.
Continue your research
Coding a drug rather than a vaccine? J1441 shows how unit calculation and documentation work when the supply and the service are billed separately.
Administering medication by mouth instead of by injection? H0033 sets out the coding and documentation rules for oral medication administration.
Want to catch claim errors before the clearinghouse does? Practice management software features explains the billing tools that flag problems at charge entry.
Billing a patient directly for part of a visit? What is a superbill walks through the line items a patient needs for reimbursement.
Need HIPAA-compliant documentation across the practice? HIPAA compliance for medical offices covers the security requirements for billing and clinical records.
Frequently asked questions
What is HCPCS Code G0009 used for?
HCPCS Code G0009 bills the act of administering a pneumococcal vaccine to a Medicare Part B beneficiary. It is an HCPCS Level II G-code. It must be submitted alongside a companion vaccine product code on the same claim, such as 90677 for PCV20 or 90732 for PPSV23.
What is the difference between G0009 and CPT 90471?
G0009 is used only on Medicare Part B claims, while CPT 90471 is used for commercial insurance and most Medicaid payers. Submitting 90471 on a Medicare pneumococcal vaccine claim results in a denial. G0009 also carries no patient cost-sharing when a participating provider bills it, unlike 90471.
What is the Medicare reimbursement rate for G0009?
CMS publishes the national allowable amount for G0009 each year in the Medicare Physician Fee Schedule. The rate takes effect on January 1 and may vary by locality, depending on your Medicare Administrative Contractor. Check the current figure with the CMS fee schedule lookup tool, because the amounts change year to year.
What modifiers are used with G0009?
G0009 does not normally take a modifier of its own. Where a separately identifiable E/M visit happens on the same day as the vaccine, modifier 25 goes on the E/M code, not on G0009. Modifier PT is sometimes quoted here in error, because it applies to colorectal cancer screening tests converted to diagnostic procedures.
Is PPSV23 covered after a PCV20 dose?
No. A single dose of PCV20 or PCV21 completes the adult pneumococcal series on its own, so a follow-up PPSV23 dose is not indicated. PPSV23 belongs in the series only where PCV15 was used, and it should be given at least one year after that dose.
What diagnosis codes should be billed with G0009?
ICD-10-CM code Z23 is the primary diagnosis code for pneumococcal vaccine administration claims billed with G0009. Secondary codes reflecting underlying risk factors can be added where the documentation supports them. Z23 on its own generally satisfies Medicare medical necessity requirements for covered pneumococcal vaccines.
Can G0009 be billed with a pneumococcal vaccine product code on the same claim?
Yes. G0009 has to be billed with a companion vaccine product code on the same claim. Billing G0009 without a product code will result in a denial. Together the two codes represent the complete billable encounter, with G0009 for the administration act and the product code for the vaccine supply.
What pneumococcal vaccines are covered when using G0009?
Medicare Part B covers administration of PCV15, PCV20, and PPSV23 with G0009, billed under product codes 90671, 90677, and 90732. PCV13 has historically been covered, so verify its current status against the CMS vaccine code list before billing. CMS updates that list as new formulations are approved.