HCPCS code S0039 – Injection, sulfamethoxazole and trimethoprim
HCPCS code S0039 is the Level II code for an injection of sulfamethoxazole and trimethoprim, 10 ml. It's the IV form of the antibiotic co-trimoxazole, usually written as SMX-TMP. CMS discontinued the code on March 31, 2025, so any dose given from April 1, 2025 is billed as J2865.
That switch changes more than the code. J2865 counts milligrams of trimethoprim, so a 10 ml vial is 160 units, not one. Keep the old unit count and the claim can be paid for just 1 mg. Below, you'll see which code fits each date, how to turn a dose into units, and how to match the NDC.
- Level
- Level II
- Category
- S — Temporary national codes (non-Medicare)
- Status
- Discontinued, effective March 31, 2025
- Billable
- No
- Code also known as
- co-trimoxazole injection, SMX-TMP injection, TMP-SMX injection
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
HCPCS code S0039 is injection, sulfamethoxazole and trimethoprim, 10 ml. One unit covers 10 ml of the IV concentrate, which holds 800 mg sulfamethoxazole and 160 mg trimethoprim.
CMS discontinued S0039 on March 31, 2025. For dates of service from April 1, 2025, bill the same drug with J2865.
J2865 is billed per 1 mg of trimethoprim, so one 10 ml vial equals 160 units of J2865.
S0039 was never payable by Medicare. J2865 is a permanent J-code, so Medicare and every other payer can process it.
S0040 covers ticarcillin and clavulanate, 3.1 grams. The code is still listed, but the drug has had no US supply since 2015.
HCPCS code S0039 was retired on March 31, 2025
HCPCS code S0039 covers an injection of sulfamethoxazole and trimethoprim, billed per 10 ml. That’s the IV form of co-trimoxazole, usually shortened to SMX-TMP or called by the old brand name Bactrim.
The code sat in the S-series of HCPCS Level II. These are temporary national codes built for private payers, so Medicare never paid them.
S0039 no longer works on new claims. The CMS HCPCS quarterly update for April 2025 lists it with action code D, discontinued. Its termination date is March 31, 2025.
That termination date is the one to remember, because not every code lookup tool reports it correctly.
Lookup sites that list S0039 as active are misreading one date
Search for S0039 and a few free lookup sites show it as active, effective April 1, 2025. That’s the date CMS actioned the deletion. Those sites read it as a start date instead.
The October 2026 CMS file still carries an S0039 row, too, with the same termination date. CMS keeps retired codes on file for a while, so a listed code isn’t always a billable one. S0080 is another retired S-code, deleted on December 31, 2025. Check the termination date column before you trust any listing.
The date of service decides between S0039 and J2865
Look at the date of service first, then the payer. Through March 31, 2025, non-Medicare plans took SMX-TMP injection as S0039. From April 1, 2025, every payer gets J2865.
Corrected or late claims for dates before April 2025 can still carry S0039. Keep the original date of service on the claim, and confirm the plan still accepts S-codes for that period. Older Medicare lines billed as J3490 also need the drug name, dose and NDC in the claim’s notes field.
Picking the right code is only half the job. The unit count changed with it.
J2865 units equal the trimethoprim dose in milligrams
Count one J2865 unit for every milligram of trimethoprim given. A 160 mg dose is 160 units.
Both codes bill the same concentrate, which holds 80 mg sulfamethoxazole and 16 mg trimethoprim per ml. S0039 counted it in 10 ml blocks. J2865 counts the trimethoprim instead. The sulfamethoxazole side follows automatically, since the drug always comes in a 5 to 1 ratio.
Here’s how common volumes convert under each code.
Count units on the dose given, not on the diluted bag. The concentrate is always mixed with 5% dextrose before infusion, and the diluent never adds units.
Pro Tip
Update the service in your billing system, not just the next claim. If S0039 still sits against the SMX-TMP charge, every claim after April 1, 2025 goes out with a deleted code. Swap it for J2865 and change the unit count to trimethoprim milligrams at the same time.
The SMX-TMP label sets five rules your chart must meet
Five rules in the FDA label for sulfamethoxazole and trimethoprim injection show up directly in the chart. Any one of them can decide whether the claim holds up on review.
- Route: The label allows IV infusion only, over 60 to 90 minutes. It says never to give the drug by rapid infusion, bolus, or intramuscular injection.
- Dilution: Each 5 ml of concentrate is added to 125 ml of 5% dextrose in water before use.
- Vial sizes: The concentrate comes in 5 ml single-dose vials and 10 ml or 30 ml multiple-dose vials.
- Dosing basis: Doses are written by trimethoprim content per kilogram of body weight, which lines up with J2865 units.
- Indications: The label covers Pneumocystis jirovecii pneumonia, shigellosis, and severe or complicated urinary tract infections when oral therapy is not feasible.
Bill the infusion itself on its own line. In an office setting, that’s usually 96365 for the first hour. Add 96366 only when the infusion runs more than 30 minutes past that hour.
The NDC quantity has to match the J2865 units
Most Medicaid programs and many commercial plans want the National Drug Code, or NDC, next to the HCPCS code. The NDC names the exact product, while the HCPCS units tell the payer how much was given.
Take one worked example. A patient gets a 160 mg trimethoprim dose, drawn as 10 ml from Teva’s vial, NDC 0703-9514-93. Here’s how that dose reaches the claim.
- Convert the NDC to the 11-digit, 5-4-2 format. Teva’s 0703-9514-93 becomes 00703-9514-93.
- On the CMS-1500, enter J2865 in box 24D and 160 units in box 24G.
- In the shaded part of box 24A, enter the N4 qualifier, then the NDC.
- Follow the NDC with the unit qualifier ML and the volume given, so ML10 for this full vial.
- On an 837P, the same data goes in loop 2410, with the NDC in LIN03 and the quantity in CTP.

