Tracking Medical Expenses Year-Round: Planning for the 7.5% AGI Threshold in 2026

Tax season is here, and I want to talk about one of the most misunderstood deductions: medical expenses. As a former IRS auditor turned tax prep specialist, I see clients leave money on the table every year because they don’t track their medical costs properly.

The 7.5% AGI Threshold Rule

Here’s the deal: You can deduct medical and dental expenses that exceed 7.5% of your Adjusted Gross Income (AGI) — but only if you itemize on Schedule A. This threshold became permanent in 2021, and it’s a tough bar to clear for many taxpayers.

Let me give you a concrete example. Say your AGI is $60,000. You need to spend more than $4,500 ($60,000 × 0.075) in unreimbursed medical expenses before you can deduct a single dollar. If you spent $6,000 on qualifying medical costs, you could deduct $1,500.

The catch? Only expenses NOT reimbursed by insurance count. And you have to itemize, which means your total itemized deductions (medical, mortgage interest, charitable donations, etc.) need to exceed the standard deduction ($15,000 single, $30,000 married filing jointly for 2026).

The Tracking Problem

Most people don’t meticulously track medical expenses because they assume they won’t hit the threshold. But here’s what I’ve learned from 12 years as an EA: You don’t know until you track it.

I’ve seen clients with chronic conditions, families with unexpected ER visits, or folks who had elective surgery dismiss the deduction entirely — only to discover they actually exceeded the threshold when we reconstructed their expenses from EOBs and receipts.

The Beancount Advantage

This is where Beancount becomes invaluable. Instead of scrambling through shoeboxes in April, you track EVERY medical expense year-round. Here’s my recommended approach:

Account Structure

Expenses:Health:Insurance        ; Premiums (often not deductible if pre-tax)
Expenses:Health:Medical          ; Doctor visits, procedures
Expenses:Health:Dental           ; Dentist, orthodontics
Expenses:Health:Vision           ; Eye exams, glasses, contacts
Expenses:Health:Prescriptions    ; Pharmacy copays
Expenses:Health:Therapy          ; Physical therapy, mental health
Expenses:Health:Equipment        ; Medical devices, hearing aids

Essential Metadata

For every medical transaction, I tag:

  • provider: (e.g., “Kaiser”, “Dr. Smith”)
  • insurance_claim: (claim number if applicable)
  • reimbursed: (TRUE/FALSE)
  • fsa_eligible: (TRUE/FALSE if you have FSA/HSA)

Example transaction:

2026-02-15 * "Orthopedic consultation - knee pain"
  Expenses:Health:Medical  250.00 USD
    provider: "Dr. Rodriguez"
    insurance_claim: "CLM-2026-045821"
    reimbursed: FALSE
    fsa_eligible: TRUE
  Liabilities:CreditCard

What Qualifies? (More Than You Think!)

The IRS Publication 502 lists dozens of qualifying expenses. Some surprises:

  • Mileage to/from medical appointments (21 cents/mile in 2026)
  • Lodging (up to $50/night) for overnight medical travel
  • Guide dogs for blind/deaf individuals
  • Weight-loss programs for doctor-diagnosed obesity
  • Smoking cessation programs
  • Lactation supplies

What does NOT qualify:

  • Cosmetic procedures (unless medically necessary)
  • Over-the-counter meds without prescription
  • Gym memberships (even if doctor recommends)

Multi-Year Strategy: The “Bunching” Technique

Here’s a pro tip: If you’re hovering near the 7.5% threshold, consider bunching elective medical expenses into one tax year. For example:

  • Schedule elective surgery in December instead of January
  • Accelerate dental work or new glasses into the same year
  • Pre-pay January medical bills in December

Beancount makes this planning visible. Run a query in November to see where you stand, then strategically schedule procedures.

Year-End Tax Prep Query

At tax time, I run this query to isolate deductible expenses:

SELECT 
  account, 
  sum(position) as total,
  count(*) as transactions
WHERE 
  account ~ 'Expenses:Health' 
  AND year = 2025
  AND metadata('reimbursed') = 'FALSE'
GROUP BY account
ORDER BY total DESC;

This gives me a clean breakdown of unreimbursed costs by category, ready for Schedule A.

