A pediatric practice we audited gave about 400 vaccines a month. Its inventory log, the one the nurses kept for the state vaccine program, agreed with that number. Its claims showed 400 vaccine product codes and 310 administration codes. Ninety administrations a month had never been billed, mostly second and third components on multi-vaccine visits, because the template captured 90460 for the first component and nobody added 90461 for the rest. At the practice's commercial rates that was about $2,200 a month, going back as far as anyone could remember.

Missed charges in office procedures are the quietest form of revenue leakage because nothing denies. The claim goes out, the visit pays, and the thing that was never billed leaves no trace in the denial report. You find it only by comparing what happened in the room with what went on the claim, and most practices never do that comparison.

A glossary line for physicians: a J code is a HCPCS Level II code for a drug administered in the office, billed in defined units (J1100 dexamethasone, for example, is billed per 1 mg). The administration of the drug is a separate CPT code (96372 for a therapeutic intramuscular or subcutaneous injection). Both are billable, and each is missed for different reasons.

Key takeaways

  • Missed charges do not generate denials, so they are invisible in standard billing reports; you find them by reconciling clinical logs and inventory against claims.
  • The usual suspects are vaccine administration components, injection administration without the drug or the drug without administration, J code units, point-of-care tests and in-office procedures done during "visit only" encounters.
  • Medicare Part B requires the JZ modifier (no drug wasted) or JW (wasted amount) on single-dose container drugs, and missing them is a denial rather than a missed charge, but the fix is the same template.
  • A two-hour quarterly audit comparing three logs to claims catches most of it.
  • The durable fix is in the EHR: orders that create charges, and a daily unbilled procedure report.

Where the charges hide

ServiceCodes involvedHow it gets missed
Vaccine administration, patient under 19 with counseling90460 first component, 90461 each additional component (per vaccine); product code per vaccineMulti-component vaccines (MMR, DTaP) billed with one 90460 and no 90461s; second vaccine at the visit billed with product only
Vaccine administration, 19 and over or no counseling90471 first vaccine, 90472 each additional; Medicare uses G0008 (flu), G0009 (pneumococcal), G0010 (hepatitis B) for administrationAdministration omitted when the vaccine is given by a nurse after the physician has finished the note
Therapeutic injection96372 plus the J code with correct units; modifier 25 on the E/M when a separate visit is billedDrug billed without 96372, or 96372 without the drug; units entered as "1" regardless of dose
Joint or bursa injection20610 (large joint), 20605 (intermediate), 20600 (small), with the J code (J3301 triamcinolone per 10 mg, J1030 methylprednisolone 40 mg)Injection captured in the note, not on the charge; steroid units wrong; bilateral injections billed as one
Nebulizer treatment94640 plus J7613 (albuterol, per 1 mg)Treatment given by a medical assistant during a sick visit and never charged
Point-of-care tests87880 (strep), 87804 (influenza), 87426 (SARS-CoV-2 antigen), 81002 (urinalysis dip, non-automated), 82962 (glucose), 36415 (venipuncture)Result documented in the note, no charge entered; 36415 dropped because "Medicare pays almost nothing"
Minor procedures during a visit69210 (cerumen removal with instrumentation), 17110 (wart destruction), 10060 (incision and drainage), 12001 (simple repair), 11730 (nail avulsion)Physician documents the procedure in the exam section and bills only the E/M
Screening and counseling services96127 (brief behavioral assessment, such as a PHQ-9), 99406 (tobacco cessation counseling 3 to 10 minutes), 96160 (health risk assessment), 99497 (advance care planning)Done by staff or during the visit and treated as "part of the visit"
Drug wastageJW modifier for the wasted amount; JZ when nothing is wasted (required for Medicare Part B single-dose containers)Wasted portion never billed; JZ missing causes denials

Why it happens

Three reasons, in our experience. The first is workflow: the charge is created from the physician's note, and the service was performed by someone else after the note was closed. The nurse gives the second vaccine, the medical assistant runs the strep test, and the charge slip is already gone. The second is templates: the EHR captures the first instance of something and not the rest, as with 90460 and 90461, or defaults drug units to 1. The third is belief: someone decided years ago that 36415 or 81002 was not worth billing, and the belief outlived the fee schedule that prompted it.

