Free HSA reimbursement spreadsheet template (Excel + CSV)
Published
An HSA reimbursement spreadsheet is a log of the medical expenses you paid with your own money and plan to reimburse from your HSA later. One row per expense: what it was, who it was for, what you paid, where the proof is saved, and whether you have reimbursed it yet. This page has a free template you can download, the columns it uses and why, and how to keep it up to date.
This is general information, not tax advice. Rules can change, and your situation may differ. Ask a tax professional before you rely on it.
Download the free template: Excel (.xlsx) · CSV
No signup. The Excel file opens in Excel, Numbers, LibreOffice, and Google Sheets. In Google Sheets, choose File, then Import, then Upload.
Why keep a spreadsheet at all
There is no federal deadline to reimburse yourself from an HSA, as long as the expense is a qualified medical expense, it was incurred after your HSA was established, and you keep records that prove it. That is the rule covered in the HSA shoebox rule, explained.
The records are the part that falls on you. Publication 969 says you must keep records sufficient to show that:
- the distributions were used only to pay or reimburse qualified medical expenses,
- those expenses had not already been paid or reimbursed from another source, and
- you had not taken them as an itemized deduction in any year.
It also says not to send these records with your tax return. You keep them with your tax records in case the IRS asks.
Receipts alone don’t answer the question you will have years from now: which expenses are still unreimbursed, and how much can I take out? A spreadsheet does. Each row points to the receipt, and the reimbursed columns stop you from claiming the same expense twice.
The columns to track
The template has one row per expense. Each column ties back to something the IRS rules ask you to be able to show.
| Column | What to enter | Why it matters |
|---|---|---|
| Date of service | The date you got the care or bought the item | Publication 969: expenses incurred before you establish your HSA aren’t qualified medical expenses. This is the date that counts, not the billing date. |
| Date paid | When you paid the bill | Helps you match the row to a card or bank statement. |
| Provider | The doctor, dentist, pharmacy, or store | Shows what the expense was and lets you find the paperwork. |
| Patient | You, your spouse, or a dependent | Qualified medical expenses are for you, your spouse, and your dependents. |
| Description | What it was: an office visit, a prescription, glasses | Shows it was medical care. Publication 502 lists most of what counts. |
| Amount paid | What you paid out of pocket, after insurance | Only the part insurance or another plan didn’t pay can be a qualified medical expense. |
| Paid from | Personal card, bank account or check, cash, HSA card, or other | Shows the money came from you. Rows paid with your HSA card are already paid by the HSA, so there is nothing to reimburse. |
| Receipt link | A link or file path to the itemized receipt or bill | The record that shows the provider, date, patient, what it was, and the amount. |
| EOB link | A link or file path to the explanation of benefits | If insurance was involved, the EOB shows what the plan paid and what you owed, which covers the “not paid from another source” part. |
| Proof of payment link | A card or bank statement, or a receipt marked paid | Shows you actually paid it. A card slip alone usually doesn’t show what was bought, so keep it with the receipt, not instead of it. |
| Reimbursed date | The date of the HSA withdrawal that paid you back | Blank until you reimburse yourself. Filling it in keeps the expense from being claimed twice. |
| Withdrawal amount | How much of this expense that withdrawal covered | Lets you check that a withdrawal is no more than the expenses it covers. |
| Notes | Claim numbers, a partial insurance payment, where the paper copy is | Anything that will help you, or the IRS, follow the trail later. |
The Excel version adds two columns it fills in for you, and three tabs:
- Status reads each row as Available to claim, Missing receipt, Partly reimbursed, Reimbursed, Paid by HSA, or Before HSA opened.
- Left to claim is the amount paid minus the withdrawal amount, for rows that have a receipt link.
- Setup holds the date your HSA was established. Any row dated before it is flagged in red, because those expenses never qualify.
- Summary adds up what is available to claim, what is waiting on a receipt, and what you have already reimbursed.
- Example shows five rows of made-up sample data so you can see how each status looks.
The CSV has the same 13 columns as plain headers, with no formulas, for any app that takes a CSV.
How to use it
1. Enter your HSA established date
Ask your HSA custodian for the date if you aren’t sure, and type it on the Setup tab. If you funded your HSA by rolling over an older HSA, Publication 969 says it counts as established on the date the older account was.
2. Add a row when you pay
Each time you pay a qualified medical expense with money that isn’t from your HSA, add a row. Do it the same day if you can, while the receipt is in your hand.
3. Save the documents and link them
Save a digital copy of the receipt, the EOB if there is one, and proof of payment. A photo or PDF in a folder you control is easier to keep for years than paper, and thermal receipts fade. Put the link or file path in the row. A simple naming pattern helps, such as 2026-03-14 Lakeside Dental $220.00.pdf.
Until a row has a receipt link, the template marks it Missing receipt and leaves it out of Available to claim.
4. Reimburse yourself when you decide to
Look at Available to claim on the Summary tab. Request a withdrawal from your HSA custodian for no more than that amount. Then fill in Reimbursed date and Withdrawal amount on every row the withdrawal covers. The steps with your custodian and on Form 8889 are in how to pay yourself back from your HSA later.
5. Keep it with your tax records
The withdrawal is reported for the year you take it, so keep a copy of the spreadsheet and the documents for each reimbursed row with that year’s tax files. Keep them for as long as the IRS can question that return. IRS Tax Topic 305 explains how long that generally is.
Mistakes the template helps you avoid
- Logging an expense from before your HSA was established. The Setup date flags it.
- Reimbursing a row with no receipt. It stays out of Available to claim.
- Counting an HSA card payment as something to reimburse. Paid by HSA rows are left out.
- Claiming the same expense twice. Reimbursed rows drop to zero in Left to claim.
- Withdrawing a round number that is more than your receipts add up to. The Summary total is the ceiling.
It can’t check whether an expense qualifies, whether insurance later paid part of it, or whether you deducted it on Schedule A. Those are still on you.
To see what your unreimbursed total could grow to if the money stays invested, try the HSA shoebox calculator. It can also read this spreadsheet in your browser and point out rows missing a receipt and likely duplicates. Your file isn’t uploaded.
Or let PocketHSA keep it for you
A spreadsheet works. The hard part is keeping it up to date for years and finding the receipt for each row when you need it. PocketHSA does the same job with less typing:
- The PocketHSA Ledger. Connect Google Drive and your expenses are copied to a Google Sheet called PocketHSA Ledger, in a PocketHSA folder in your own Drive. Your receipt files go in the same folder, with a folder for each year. The sheet is a one-way copy, so you make changes in the app. PocketHSA can only open the files it creates in your Drive.
- AI receipt reading. Upload a receipt photo or PDF and AI reads the date, provider, and amount. You check it and fix anything before it is saved.
- Spreadsheet import. Bring this template, or the tracker you already keep, as a CSV or Excel file. PocketHSA reads the column names, you confirm the preview, and every row is saved as an expense. Columns it doesn’t have a field for, such as EOB link, are kept in the notes.
The free plan keeps 25 expenses active and includes 35 AI receipt readings and one spreadsheet import. Import saves every row; past 25, the extra expenses are saved and become active with Pro. Pro is $24.99 a year or $2.99 a month and makes every expense active. You can export your expenses and receipts on every plan.
One difference from the template: PocketHSA marks an expense as reimbursed or not. If a withdrawal covered only part of an expense, split it into two rows before you import.
Keep the records in PocketHSA
Bring the HSA spreadsheet you already keep: every row is saved as an expense after you check the preview. Upload receipts and AI reads the date, provider, and amount for you to confirm. Connect Google Drive and your receipt files go in a folder you own, with a copy of your expenses in a Google Sheet. You can export everything on every plan.
IRS sources
- IRS Publication 969, Health Savings Accounts and Other Tax-Favored Health PlansQualified medical expenses, expenses incurred before the HSA was established, the records to keep, Form 1099-SA, and the additional 20% tax.
- IRS Notice 2004-50, Q&A-39 (Internal Revenue Bulletin 2004-33)A distribution can reimburse expenses from any earlier year incurred after the HSA was established. "There is no time limit on when the distribution must occur."
- IRS Publication 502, Medical and Dental ExpensesWhat counts as medical care. Form 8889 instructions add HSA-specific items, such as nonprescription medicines and menstrual care products.
- Instructions for Form 8889, Health Savings Accounts (HSAs)Lines 14a to 17b: total distributions, distributions used for qualified medical expenses, the taxable amount, and the exceptions to the additional tax.
- IRS Tax Topic 305, RecordkeepingHow long to keep the records that support a tax return.
Checked against the IRS pages for tax year 2025. If the IRS changes a rule, the IRS page is what counts.