The Audit Reality

If you DO claim medical expense deductions, expect IRS scrutiny. I’ve handled audits where clients couldn’t produce documentation and lost thousands in disallowed deductions.

Beancount’s transaction-level notes + digital receipt storage (link PDFs in metadata or use document management folder structure) creates an audit-proof system. When the IRS asks for proof of a $1,200 dental expense, you can produce:

  1. The transaction with date, provider, amount
  2. The receipt PDF
  3. The insurance EOB showing it wasn’t covered

Your Turn: How Do You Track Medical Expenses?

Do you track every medical cost, or wait until you know you’ll exceed the threshold? What’s your Beancount account structure? Any clever metadata or query strategies to share?

For those who’ve been through an IRS audit involving medical expenses, what documentation made the difference?

Let’s build a community resource for tax-compliant medical expense tracking!


Disclaimer: This is general tax information, not personalized advice. Consult a tax professional for your specific situation.

Excellent breakdown, @tax_tina! As someone who’s helped clients through multiple IRS audits involving medical expense deductions, I can’t emphasize enough how critical documentation quality is.

The Audit Reality: What IRS Examiners Look For

When the IRS selects a return with large medical expense deductions for audit, they’re specifically looking for:

  1. Substantiation gaps - Can you prove you paid it and it wasn’t reimbursed?
  2. Timing issues - Did you deduct expenses paid in the wrong tax year?
  3. Non-qualifying expenses - Supplements, vitamins, gym memberships that crept in
  4. Double-dipping - Expenses already paid from HSA/FSA pre-tax dollars

I had a client last year who claimed $18,000 in medical deductions (legitimate chronic illness treatment). The IRS challenged it. Because she had Beancount records with transaction-level notes + linked EOBs + provider invoices, we provided a 40-page response packet that was irrefutable. The IRS closed the examination with no changes.

My Recommended Documentation Workflow

Here’s what I coach clients to do in Beancount:

Link Physical Receipts to Transactions

Use the document: metadata field to reference your filing system:

2026-03-15 * "MRI scan - lower back"
  Expenses:Health:Medical  1,850.00 USD
    provider: "Advanced Imaging Center"
    insurance_claim: "CLM-2026-078234"
    reimbursed: FALSE
    document: "2026-03-15-MRI-receipt.pdf"
  Liabilities:CreditCard

I tell clients to maintain a folder structure: Documents/Taxes/2026/Medical/ with PDFs named by date and provider. When the IRS asks, you can instantly produce the source document.

Track Insurance Reimbursements Explicitly

Don’t just mark reimbursed: TRUE. Show the actual reimbursement transaction:

2026-04-20 * "Insurance reimbursement - MRI scan"
  Assets:Checking  1,200.00 USD
  Expenses:Health:Medical  -1,200.00 USD
    insurance_payment: TRUE
    claim: "CLM-2026-078234"

This creates a crystal-clear audit trail. You paid $1,850, insurance reimbursed $1,200, your out-of-pocket (potentially deductible) expense is $650.

Separate Pre-Tax vs Post-Tax Healthcare Expenses

Big mistake I see: People deduct health insurance premiums that were already paid with pre-tax dollars through employer plans. You can’t double-dip.

Create separate accounts:

Expenses:Health:Insurance:PreTax    ; Employer-sponsored premiums (NOT deductible)
Expenses:Health:Insurance:PostTax   ; Self-purchased, paid with after-tax dollars (deductible)

Only query PostTax accounts at year-end for Schedule A.

The “Bunching” Strategy is Powerful

@tax_tina mentioned bunching elective procedures into one tax year. I had a client with $58,000 AGI (threshold = $4,350). In 2025, they spent $3,800 on medical (no deduction).

For 2026, we strategically scheduled:

  • Elective knee surgery (February)
  • Spouse’s dental crowns (March)
  • New glasses and contacts (April)
  • Prepaid 3 months of physical therapy (December)

Total: $9,200 in medical expenses. After the $4,350 threshold, they deducted $4,850 — saving ~$1,200 in taxes at their marginal rate.

Beancount made it visible. We ran monthly queries to track progress toward the threshold and made informed scheduling decisions.

Audit-Proof Checklist