The fix for the first is to make orders create charges, so the nurse's documentation of the vaccine generates the administration code. The fix for the second is a template review by someone who knows the codes. The fix for the third is arithmetic: 36415 at a few dollars times 30 draws a day is still real money over a year, and many commercial payers pay more than Medicare for it.

The two-hour audit

We run this quarterly for the practices we manage, and it takes about two hours for a single-specialty office once the reports are set up.

  1. Pick a two-week window at least 60 days old, so claims have adjudicated.
  2. Pull three clinical logs for the window: the vaccine inventory or administration log, the injection or medication administration record, and the point-of-care test log (most in-office analyzers and the lab's CLIA records produce one).
  3. Pull claims for the same dates of service, filtered to the codes in the table above.
  4. Count and compare. Vaccines given versus product codes billed versus administration codes billed. Injections recorded versus 96372 and J codes billed, with units. Tests logged versus test codes billed.
  5. Read 20 notes from the window for sick visits with procedures documented in the exam or plan, and check the claim for each.
  6. Price the gap. Multiply each missing code by your average allowed amount, then annualize.

A worked example from a three-provider family practice: in a two-week window, 61 vaccines logged, 61 product codes billed, 44 administration codes billed (17 missed, about $22 each: $374). Forty-two injections recorded, 42 J codes billed, 31 with 96372 (11 missed at about $14: $154), and 9 J codes billed at 1 unit where the record showed 2 or more (about $60 total). Thirty-eight rapid strep tests logged, 29 billed (9 missed at about $17: $153). Two cerumen removals documented and not billed (about $45 each: $90). Roughly $830 in two weeks, or about $21,500 a year, from a practice that considered its charge capture fine. If you would rather have someone run this comparison with fresh eyes, it is a standard component of our RCM audit and revenue leakage review.

Making the fix stick

Recovering the past is limited by timely filing, usually to the last 90 to 365 days depending on the payer, and corrected claims for missed lines are worth filing within that window. The bigger value is in the future. Three changes hold up over time. Orders generate charges in the EHR for vaccines, injections and tests, so the person who performs the service does not need to remember a code. A daily unbilled procedure report lists encounters where an order or an administration record exists without a matching charge, and a named person clears it. And drug units are entered from the dose, with the J code descriptor visible on the order screen, so a 40 mg triamcinolone injection becomes 4 units of J3301, not 1.

Modifier JZ deserves a line of its own. Since July 1, 2023, Medicare Part B has required JZ on claims for single-dose container drugs when no amount was discarded, and JW with the discarded units when some was. Missing JZ produces denials rather than missed charges, but it lives in the same template and gets fixed in the same review.

Questions we hear

Isn't billing 36415 and 81002 nickel-and-diming patients?

These are covered services with contracted rates, and for insured patients they are paid by the plan at the allowed amount. Not billing them does not reduce the patient's cost; it reduces the practice's revenue. Where a service is bundled by a specific payer, the remittance will say so, and that is a different question from choosing not to bill.

Can we bill 96372 when the injection is the only reason for the visit?

Yes. Bill 96372 and the drug, without an E/M. If a nurse gives the injection under a physician's order with the physician in the suite, it is billed under the physician as an incident-to service. What you cannot do is add a 99211 for the same encounter routinely; the administration code includes the nursing work.

How far back can we bill missed charges?

To the timely filing limit of each payer, counted from the date of service. Medicare allows a year. Many commercial plans allow 90 to 180 days. Beyond that, the charge is gone, which is why the audit runs quarterly rather than annually.

What to do this week

  1. Pull the vaccine administration log and claims for a two-week window 60 days old and compare product, administration and component counts.
  2. Do the same for injections (96372 and J codes with units) and point-of-care tests.
  3. Read 20 sick-visit notes from the window for procedures documented but not billed.
  4. File corrected claims for any missed lines still inside timely filing.
  5. Ask your EHR vendor to turn on order-to-charge for vaccines, injections and in-office tests, and to build a daily unbilled procedure report.
  6. Check that the JZ and JW modifiers are in the injection template for Medicare Part B single-dose drugs.