The ICD 10 low testosterone code is usually E29.1. That's testicular hypofunction, and it's the right code when the testes are the problem. But low testosterone has at least four other homes in ICD-10-CM depending on the cause, and picking the wrong one is how a testosterone claim gets denied. Below: the code for each cause, the Excludes1 traps, what payers ask for before covering TRT, and the HCPCS codes for the drug itself.
🔑 Key Takeaways
- Whether the problem sits in the testes or the pituitary decides the code, and one blood test usually settles it
- A single low lab result isn't a diagnosis yet, and the code you can use changes until it is
- Klinefelter syndrome and post-surgical low T each have their own code, and E29.1 is blocked with both
- One Medicare contractor won't pay for age-related low T at all, whatever code is on the claim
- The October 1, 2026 update changed a code that sits on gender-affirming testosterone claims
Every code below was checked against the official FY2027 ICD-10-CM tabular (effective October 1, 2026) and compared with FY2026. Coverage rules come from two Medicare and two commercial payer policies, opened November 5, 2026.
What Is the ICD-10 Code for Low Testosterone?
For most men it's E29.1, testicular hypofunction. The ICD-10-CM index sends "Hypogonadism, male" and "Hypogonadism, testicular (primary)" straight to E29.1, and the code's own inclusion terms list "testicular hypogonadism NOS" (FY2027 ICD-10-CM tabular and index).
The same index sends "Hypogonadism, hypogonadotropic" and "Hypogonadism, pituitary" to E23.0, hypopituitarism. So the first coding question isn't "is testosterone low?" It's "why?"
E29.1 is billable, and its description and code number are unchanged in FY2027. The only FY2027 edit was a spelling fix to one inclusion term, from "5-delta-reductase deficiency" to "5-alpha-reductase deficiency" (FY2027 tabular addenda).
Category E29 carries an Excludes1 note that matters here. It excludes androgen insensitivity syndrome (E34.5-), azoospermia or oligospermia NOS (N46.0-N46.1), isolated gonadotropin deficiency (E23.0) and Klinefelter's syndrome (Q98.0-Q98.1, Q98.4). E29.1 itself also excludes postprocedural testicular hypofunction (E89.5).
Under the official guidelines, Excludes1 means "NOT CODED HERE!": the two codes are never reported together for the same condition (FY2027 Official Guidelines, Section I.A.12).
ICD 10 Low Testosterone Codes: Quick Reference Table
These are the codes that show up on testosterone claims. Descriptions are copied from the FY2027 tabular, and the guidance columns follow its inclusion terms and notes.
ICD-10-CM has no code titled "low testosterone". The nearest general finding code is R79.89. R86.1, "abnormal level of hormones in specimens from male genital organs", turns up in searches, but category R86 covers specimens such as semen and prostatic secretions, not blood.
Primary, Secondary or Post-Procedural: Choosing the Hypogonadism ICD-10 Code
LH and FSH usually decide it. Both Medicare policies we read set out the same logic. Elevated LH or FSH confirms primary hypogonadism. If testosterone is low and LH or FSH is also low, the provider should look for pituitary disease, including a prolactin level, or a chronic illness (Palmetto GBA LCD L39086; Noridian LCD L36538).
- High LH or FSH (primary). The testes aren't responding. Code E29.1, unless the cause has its own code: Klinefelter syndrome (Q98.0, Q98.1 or Q98.4) or a procedure (E89.5).
- Low or normal LH and FSH (secondary). The signal from the brain is missing. Code E23.0, and add the cause where known, for example D35.2 for a benign pituitary tumor. If it followed pituitary surgery or radiation, code E89.3 instead.
- After a procedure on the testes. E89.5 replaces E29.1. Palmetto's covered list also includes Z90.79, acquired absence of other genital organs, and Q55.0, absence and aplasia of testis (Palmetto article A58828).