If you claim medical expense deductions, ensure you can answer YES to all these:

  • Do you have original receipts/invoices for every claimed expense?
  • Can you prove insurance didn’t reimburse each expense? (EOBs)
  • Are your expenses properly categorized by IRS guidelines?
  • Did you exclude gym memberships, cosmetic procedures, OTC meds?
  • Can you substantiate mileage claims? (calendar + mileage log)
  • Did you only deduct expenses paid in the tax year claimed?
  • Have you excluded any pre-tax HSA/FSA payments?

Beancount + disciplined metadata makes all seven checkboxes easy to prove.

Final Thought: Peace of Mind

Medical expense tracking in Beancount isn’t just about potential tax savings. It’s about financial visibility. Healthcare is expensive and unpredictable. Having 3-5 years of data helps you:

  • Budget realistically for healthcare costs
  • Evaluate health insurance plan options (HSA vs PPO)
  • Make informed decisions about FSA contribution amounts
  • Spot concerning cost trends (prescription prices doubling, etc.)

Even if you never hit the 7.5% AGI threshold, the awareness alone is valuable.

Great topic, Tina!

This is a fantastic discussion! As someone who tracks literally every financial transaction for my FIRE journey, I want to share my personal experience with medical expense tracking over the past 3 years.

My Medical Expense Data (2023-2025)

Here’s what complete tracking revealed:

2023: $2,847 total medical expenses (AGI: $85,000, threshold: $6,375) - No deduction
2024: $3,412 total medical expenses (AGI: $89,000, threshold: $6,675) - No deduction
2025: $4,125 total medical expenses (AGI: $92,000, threshold: $6,900) - No deduction

So I’ve never cleared the threshold. But here’s the thing: I don’t regret tracking for one second.

What Medical Expense Tracking Taught Me

1. Healthcare Inflation is Real and Personal

My medical costs grew 20.4% from 2023 to 2024, then another 20.9% from 2024 to 2025. That’s way above general inflation.

Breaking it down by category:

  • Prescriptions: Up 34% (insurance formulary changes + medication price increases)
  • Dental: Up 28% (preventive care + one filling)
  • Vision: Stable (biennial glasses purchase)
  • Copays/Deductibles: Up 15% (plan change to higher deductible)

This data informed my 2026 health insurance plan selection. I switched to an HSA-compatible HDHP because I’m relatively healthy and the math worked out better.

2. The “Near Miss” Year

In 2025, I had a health scare that required diagnostic imaging and specialist visits. By November, I was at $3,800 in medical expenses — still $3,100 away from the threshold.

But here’s where Beancount’s visibility created opportunity. I ran this query:

SELECT account, sum(position) as total
WHERE account ~ 'Expenses:Health' AND year = 2025
GROUP BY account ORDER BY total DESC;

I realized I was closer than ever before. So I:

  • Scheduled my annual physical for December instead of January (+$250 copay)
  • Got my partner’s dental cleaning moved up (+$180)
  • Bought a year’s supply of contact lenses in December instead of spreading it out (+$400)

Final 2025 total: $4,755. Still didn’t hit the threshold, but I got my money’s worth of healthcare in a year where I’d already met more of my deductible.

3. HSA Optimization

Tracking medical expenses helped me calculate the perfect HSA contribution.

I know my baseline medical spending is ~$3,500-4,000/year (based on 3 years of data). I contribute $4,000 to my HSA annually, invest the balance (currently in VTSAX), and pay most current-year medical expenses from my checking account.

Why? Because HSA dollars are the most tax-advantaged money in existence:

  • Tax-deductible going in
  • Tax-free growth
  • Tax-free withdrawal for qualified medical expenses

I’m banking receipts for years and will reimburse myself decades from now in retirement. My HSA is effectively a stealth Roth IRA with better tax treatment.

My Beancount Setup

Here’s my account structure:

Expenses:Health:Insurance:HDHP-Premiums
Expenses:Health:Medical:PrimaryCare
Expenses:Health:Medical:Specialists
Expenses:Health:Medical:Imaging
Expenses:Health:Medical:LabWork
Expenses:Health:Dental:Preventive
Expenses:Health:Dental:Restorative
Expenses:Health:Vision:Exams
Expenses:Health:Vision:Eyewear
Expenses:Health:Prescriptions:Maintenance
Expenses:Health:Prescriptions:Acute
Expenses:Health:Therapy:Physical
Expenses:Health:Therapy:Mental

