Pabau Engage inbox

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

Learn more
HCPCS Code

HCPCS code J1071 – Testosterone cypionate injection


Code Definition

J1071 is the HCPCS Level II code for injection, testosterone cypionate, 1 mg. Each billing unit equals 1 mg, so a 100 mg dose is 100 units and a 200 mg dose is 200 units. The code replaced J1070 and J1080 on 1 January 2015.

Use J1071 when your practice buys the drug and a clinician injects it. Most denials come from three errors. Teams bill with the old 100 mg unit logic, confuse cypionate with enanthate (J3121), or leave the NDC off Medicaid claims. Check those three before you submit.

Level
Level II
Category
J — Drugs administered other than oral method
Status
Active, effective 1 January 2015
Billable
No
Code also known as
Depo-Testosterone
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 J1071 bills testosterone cypionate injection at 1 mg per unit, so a 200 mg dose is 200 units.

J1071 replaced J1070 and J1080 on 1 January 2015, and J3000 is streptomycin, not testosterone.

Testosterone enanthate bills under J3121, and Azmiro, a branded testosterone cypionate, bills under J1072.

Medicaid requires the NDC, with the quantity in milliliters, while the HCPCS units stay in milligrams.

On Medicare claims, add JZ or JW only when the dose comes from a single-dose vial.

What HCPCS code J1071 means

HCPCS code J1071 is the Level II code for testosterone cypionate given by injection, billed at 1 mg per unit. You report it when your practice buys the drug and a clinician injects it. The CMS HCPCS system added the code on 1 January 2015.

Before then, practices billed this drug under J1070 (up to 100 mg) or J1080 (1 cc, 200 mg). CMS retired both codes and moved testosterone cypionate to a single 1 mg unit. As a result, the unit count on your claim now matches the milligrams in the chart.

FieldValue
CodeJ1071
Official descriptorInjection, testosterone cypionate, 1 mg
Code typeHCPCS Level II, J-series drug code
Billing unit1 mg = 1 unit
RouteIntramuscular (IM)
Effective date1 January 2015, replacing J1070 and J1080
Common brandDepo-Testosterone (Pfizer)
Related branded codeJ1072, injection, testosterone cypionate (Azmiro), 1 mg

Where J1071 stops

J1071 covers one drug, given by a clinician. The products below each have their own code, or they sit outside a drug claim entirely. Matching the vial to its entry in the HCPCS Level II library is the first check on any injectable claim.

  • Covered: Testosterone cypionate injected by a clinician in your practice, at any dose, billed per milligram.
  • Testosterone enanthate: Bill J3121 (injection, testosterone enanthate, 1 mg). The older J3120 and J3130 were deleted on 31 December 2014.
  • Testosterone undecanoate (Aveed): Bill J3145, which also counts 1 mg per unit.
  • Azmiro: This branded testosterone cypionate has its own code, J1072, so it doesn’t go under J1071.
  • Testosterone pellets: Bill the drug with S0189 (testosterone pellet, 75 mg) and the insertion with CPT 11980.
  • Gels, patches and home injections: Patients use these themselves, so they run through the pharmacy benefit instead of a J-code claim.

J1071 vs J3121: Match the ester

Cypionate and enanthate are different testosterone esters, and CMS codes them separately. Both now bill at 1 mg per unit, so the unit math is identical. Only the drug name tells you which code to use.

FactorJ1071J3121
DrugTestosterone cypionateTestosterone enanthate
DescriptorInjection, testosterone cypionate, 1 mgInjection, testosterone enanthate, 1 mg
Billing unit1 mg1 mg
Codes it replacedJ1070 and J1080J3120 and J3130
Example productDepo-TestosteroneGeneric testosterone enanthate
Bill it whenThe vial label says cypionateThe vial label says enanthate

Check the vial label or the purchase invoice first, then the administration note. If the two disagree, fix the record before the claim goes out. And never bill a code just because it is the default charge in your system.

How to count J1071 units

Count one unit for every milligram injected. A 100 mg dose is 100 units, and a 200 mg dose is 200 units. Because doses come in whole milligrams, there is no rounding.

Dose administeredCalculationUnits to bill
50 mg50 mg ÷ 1 mg50
100 mg100 mg ÷ 1 mg100
150 mg150 mg ÷ 1 mg150
200 mg200 mg ÷ 1 mg200

The classic error is billing 1 or 2 units, which follows the retired 100 mg codes. That claim pays for 2 mg instead of 200. Also make sure the units match the milligrams in the note, because auditors compare the two.

NDC rules for J1071 claims

Under the Deficit Reduction Act of 2005, state Medicaid programs must collect NDCs on physician-administered drugs, and most states require them on all such claims.

Many Medicare Advantage and commercial plans ask for them too. Original Medicare doesn’t generally require an NDC on a professional claim, yet strong medical billing compliance captures it every time.