The cause also changes coverage. Palmetto covers testosterone only for hypogonadism "due to a disorder of the testicles, pituitary gland, or brain", delayed puberty and gender dysphoria, and lists idiopathic hypogonadism as not reasonable and necessary.
A Low Lab Result Without a Diagnosis Yet
One low number is not hypogonadism. The Endocrine Society's 2018 guideline, written by a 10-expert task force using two commissioned systematic reviews, recommends diagnosing hypogonadism only in men with symptoms and "unequivocally and consistently low" testosterone, confirmed by repeating a fasting morning total testosterone (Bhasin et al., 2018).
Until that diagnosis is documented, outpatient coding follows Section IV.H of the guidelines. Don't code diagnoses written as "probable", "suspected" or "rule out". Code to the highest degree of certainty instead, such as symptoms, signs or abnormal test results (FY2027 Official Guidelines, Section IV.H).
- Decreased libido: R68.82
- Erectile dysfunction with no documented cause: N52.9
- The abnormal lab value itself: R79.89
Watch the repeat test. Palmetto's billing article lists the total testosterone lab code (84403) among its covered services, and its covered diagnosis list contains no symptom codes or R-codes (A58828). If your claims go to Palmetto, check how they handle the confirming lab before you rely on a symptom code.
Accuracy is a real limitation. Noridian's policy notes that results vary between labs and assays, and that the low end of "normal" can be as low as 160 ng/dL depending on the method. Palmetto goes a step further and asks for both draws from the same lab. For what the numbers mean once you're treated, see our guide to testosterone levels on TRT.
What Payers Want Before They Cover Testosterone
Two morning results is the common thread. Every policy below asks for two low morning results on separate days before therapy starts. They split on naming a number, and on age-related low T.
The 300 ng/dL figure comes from the American Urological Association's 2018 guideline, which Cigna quotes: a total testosterone below 300 ng/dL is "a reasonable cut-off", and the diagnosis should follow two early-morning measurements on separate occasions (Cigna IP0351; Mulhall et al., 2018). Aetna and Palmetto don't set a number and defer to the lab's range.
Palmetto also asks for more than labs before the first prescription (L39086):
- A PSA test and a digital prostate exam within the 12 months before prescribing, with ongoing monitoring
- A hematocrit before starting and during treatment. A hematocrit above 48% is listed as not covered
- A note that the FDA warnings on blood clots, red cell increase, heart risk and stroke were discussed with the patient
It also lists men who want to have children as not covered, which matches the Endocrine Society's advice against starting testosterone in men planning fertility soon. Our TRT and fertility guide explains why.
If your plan says no, the code isn't always the problem. Aetna and Palmetto both refuse to cover age-related low T, so a perfectly coded E29.1 claim can still be denied. If you'd rather pay cash, our TRT cost breakdown shows what that runs per month. If you're going that route, our comparison of the best TRT online clinics lines them up on price, labs and licensing.
What to ask your doctor before a testosterone claim goes in
- Were both of my testosterone tests drawn in the morning, on different days, at the same lab?
- Was my LH or FSH checked, and does it point to the testes or the pituitary?
- Which diagnosis is going on the claim, and is it on my plan's covered list?
- Have my PSA and hematocrit been checked, and when is the next check?
- Does my plan cover testosterone under the medical benefit or the pharmacy benefit?
Pairing the Codes on a TRT Claim
The diagnosis always goes first. List the hypogonadism code as the reason for the visit, then add the therapy and monitoring codes.
- Z79.890 rides second. It records current hormone replacement and can't show medical necessity alone. Palmetto added it to its covered list from April 2, 2026. Our HRT ICD-10 guide covers Z79.890 in full.
- Z51.81 for monitoring visits. The Z79 category tells you to "code also" Z51.81 when the visit is for drug level monitoring, and Z51.81 tells you to code also the Z79 code.
- ED caused by the low T. N52.1 carries a "code first underlying disease" note, so the hypogonadism code is listed before it.
- Side effects of testosterone. For a correctly prescribed drug, the guidelines put the effect first and the adverse effect T code second. A high red cell count from TRT becomes D75.1 (secondary polycythemia, which includes "erythrocytosis NOS"), then T38.7X5A, with the 7th character A used while the condition is in active treatment (Guidelines, Section I.C.19.e.5.a).
HCPCS Codes for Testosterone Injections and Pellets
The drug has its own codes. Diagnosis codes explain why; HCPCS Level II codes bill the testosterone itself. All are active in the CMS October 2026 HCPCS file (CMS HCPCS quarterly update).
Units are the easy mistake. J1071 and J3121 are billed per 1 mg, so 100 mg is 100 units, not 1. Both Medicare contractor articles list J1071, J3121, J3145, J3490 (unclassified drugs) and 96372 (A58828; A57615).
Covered drug codes still vary by policy. Cigna's injectable policy lists J1072, J1073 and J3145, and notes that whether testosterone falls under the medical or pharmacy benefit varies by plan (Cigna IP0351). Coding is also separate from whether a given way of getting testosterone is lawful; see is TRT legal.
FY2027 Changes That Affect Testosterone Coding
The core codes didn't move. E29.1, E23.0, E89.5, E89.3, Q98.0, Q98.1, Q98.4, R68.82, R79.89, Z79.890 and Z51.81 all keep the same code and description in FY2027 (FY2026 files vs FY2027 tabular).
Three changes are worth knowing:
- Z87.890 is no longer billable. "Personal history of sex reassignment" became a header, split into Z87.8901 (social), Z87.8902 (medical), Z87.8903 (surgical), Z87.8904 (intersex surgery) and Z87.8909 (unspecified). Z87.8902's inclusion term is "personal history of pharmacological (hormonal) gender transition". Plain Z87.890 is no longer valid for dates of service from October 1, 2026.
- Palmetto updated its list to match. It deleted Z87.890 and added Z87.8904 from October 1, 2026 (A58828 revision history).
- F64.A was added. "Gender identity disorder, in remission" is new, alongside Z87.893 for personal history of gender detransition.
For gender-affirming testosterone, F64.0 ("Transsexualism", whose inclusion terms list gender dysphoria in adolescents and adults and "transgender") is the diagnosis. Palmetto's covered list includes F64.0, F64.1, F64.2, F64.8 and F64.9, and Aetna covers F64.0 to F64.9 when its criteria are met (Aetna CPB 1014).
Common Mix-Ups on Low Testosterone Claims
The tabular's own notes flag these errors.
- E29.1 with E89.5. Blocked by Excludes1. After orchiectomy or another procedure, E89.5 stands alone as the hypogonadism code.
- E29.1 with a Klinefelter code. Also Excludes1. Use Q98.0, Q98.1 or Q98.4. Neither Medicare covered list we checked includes a Q98 code, so confirm with the payer before relying on it.
- Vague codes. E29.9 (testicular dysfunction, unspecified) and E34.9 (endocrine disorder, unspecified) are valid but appear on neither Medicare covered list. E29.8 does.
- Z79.890 as the only diagnosis. It explains the treatment, not the reason for it.
For the treatment behind these codes, see our testosterone replacement therapy guide.
Frequently Asked Questions
Sources
- National Center for Health Statistics. ICD-10-CM Tabular List of Diseases and Injuries and Index, FY2027 (effective October 1, 2026). CDC/NCHS file
- National Center for Health Statistics. ICD-10-CM Tabular Addenda, FY2027. CDC/NCHS file
- CMS and NCHS. ICD-10-CM Official Guidelines for Coding and Reporting, FY2027. CDC/NCHS PDF
- National Center for Health Statistics. ICD-10-CM files, FY2026 (effective October 1, 2025). CDC/NCHS directory
- Palmetto GBA. LCD L39086, Treatment of Males with Low Testosterone. CMS Medicare Coverage Database
- Palmetto GBA. Billing and Coding Article A58828, Treatment of Males with Low Testosterone, version effective October 1, 2026. CMS Medicare Coverage Database
- Noridian Healthcare Solutions. LCD L36538, Treatment of Males with Low Testosterone. CMS Medicare Coverage Database
- Noridian Healthcare Solutions. Billing and Coding Article A57615, Treatment of Males with Low Testosterone. CMS Medicare Coverage Database
- Centers for Medicare & Medicaid Services. HCPCS Quarterly Update, October 2026 alpha-numeric file. CMS
- Cigna. Drug Coverage Policy IP0351, Testosterone (Injectable) Products, effective October 15, 2026. Cigna PDF
- Aetna. Clinical Policy Bulletin 1014, Testosterone Cypionate Injections. Aetna
- Bhasin S, et al. Testosterone therapy in men with hypogonadism: an Endocrine Society clinical practice guideline. J Clin Endocrinol Metab. 2018;103(5):1715-1744. PubMed 29562364
- Mulhall JP, et al. Evaluation and management of testosterone deficiency: AUA guideline. J Urol. 2018;200(2):423-432. PubMed 29601923
Medical Disclaimer: This article is educational information, not medical, legal or billing advice. Coding is the responsibility of the treating clinician and billing team. ICD-10-CM changes every October 1 and HCPCS changes quarterly, and payer policies differ by plan and region. Confirm every code, Excludes note and coverage rule against the current official files and the specific payer's policy before submitting a claim, and talk to your doctor about whether testosterone therapy is right for you.