Every transaction includes:

  • provider: name
  • hsa_eligible: TRUE/FALSE
  • reimbursed: TRUE/FALSE
  • receipt: filename reference

Query for Potential Deduction Planning

At year-end, I run this to see how close I am to the threshold:

SELECT 
  sum(position) as total_unreimbursed,
  (85000 * 0.075) as agi_threshold,
  sum(position) - (85000 * 0.075) as potential_deduction
WHERE 
  account ~ 'Expenses:Health'
  AND year = 2025
  AND metadata('reimbursed') = 'FALSE'
  AND metadata('hsa_paid') != 'TRUE';

I replace 85000 with my actual AGI. This gives me a real-time view of whether bunching makes sense.

Unexpected Benefit: Negotiating Medical Bills

Having detailed records helped me spot billing errors. In 2024, I was billed twice for the same imaging procedure ($1,200). Because I had the Beancount transaction + original receipt + insurance EOB, I easily proved the duplicate charge and got it reversed.

I’ve also used my multi-year data to negotiate cash-pay rates. When a provider quoted $350 for a procedure, I showed them I’d paid $220 at another provider the prior year for the same thing (via Fava charts). They matched the lower price.

Bottom Line: Track Even If You Don’t Hit the Threshold

Medical expense tracking creates value beyond tax deductions:

  • Budgeting accuracy - No more guessing healthcare costs
  • Insurance decision-making - Data-driven plan selection
  • HSA contribution optimization - Right-sized funding
  • Billing error detection - Protect yourself from overcharges
  • Trend awareness - Catch cost increases early
  • Negotiation power - Historical data supports price discussions

Even if I never clear the 7.5% AGI threshold, this data has saved me thousands in smarter insurance choices and corrected billing errors.

Plus, if I ever have a major medical event (surgery, chronic diagnosis, etc.), I’ll be ready to maximize the deduction because the infrastructure is already in place.

Great thread, @tax_tina and @accountant_alice!

Love this thread! @finance_fred’s real data is super valuable, and @accountant_alice’s audit checklist should be required reading for anyone claiming medical deductions.

I want to share a practical workflow for folks who are just starting out with medical expense tracking. Don’t overcomplicate it at first!

Start Simple: The Minimalist Approach

When I first started tracking medical expenses in Beancount (about 4 years ago), I made the mistake of creating 15+ sub-accounts before I even had data. It was overwhelming and I abandoned it.

Here’s what actually worked:

Phase 1: Single Account (Month 1-3)

Start with just ONE account:

Expenses:Health

Track every medical expense here for 3 months. Don’t worry about categorization yet. Just capture the data with basic metadata:

2026-03-20 * "Doctor visit - annual physical"
  Expenses:Health  150.00 USD
    provider: "Dr. Johnson"
  Liabilities:CreditCard

Phase 2: Basic Categorization (Month 4-6)

After 3 months, review your transactions and create categories based on what you actually spent money on, not some theoretical account structure:

Expenses:Health:Medical        ; Doctor visits, urgent care
Expenses:Health:Dental         ; Dentist
Expenses:Health:Vision         ; Eye doctor, glasses
Expenses:Health:Prescriptions  ; Pharmacy

Most people need these four categories. Don’t create an account for “Physical Therapy” if you’ve never been to PT.

Phase 3: Add Critical Metadata (Month 7+)

Once categorization is working, add two essential metadata fields:

  • reimbursed: - Did insurance cover this? (TRUE/FALSE)
  • insurance_claim: - What’s the claim number?

These two fields make tax time manageable.

My Current Setup (After 4 Years)

Here’s what my account structure looks like now:

Expenses:Health:Insurance:Premiums
Expenses:Health:Medical:Copays
Expenses:Health:Medical:OutOfPocket
Expenses:Health:Dental
Expenses:Health:Vision
Expenses:Health:Prescriptions:Copays
Expenses:Health:Prescriptions:FullPrice
Expenses:Health:Equipment        ; Added after I got hearing aids