Those two quantities have to agree. A line showing 160 units of J2865 next to ML20 reads as a 320 mg dose billed at half. Payers that cross-check NDC and HCPCS units will deny that line.
Medicare adds one more wrinkle. Its JW and JZ wastage modifiers apply only to single-dose containers. So the 5 ml single-dose vial can need one, while the 10 ml and 30 ml multiple-dose vials never take either.
J2865 ends the Medicare split that S0039 created
With J2865, every payer bills this drug the same way. S-codes were built for private payers, and CMS never paid them. J2865 is a permanent national code, so Medicare now takes the same code as everyone else.
Neither code carries a national payment amount in the HCPCS file. Each payer pays from its own drug fee schedule, so confirm the rate with the plan. An insurance eligibility check before the infusion brings plan-level rules to light while you can still act on them.
S0040 sits next to S0039 but bills a drug that’s gone
S0040 is still a listed code, but its drug has been off the US market since 2015. Because it sits right after S0039, it’s easy to confuse the two. A few quick questions clear it up.
What does S0040 cover? It describes an injection of ticarcillin disodium and clavulanate potassium, 3.1 grams. That was the Timentin vial, holding 3 grams of ticarcillin and 0.1 gram of clavulanic acid.
Is it still valid? On paper, yes. The October 2026 CMS file lists S0040 with no termination date. It carries the same coverage code I, so Medicare does not pay it.
So why question it? GlaxoSmithKline stopped manufacturing Timentin for the US in February 2015, and said no further supply would be available. A recent S0040 claim therefore deserves a second look.
What do you bill instead? Check the medication administration record and bill the drug that was given. Piperacillin and tazobactam, for example, bills as J2543, per 1.125 grams.
Give S0021 the same second look. It covers injection of cefoperazone sodium, 1 gram, and that antibiotic is no longer marketed in the US either.
ICD-10 codes must point to a labeled SMX-TMP use
Pair the claim with a diagnosis that matches a labeled use, because payers check medical necessity against it. These ICD-10-CM codes line up with the label’s indications.
Code from the documented findings, never from the drug alone. B59 covers the pneumonia, while N39.0 fits a UTI only when the note doesn’t name the site. If the note names the organism, add the matching B95 to B96 code where the payer asks for it.
Run this checklist before an SMX-TMP claim goes out
A drug claim can pass front-end edits and still be taken back after an audit. Work through these checks before you submit, and the chart will back up every line.
- Order: A dated, signed order with the dose in milligrams of trimethoprim and the dosing interval.
- Weight: The weight used to calculate the dose, since the label doses per kilogram.
- Administration: The volume of concentrate drawn, the diluent, the start and stop times, and the IV route.
- Product: The NDC, lot number, and expiry date of the vial used.
- Reason for IV therapy: For a UTI, why oral therapy was not feasible, because the label limits IV use to that case.
- Code and date: J2865 for any date from April 1, 2025, and S0039 only for older non-Medicare dates.
- Units: J2865 units equal the trimethoprim milligrams, and the ML quantity matches the volume drawn.
Most SMX-TMP denials trace back to the code change
Most rejections on this drug come from the switch to J2865, not from the clinical care. Match the denial to its cause below, then rebill.
For the wider workflow, our guide to medical billing denial codes explains what each adjustment code on the remittance asks you to do.
Pabau stops a retired code from repeating on every claim
A deleted code usually survives in the service record someone set up years ago. Each new claim copies it, and nobody notices until the rejections come back.
In Pabau, the practice management and billing software we build, the HCPCS code lives on the service itself. Change S0039 to J2865 once, and every later CMS-1500 is pre-filled with the new code. The CPT and HCPCS lookup library is refreshed with official releases, so billers can confirm a code before they use it.
Pabau also checks that required fields, such as membership numbers and authorization codes, are filled in before a claim goes out.
For US practices, Pabau’s claims management software submits through Claim.MD, with eligibility checks and claim status tracking. Remittances post back to the patient record, so a rejected line shows up the day it lands.