Watch the units, because the NDC quantity uses a different measure. HCPCS units count milligrams, while the NDC quantity usually counts milliliters. So a 200 mg dose from a 200 mg/mL vial is 200 HCPCS units and ML1 on the NDC line.

  • CMS-1500: In the shaded part of Box 24A, enter N4, the 11-digit NDC, the unit qualifier and the quantity.
  • 837P: Report the NDC in Loop 2410, segment LIN, and the quantity in segment CTP.
  • 11-digit format: Pad the label NDC to the 5-4-2 format, adding a leading zero where needed.
  • Source: Take the NDC from the vial you used, since each package size carries its own NDC.

JW and JZ: Single-dose vials only

Medicare’s JW and JZ modifiers apply only to drugs from single-dose containers. Testosterone cypionate comes in both single-dose and multiple-dose vials, so check which one you opened.

  • Single-dose vial, no waste: Add JZ to the J1071 line. Medicare has required it since July 2023.
  • Single-dose vial, some discarded: Bill the dose on one line and the discarded amount on a second J1071 line with JW.
  • Multiple-dose vial: Use neither modifier, and never bill the leftover drug as waste.
  • Medicaid and commercial plans: Rules vary, so check the payer manual before you add either modifier.

Here is an example. You give 100 mg from a 1 mL single-dose vial of 200 mg/mL. Bill J1071 × 100 units, then J1071-JW × 100 units. The note should show the vial size, lot number, dose given and amount discarded. The diagram below maps each vial type to its modifier.

Decision diagram for Medicare J1071 modifiers
The vial type, not the dose, decides whether a J1071 line takes JZ, a JW waste line or no modifier. Rules summarized from Medicare JW/JZ policy.

Pair J1071 with CPT 96372

J1071 pays for the drug, while CPT 96372 pays for giving it. 96372 covers a therapeutic, prophylactic or diagnostic injection, given subcutaneously or intramuscularly. In the office, bill both lines on the same claim.

CodeWhat it coversUnits
J1071Testosterone cypionate, the drug itselfOne per milligram
CPT 96372The intramuscular injection serviceOne per injection

Two pairings cause most trouble. First, Medicare does not allow 99211 alongside 96372, so a nurse-only visit is never billed with the injection. Second, a separate E/M visit on the same day needs modifier 25 and its own documented work.

Setting matters too. In a hospital outpatient department, the hospital usually buys the drug and bills it on the facility claim. Your practice then bills neither J1071 nor 96372 for that visit.

ICD-10 codes that support J1071

Every J1071 claim needs a diagnosis that shows why testosterone is medically necessary. Most payers want documented hypogonadism, backed by low morning testosterone results. The lab test behind those results bills separately under CPT 84403.

ICD-10-CM codeDescriptionWhen to use it
E29.1Testicular hypofunctionThe usual primary code for male hypogonadism
E23.0HypopituitarismSecondary hypogonadism caused by pituitary failure
E89.5Postprocedural testicular hypofunctionDeficiency caused by surgery or radiation
Z79.890Hormone replacement therapyA secondary code for ongoing therapy. Hormonal contraceptive use is Z79.3 instead.

Coverage lists differ by payer, so check the plan’s testosterone policy before you rely on a code. A diagnosis one plan accepts may fail at another.

Pro Tip

Record the total testosterone level, the reference range and the collection time before the first claim. Many plans want two low morning results before they approve therapy.

Medicare payment for J1071

Original Medicare pays J1071 under Part B at average sales price (ASP) plus 6%. CMS updates the ASP pricing files every quarter, so use the file for the date of service. The per-unit rate looks tiny because the unit is 1 mg, so multiply before you judge a payment.

Part B covers J1071 only when a clinician gives the injection during the visit. Each Medicare contractor also keeps a self-administered drug exclusion list. If your contractor lists testosterone cypionate, Part B won’t pay for it, even in the office.

  • Rate source: The CMS quarterly ASP pricing file for the date of service.
  • Medicare Advantage and commercial plans: Their own fee schedules, as set in your contract.
  • Home injections: The pharmacy benefit (Part D), never a J1071 claim.

Prior authorization for J1071

Original Medicare has no national prior authorization program for J1071. Medicare Advantage and commercial plans often require one, and Medicaid rules vary by state. Check the plan’s rules before the first injection, not after the denial.

A typical request includes the following:

  • A hypogonadism diagnosis, such as E29.1, tied to a clinical assessment
  • Morning total testosterone results below the plan’s threshold, often 300 ng/dL
  • Notes on symptoms, such as low libido, fatigue or loss of muscle mass
  • The drug, dose, frequency and expected length of treatment
  • Any step-therapy history the plan asks for

Before you submit: Your J1071 checklist