Notice it’s still pretty simple. I don’t need 20 accounts because I don’t have 20 types of medical expenses.

Handling Insurance Reimbursements: The Easy Way

A lot of people get confused about insurance reimbursements. Here’s my approach:

When you pay the provider:

2026-02-10 * "MRI scan - knee injury"
  Expenses:Health:Medical:OutOfPocket  800.00 USD
    provider: "Imaging Center"
    claim: "CLM-2026-123456"
    reimbursed: FALSE
  Liabilities:CreditCard

When insurance reimburses you:

2026-03-05 * "Insurance reimbursement - MRI"
  Assets:Checking  600.00 USD
  Expenses:Health:Medical:OutOfPocket  -600.00 USD
    claim: "CLM-2026-123456"
    reimbursed: TRUE

Now your Expenses:Health:Medical:OutOfPocket account shows $200, which is your actual out-of-pocket cost. Perfect for tax reporting.

Pro tip: I also update the original transaction’s metadata to mark reimbursed: TRUE so I can see at a glance which expenses were covered.

Year-End Tax Prep: The Simple Query

At tax time, I need to answer one question: How much did I spend on unreimbursed medical expenses?

Here’s my query:

SELECT sum(position) as total_out_of_pocket
WHERE account ~ 'Expenses:Health' 
  AND year = 2025;

That’s it. Because I already netted out insurance reimbursements throughout the year (by posting negative amounts to expense accounts), the balance is automatically my out-of-pocket total.

Compare to my AGI × 0.075, and I instantly know if I’m close to the threshold.

Common Beginner Mistakes (I Made All of These)

Mistake 1: Over-Engineering the Account Structure

You don’t need an account for every possible medical expense type. Start simple, expand only when you have actual data.

Mistake 2: Not Tracking Reimbursements

If you don’t track what insurance paid, you’ll overstate your out-of-pocket costs and potentially claim deductions you’re not entitled to. Bad news in an audit.

Mistake 3: Forgetting Non-Doctor Expenses

Medical expenses include more than doctor visits:

  • Mileage to/from appointments (track in Beancount notes!)
  • Medical equipment (blood pressure monitors, crutches, etc.)
  • Over-the-counter items with a prescription
  • Vision and dental care

I missed hundreds of dollars my first year because I only tracked doctor visits.

Mistake 4: Not Reconciling with EOBs

Every few months, I pull my Explanation of Benefits (EOB) statements from my insurance portal and cross-check against my Beancount records. This catches:

  • Missed reimbursements
  • Duplicate charges
  • Bills I forgot to enter

The “Medical Receipt Drawer” System

Here’s my low-tech solution for receipt management:

I have a physical drawer labeled “2026 Medical Receipts.” Every medical receipt, EOB, and invoice goes in there as soon as I get it. Once a month, I reconcile:

  1. Enter any missing transactions into Beancount
  2. Update reimbursement status based on EOBs
  3. Scan important documents and name them by date: 2026-03-20-dr-johnson.pdf
  4. Reference the PDF in Beancount metadata: receipt: "2026-03-20-dr-johnson.pdf"

At year-end, I have a complete paper trail AND a complete Beancount ledger.

When You’re Close to the Threshold

If you’re within $1,000 of the 7.5% AGI threshold by November, here are some expenses you might be able to accelerate into the current year:

  • Annual checkups - Schedule for December instead of January
  • Dental cleanings - Move up by a month or two
  • Prescription refills - Get a 90-day supply now instead of 30-day
  • Eyeglasses - Order that new pair this year
  • Medical equipment - Buy that ergonomic chair with a doctor’s note
  • Elective procedures - Timing is everything

But only do this if it makes medical sense. Don’t get unnecessary healthcare just for a tax deduction!

Final Advice: Just Start

The best medical expense tracking system is the one you’ll actually use. Don’t wait for the perfect setup. Start with a single Expenses:Health account and grow from there.

Even if you never hit the 7.5% threshold, you’ll benefit from:

  • Knowing your true healthcare costs
  • Spotting billing errors
  • Making better insurance decisions
  • Being prepared if a major medical event happens

Great discussion, everyone. Happy tracking!