Pabau Engage inbox

Pabau Engage is here: every patient conversation in one inbox.

Learn more
HCPCS Level II Code

HCPCS code S0039 – Injection, sulfamethoxazole and trimethoprim


Code Definition

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
Save time. Improve accuracy. Get paid faster.
Automate coding with Pabau

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
Why practices choose Pabau
Save hours every week

Automate repetitive tasks and focus on what matters most—your patients.

Improve accuracy

Reduce coding errors and ensure compliance with the latest regulations.

Get paid faster

Clean claims, fewer denials, and faster reimbursements.

Grow with confidence

Powerful insights and reporting to help your practice thrive.

HIPAA compliant SOC 2 certified GDPR-compliant Trusted by 4,000+ clinics worldwide

Key takeaways

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.

FieldDetail
CodeS0039
Long descriptorInjection, sulfamethoxazole and trimethoprim, 10 ml
Short descriptorInjection, sulfamethoxazole
Code typeHCPCS Level II, S-series (temporary national code, non-Medicare)
Unit of service10 ml of injection concentrate (800 mg sulfamethoxazole and 160 mg trimethoprim)
Date addedJanuary 1, 2000
StatusDiscontinued, termination date March 31, 2025
Replacement codeJ2865, injection, sulfamethoxazole 5 mg and trimethoprim 1 mg, added April 1, 2025
Medicare coverage codeI, not payable by Medicare

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.

Date of serviceMedicareMedicaid and commercial plans
Through March 31, 2025Not S0039. Medicare claims usually went out as J3490, unclassified drugs, with the drug name, dose and NDC.S0039, where the plan accepted S-codes. Otherwise J3490.
April 1, 2025 onwardJ2865, per 1 mg of trimethoprimJ2865. S0039 is rejected as a deleted code.

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.

Volume givenTrimethoprim contentJ2865 unitsS0039 units (before April 2025)
5 ml80 mg80Half a unit, so the payer’s rounding rule applied
10 ml160 mg1601
15 ml240 mg240One and a half units, so the payer’s rounding rule applied
20 ml320 mg3202
60 ml (label maximum per day)960 mg9606

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.

  1. Convert the NDC to the 11-digit, 5-4-2 format. Teva’s 0703-9514-93 becomes 00703-9514-93.
  2. On the CMS-1500, enter J2865 in box 24D and 160 units in box 24G.
  3. In the shaded part of box 24A, enter the N4 qualifier, then the NDC.
  4. Follow the NDC with the unit qualifier ML and the volume given, so ML10 for this full vial.
  5. On an 837P, the same data goes in loop 2410, with the NDC in LIN03 and the quantity in CTP.
Worked example of one CMS-1500 line for a 10 ml SMX-TMP dose
One 10 ml vial shows up twice on the line, as ML10 and as 160 units. Figures come from the J2865 descriptor and the FDA label.

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.

PayerS0039J2865
Traditional MedicareNever payable (coverage code I)Valid from April 1, 2025. Coverage code D means special coverage instructions apply.
Medicare AdvantagePlan-specific before April 2025Valid from April 1, 2025. Check the plan’s drug and prior authorization rules.
MedicaidState-specific before April 2025Valid from April 1, 2025. Each state sets its own fee and NDC rules.
Commercial plansAccepted by many plans before April 2025Valid from April 1, 2025. Payment follows the provider contract.

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.

ICD-10-CM codeDescriptionWhen it fits
B59PneumocystosisPneumocystis jirovecii pneumonia treated with IV SMX-TMP
B20Human immunodeficiency virus [HIV] diseaseSequenced first when the pneumonia is HIV-related, with B59 after it
A03.1Shigellosis due to Shigella flexneriEnteritis from a susceptible S. flexneri strain
A03.3Shigellosis due to Shigella sonneiEnteritis from a susceptible S. sonnei strain
N10Acute pyelonephritisSevere upper urinary tract infection when oral therapy is not feasible
N39.0Urinary tract infection, site not specifiedComplicated UTI where the site is not documented

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.

ProblemWhat the payer seesFix
S0039 billed for a date after March 31, 2025A deleted code, often returned with CARC 181 (procedure code invalid on the date of service)Rebill with J2865 and trimethoprim-based units
S0039 sent to MedicareAn S-code Medicare does not payBefore April 2025, rebill as J3490 with the drug details. From April 2025, use J2865.
S0039 units copied onto J2865One unit of J2865 for a full vial, so 1 mg instead of 160 mgRecount units as milligrams of trimethoprim
NDC quantity and HCPCS units disagreeA mismatch on NDC-level editsMatch the ML quantity to the units billed
S0040 on a recent claimA code for a drug with no US supply since 2015Check the administration record and bill the drug that was given

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.

Pabau claims tracking screen showing claim status from submission to payment
Pabau’s claims tracking follows each claim from submission to payment. A rejected S0039 line surfaces there, so your team can rebill it as J2865 quickly.

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.

Pabau claims management dashboard

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

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.

Avatar photo
Monika Lazarevska
Content Writer

Monika Lazarevska writes content for owners and healthcare professionals who want clear, no-fluff content that actually helps them run their practice better. With a background in storytelling and SEO, she knows how to make even the driest topics worth reading. Off the clock, you'll find her in a café somewhere in Europe, probably with a good book and an even better coffee.
×