Run this list on every testosterone injection claim. Each line matches a common denial reason. Keeping the order and the dose on one record makes the check faster.

Pabau prescription screen for prescribing controlled drugs
In Pabau’s practice software, the prescription screen records the drug, dose and route on the patient file, so your J1071 units match the order.
  • The code matches the vial: J1071 for cypionate, J3121 for enanthate, J1072 for Azmiro.
  • The units equal the milligrams given, with no rounding.
  • The NDC carries N4, 11 digits and an ML quantity where the payer asks for it.
  • A single-dose vial has JZ or a JW line, and a multiple-dose vial has neither.
  • The diagnosis code is backed by documented lab results.
  • The prior authorization number is on the claim where the plan requires one.
  • The note shows the order, dose, route, site, lot number and signing clinician.
  • The place of service matches where the injection happened, such as 11 for the office.

A complete superbill captures most of these fields before the claim is batched. That way, the billing team never has to guess.

Common J1071 denials and how to fix them

J1071 denials follow a short, predictable list. Good denial management tracks which one hits most often. Then you fix that step in the workflow, instead of correcting each claim by hand.

Denial reasonRoot causeFix
Wrong codeJ3000, which is streptomycin, or a retired code such as J1070 was billedRebill as J1071 with units in milligrams
Wrong esterJ3121 billed for a cypionate injection, or the reverseMatch the code to the vial label and invoice, then resubmit
Units too low2 units billed for a 200 mg doseCorrect the line to 200 units and resubmit
Missing or invalid NDCNDC left off, or the quantity entered in milligramsAdd N4, the 11-digit NDC and the ML quantity
Missing JZ or JWSingle-dose vial billed without a modifierAdd JZ, or move the waste onto a JW line
Unsupported diagnosisICD-10 code not on the payer’s covered listRecode if the record supports it, then appeal with lab results
No prior authorizationThe plan required approval before the first doseRequest retro approval where allowed, then add a pre-visit check
Bundled visit99211 billed with 96372Remove 99211. Bill a separate E/M with modifier 25 only for documented extra work.

How Pabau keeps testosterone claims clean

Testosterone billing usually breaks at the handoff between the treatment room and the billing desk. The dose, vial and lot sit in one place, while the claim gets keyed somewhere else. Each retyped field is a chance for a 2-unit error.

Pabau, the practice management platform we build for medical and aesthetic practices, keeps both halves on one patient record. Its error-checking claims software pre-fills the CMS-1500 from the patient’s invoice. It also flags missing or invalid details, such as authorization codes, before you send.

In the US, claims go out through Claim.MD, with eligibility checks before the visit, claim-status tracking and settlement from ERA files. So your team spends less time chasing testosterone claims and more time with patients.

Send cleaner testosterone injection claims

Pabau pre-fills claims from the patient’s invoice and flags missing details before you send. See how it fits your testosterone therapy workflow.

Pabau claims management dashboard

Conclusion

J1071 rewards precision more than effort. Get the code, the milligram units and the vial type right, and most testosterone claims pay on the first pass. Get one wrong, and the error repeats on every injection until someone audits it.

So start with last month’s testosterone claims and run them against the checklist above. Fix the default charge in your billing system first, since one wrong setting spreads to every claim. Book a demo to see how Pabau turns the injection record into a clean J1071 claim.

Continue your research

Continue your research

Billing injectable drugs across multiple practice locations? What is revenue cycle management covers how end-to-end RCM strategy reduces drug-code denials at scale.

Need a reference for your full claims process? Clean claim checklist walks through every element a payer needs to process a claim without a request for additional information.

Filling in NDC details by hand? CMS-1500 form guide walks through each box, including the shaded drug lines in Box 24.

Waiting on a testosterone approval? The prior authorization process sets out a step-by-step workflow for getting payer approval before the first dose.

Frequently asked questions

Is testosterone cypionate a controlled substance?

Yes. Testosterone is a Schedule III controlled substance under federal law. Your practice needs a DEA registration to order and store it. Keep a dispensing log that matches the lot numbers in your J1071 notes.

How do I bill compounded testosterone cypionate?

Payers often want compounded drugs billed under J7999, compounded drug, not otherwise classified, rather than J1071. They may also ask for the invoice or NDC details. Check the payer policy before you bill a compounded vial.

Can I bill an office visit on the same day as J1071?

Yes, if the visit covers a separate problem or decision. Add modifier 25 to the E/M code and document that work apart from the injection. Never pair 99211 with 96372, because Medicare bundles the nurse visit into the injection.

Does J1071 cover Xyosted or Aveed?

No. Xyosted is a testosterone enanthate autoinjector that patients use at home, so it runs through the pharmacy benefit. Aveed is testosterone undecanoate, and it bills under J3145 when a clinician gives it.

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.
×