HCPCS code J1071 – Testosterone cypionate injection
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
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 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.
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.
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.
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.

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

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

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



