HCPCS code S0020 – Bupivacaine injection, 30 ml (deleted)
S0020 is the deleted HCPCS Level II code for injection, bupivacaine hydrochloride, 30 ml. It was a temporary national S-code for private payers, never payable by Medicare, and CMS terminated it after June 30, 2023.
The code covered the drug supply only, one unit per 30 ml, and never the injection service. For dates of service from July 1, 2023, bill bupivacaine with J0665, per 0.5 mg, alongside the CPT code for the procedure.
- Code range
- S0000-S9999 Temporary national codes (non-Medicare)
- Category
- S0020 Injection, bupivacaine hydrochloride, 30 ml
- Status
- Deleted, effective June 30, 2023
- Billable
- No
- Code also known as
- Marcaine 30 ml
Let Pabau's smart automation suggest the right codes, reduce claim denials, and keep your practice compliant—effortlessly.
- AI-powered code suggestions
- Real-time compliance checks
- Faster claims, fewer denials
Automate repetitive tasks and focus on what matters most—your patients.
Reduce coding errors and ensure compliance with the latest regulations.
Clean claims, fewer denials, and faster reimbursements.
Powerful insights and reporting to help your practice thrive.
HIPAA compliant SOC 2 certified GDPR-compliant Trusted by 4,000+ clinics worldwide
Key takeaways
S0020 reported bupivacaine hydrochloride in 30 ml units, and it described the drug only, never the injection service.
CMS terminated S0020 after June 30, 2023, so a claim with a later date of service denies as an invalid code.
From July 1, 2023, bupivacaine is billed with J0665 at 0.5 mg per unit, plus the CPT code for the procedure.
A 30 ml vial of 0.5% bupivacaine holds 150 mg, which is 300 units of J0665.
Medicare never paid S0020, so legacy S0020 claims only ever mattered to payers that listed the code.
HCPCS code S0020: definition and code status
HCPCS code S0020 is the deleted Level II code for injection, bupivacaine hydrochloride, 30 ml. It reported the supply of the local anesthetic bupivacaine, sold under brand names such as Marcaine and Sensorcaine, in 30 ml units.
CMS terminated the code after June 30, 2023. It is not valid for any date of service from July 1, 2023 onward, with any payer.
S0020 sat in the S0000-S9999 range of temporary national codes. The Blue Cross Blue Shield Association and the Health Insurance Association of America created these codes for private payers. Medicare never recognized them for payment, and the CMS HCPCS file lists S0020 with coverage code I, not payable by Medicare.
The official descriptor spells the drug bupivicaine. That misspelling is long-standing in the CMS file, and the descriptor for J0665 repeats it.
What S0020 covered and what it did not
S0020 covered the drug, measured by volume. One unit meant 30 ml of bupivacaine hydrochloride, whatever the concentration in the vial.
The code never described giving the injection. The nerve block, joint injection or local infiltration was always reported separately with its own CPT code.
S0020 did not cover:
- The injection or procedure itself, which takes a CPT code
- Liposomal bupivacaine (Exparel), which had its own code, C9290, and now uses J0666
- Bupivacaine combined with meloxicam, which now uses J0668
- Any claim with a date of service after June 30, 2023
Is S0020 still valid? The July 2023 deletion
No. The CMS HCPCS file gives S0020 a termination date of June 30, 2023. The July 2023 quarterly update deleted it and added J0665, a permanent J-code for bupivacaine, in the same release.
CMS does not publish J0665 as a formal crosswalk for S0020, but some payers made the switch explicit. Blue Cross Blue Shield of Michigan told providers to report S0020 through June 30, 2023, and J0665 from July 1, 2023.
Each payer sets its own date for recognizing new HCPCS codes. Confirm the cutover in your payer’s provider bulletin before you correct older claims.
What to bill instead of S0020
For dates of service from July 1, 2023, bill two lines. J0665 reports the bupivacaine, and a CPT code reports the procedure the anesthetic supported. Our J0665 billing guide covers that code in full.
Converting a 30 ml vial into J0665 units
J0665 is billed per 0.5 mg, so the unit count now depends on concentration. Multiply the milliliters given by the milligrams per milliliter, then divide by 0.5.
Bill the amount given rather than a flat vial. A 10 ml dose of 0.5% bupivacaine is 50 mg, which is 100 units of J0665. Set against the single unit S0020 counted per vial, the change in scale looks like this.