Bill injectable drugs with the right code every time
Pabau pre-fills claims from the codes on your services, checks required fields before submission, and tracks every claim to payment.

Conclusion
S0039 is finished for new claims, but don’t delete it from your system just yet. Switch it off for new dates of service and keep it on file for corrected claims before April 1, 2025.
The bigger risk is quieter than a rejection. A J2865 line billed at one unit can still be paid, just for 1 mg instead of 160. Fix the code and the unit rule on the service record once, and every infusion after it bills at full value.
Want to see that fix carried through automatically? Book a demo and watch Pabau move the right drug code from the service onto every claim.
Continue your research
Want fewer front-end rejections on drug claims? What is a clean claim covers the fields and formats payers check before a claim is accepted.
Billing another S-series antibiotic? HCPCS code S0034 covers ofloxacin injection, its payer rules, and its Medicare fallback.
Need the unclassified drug code? HCPCS code J3490 explains when to use it and what the claim narrative needs.
Working a denial queue? Denial management in healthcare shows how to sort, track, and appeal rejected claims.
New to the claim cycle? What is medical billing walks through the steps from encounter to payment.
Frequently asked questions
What is the J-code for IV Bactrim?
J2865, for any date of service from April 1, 2025. IV Bactrim is sulfamethoxazole and trimethoprim injection, and the HCPCS code follows the drug, not the brand. The NDC on the line identifies the maker.
Can S0039 or J2865 be used for oral Bactrim tablets?
No. Both codes describe the injection only. Tablets a patient takes home are usually billed through the pharmacy benefit, using the NDC rather than a HCPCS drug code.
Who created S-codes like S0039?
The Blue Cross Blue Shield Association and the Health Insurance Association of America, now part of AHIP, created S-codes for private payers. CMS publishes them in the HCPCS file but doesn’t pay them. Some state Medicaid programs accept them too.
Where do I find the NDC for an SMX-TMP vial?
It’s printed on the vial label and on the carton. You can also search the FDA National Drug Code Directory by drug name. Bill the NDC of the vial you used, because the package code changes with vial size.
How long can I still send an S0039 claim?
Only while the payer’s timely filing limit still covers the original date of service, which must be before April 1, 2025. Each plan sets that limit in its contract. Once it passes, even a correctly coded S0039 claim is denied as late.