Pro Tip
S0020 billed one unit per 30 ml whatever the strength, so old charge templates often carry a quantity of 1. Carried over to J0665, that quantity bills 0.5 mg. Rebuild each bupivacaine template with the unit count for the strength you stock.
Reporting the procedure the bupivacaine supported
The CPT code comes from the procedure, not from the drug. Common examples include:
- 64450, injection of an anesthetic agent into another peripheral nerve or branch
- 20610, arthrocentesis, aspiration or injection of a major joint or bursa without ultrasound guidance
- 20552, injection of one or more trigger points in one or two muscles
Many payers treat a local anesthetic used during a procedure as part of that procedure’s payment. In that case the J0665 line denies as bundled, and the procedure code carries the payment.
NDC and waste modifiers
State Medicaid programs require an NDC on physician-administered drug claims, because they use it to collect drug rebates. Report it with the N4 qualifier in the shaded area of item 24A on the CMS-1500, or in loop 2410 of the 837P.
Medicare’s JW and JZ modifiers apply to separately payable Part B drugs from single-dose containers. JW reports the discarded amount, and JZ states that none was discarded. Neither applies when the drug is packaged into the procedure payment.
How payers treat legacy S0020 claims
Medicare never paid S0020, so a Medicare claim for it was always going to deny. Medicaid and commercial treatment varied by payer, and it is now mostly a timely filing question.
For a date of service on or before June 30, 2023, S0020 was only valid with payers that listed it. Most payers’ filing windows for 2023 services have now closed, so a late original claim usually denies for timely filing whatever code it carries.
Payer policies on S-codes change often, so verify current status with each payer. Check the provider manual or latest bulletin rather than an old fee schedule. A grounding in medical billing basics helps when those documents disagree.
Denials caused by billing a deleted code
A deleted code often fails at the front end, before the payer adjudicates the claim. The adjustment and remark codes below are the common ones, though payers pair them differently. Good denial management starts with reading those codes before you resubmit.
Correcting or appealing a denied claim
A code error is fixed with a corrected claim, not an appeal. Use frequency code 7 with the original claim number, in item 22 on the CMS-1500 or CLM05-3 on the 837P.
A claim rejected at the front end was never accepted, so resubmit it as a new claim. Getting the code right the first time is the core of clean claim submission.
Appeal only when the payer has misapplied its own policy, such as bundling a drug it lists as separately payable. File within the payer-specific timely filing limit, and attach the policy language you rely on.
Documentation that supports the bupivacaine line
The record behind a J0665 line should let a reviewer rebuild the unit count. Keep these items in the chart:
- The order, with drug, concentration, dose and route
- The volume given and any volume discarded, in both ml and mg
- The NDC, lot number and vial size
- The procedure note for the service the anesthetic supported
- The diagnosis that supports the procedure
Record doses in milligrams as well as milliliters. A note that says only 30 ml of bupivacaine forces the coder to look up the concentration elsewhere. Solid medical billing compliance depends on that detail being in the note itself.
How Pabau helps practices bill after a code deletion
A deleted code tends to live on in charge templates and old superbills long after payers stop accepting it. The reliable fix is a procedure note that records the drug in milligrams next to the procedure it supported.
Pabau, the practice management and EHR platform we build, keeps the treatment note, the dose and the diagnosis on one patient record. Its claims management lets you submit the claim through Claim.MD and track its status against the patient record.
If a payer rejects the claim, your biller can correct the code on that record and resubmit without rebuilding the claim from scratch.
Submit and track drug claims from one record
Pabau keeps the dose, procedure note and diagnosis on one patient record. Claims management then helps you submit each claim and track it through to payment.
Conclusion
S0020 belongs on no claim with a date of service after June 2023. Search your charge templates, superbills and fee schedules for it, and replace each entry with J0665 plus the right procedure code.
The harder change is the unit. S0020 counted 30 ml vials, while J0665 counts half-milligrams, so a note that records only milliliters will misstate the quantity. Getting clinicians to chart the concentration prevents the next round of denials.
Leave legacy S0020 claims alone unless the payer listed the code and its filing window is still open. Book a demo to see how Pabau keeps dose, procedure and claim on one record for cleaner drug billing.
Continue your research
Need a framework for handling claim rejections systematically? Denial codes in medical billing breaks down CARC and RARC codes with corrective actions for the most common rejection patterns.
Want to understand how drug claims flow through a clearinghouse? Medical claims clearinghouse guide explains the 837P transaction path and where drug claims most often fail in transit.
Want to see where a coding fix sits in the wider billing process? Revenue cycle management overview follows a claim from patient intake and charge capture through to payment and denial follow-up.
Frequently asked questions
What is HCPCS code S0020?
HCPCS code S0020 is a deleted Level II code for injection, bupivacaine hydrochloride, 30 ml. It reported the drug supply in 30 ml units, and CMS terminated it after June 30, 2023.
Is S0020 still a valid code?
No. CMS terminated S0020 with effect from June 30, 2023. A claim that uses it for a date of service from July 1, 2023 denies as an invalid code, usually with CARC 181.
What code do I bill instead of S0020 for bupivacaine?
Bill J0665, injection, bupivacaine, not otherwise specified, 0.5 mg, which CMS added on July 1, 2023. CMS does not publish it as a formal crosswalk for S0020, so confirm the cutover with each payer.
Did S0020 cover the injection service?
No. S0020 described the bupivacaine only. The injection or procedure was always billed with its own CPT code, such as 64450 for a peripheral nerve injection.
How many J0665 units is a 30 ml vial of bupivacaine?
It depends on the concentration, because J0665 is billed per 0.5 mg. A 30 ml vial is 150 units at 0.25%, 300 units at 0.5% and 450 units at 0.75%.
Did Medicare ever pay for S0020?
No. S-codes are temporary national codes for non-Medicare payers. The CMS HCPCS file lists S0020 with coverage code I, not payable by Medicare.
Can I still bill S0020 for a 2023 date of service?
Only for dates through June 30, 2023, and only to a payer that listed the code. Most payer-specific timely filing limits for 2023 services have now passed, so check the limit before you resubmit.