Most visa expiry templates online are built for HR teams tracking staff work permits. This one is built for a migration practice. It has a row per client visa, the four checkpoint dates your team should act on (90, 60, 30 and 7 days before expiry), a named responsible person, and a status column so you can see at a glance what has been handled.
Download the template, copy the formulas below into row 2, and you have a working visa expiry tracking spreadsheet in Excel or Google Sheets in about ten minutes.
The file includes three clearly fictional example rows. Delete them before you add real clients.
The columns
| Column | Heading | What goes in it |
|---|---|---|
| A | Client ref | Your internal file reference |
| B | Client name | Family name, given name |
| C | Visa subclass | For example 500, 482, 485 |
| D | Grant date | From the grant notice |
| E | Expiry date | From the grant notice or VEVO |
| F | Conditions | Condition numbers that matter for this client |
| G | 90 days before | Formula |
| H | 60 days before | Formula |
| I | 30 days before | Formula |
| J | 7 days before | Formula |
| K | Days to expiry | Formula |
| L | Window | Formula |
| M | Responsible person | One named person |
| N | Next action | What happens next, in a few words |
| O | Status | Pick from a list (see below) |
| P | Last updated | Date you last touched the row |
Enter dates in Australian format (DD/MM/YYYY). In Google Sheets, set File > Settings > Locale to Australia first, or dates may be read the American way. The CSV stores dates as YYYY-MM-DD, which both programs read correctly.
The formulas
Type these into row 2, then fill them down the column. They work the same way in Excel and Google Sheets. Each one returns a blank if the expiry date is empty, so unused rows stay clean.
Checkpoint dates (G to J)
G2: =IF($E2="","",$E2-90)
H2: =IF($E2="","",$E2-60)
I2: =IF($E2="","",$E2-30)
J2: =IF($E2="","",$E2-7)Format G to J as dates (Format > Number > Date in Sheets; Format Cells > Date in Excel), or you'll see serial numbers.
Days to expiry (K)
K2: =IF($E2="","",$E2-TODAY())Format K as a plain number. A negative number means the visa has already expired.
Window (L)
L2: =IF($K2="","",IF($K2<0,"Expired",IF($K2<=7,"7 days",IF($K2<=30,"30 days",IF($K2<=60,"60 days",IF($K2<=90,"90 days","Over 90 days"))))))Optional: move checkpoints off weekends
If a checkpoint lands on a Saturday or Sunday, this version moves it back to the Friday before. Use it in place of the G to J formulas above (change 90 to 60, 30 or 7 for each column):
G2: =IF($E2="","",WORKDAY($E2-90+1,-1))To skip public holidays as well, list them on a separate tab and add the range as a third argument, for example WORKDAY($E2-90+1,-1,Holidays!$A$2:$A$30). Public holidays vary by state and territory, so use your own.
Status list (O)
Use data validation (Data > Data validation in both programs) with these options: Watching, Contacted, Application in progress, New visa granted, Closed.
Colour the rows that need attention
Select A2:P500 and add conditional formatting rules using a custom formula:
- Red fill:
=AND($K2<>"",$K2<=30,$O2<>"Closed") - Amber fill:
=AND($K2<>"",$K2>30,$K2<=90,$O2<>"Closed") - Grey text:
=$O2="Closed"
A "this week" view
On a second tab, this formula lists every open row with a checkpoint in the next seven days or already inside the 90-day window (Excel 365 and Google Sheets):
=FILTER(Tracker!A2:P500,(Tracker!K2:K500<>"")*(Tracker!K2:K500<=97)*(Tracker!O2:O500<>"Closed"),"Nothing due")Rename your main tab to "Tracker" or change the tab name in the formula.
How to use it each week
- Monday: open the "this week" tab. Everything listed either reaches a checkpoint soon or is already inside 90 days.
- Act on each row. Contact the client, start the application or record why no action is needed. Update Next action, Status and Last updated.
- Add new clients as they arrive. Record the expiry at intake, even for enquiries who haven't signed yet. Confirm the date from the grant notice or VEVO, which shows an in-effect visa's expiry date, period of stay and conditions.
- Close rows when the matter ends. When a new visa is granted, add it as a new row and set the old one to Closed.
- Keep one master file. Store it in one shared location with access limited to the people who need it, and never email copies around.
A few things the template can't know for you. Some visas carry conditions that affect what a client can apply for next (condition 8503, No Further Stay, is the common example), so note them in column F. Some bridging visas have no fixed expiry date while an application is being decided, and VEVO shows details only for a visa that is in effect. For those clients, track the event you're waiting on in Next action instead. Our student visa workflow guide and glossary cover the terms. This is general information, not legal advice.
For a quick one-off check, the free visa expiry date planner works out the 90, 60, 30 and 7-day dates for a single expiry and gives you a calendar file.
Where a spreadsheet stops working
A well-kept spreadsheet is a genuinely good tracker for a small caseload. It starts to strain in predictable ways as the practice grows.
It can't tell you anything. Every checkpoint depends on someone opening the file on Monday. If that person is away, nobody looks.
Copies drift. Once a second person keeps their own copy, or a filter is left on, dates go missing without anyone noticing.
The date is separate from the work. The expiry sits in one file while the application, documents, file notes and invoices sit elsewhere, so every follow-up starts with a search.
Access is all or nothing. Anyone with the link sees every client's visa details, and it's hard to tell who changed a date or why.
If you recognise two or more of these, our guide to moving from a spreadsheet to a CRM shows how to bring this exact file across.
The same routine in AgentDS
AgentDS records visa expiries on the client profile and shows upcoming ones on the dashboard. Each morning it emails the practice owner and the responsible person when a recorded visa, passport, document, application or task date is 90, 60, 30 or 7 days away, and again when it falls due. It suggests follow-up tasks from recorded expiries for you to review, and the expiry sits beside the client's applications, documents, notes and fees. You can import this template's columns straight in, and export all your data as CSV at any time.
See visa expiry tracking in AgentDS.
Frequently asked questions
Is the template free?
Yes. Download the CSV, open it in Excel or Google Sheets and add the formulas on this page. No sign-up needed.
Why are the formulas not in the file?
CSV files store plain values only. Paste the formulas into row 2 and fill them down; it takes a couple of minutes.
Why 90, 60, 30 and 7 days?
They give time for a first contact, a progress check, a final check and a last-week reminder. They are also the points at which AgentDS sends its deadline reminder emails.
Can a spreadsheet send me a reminder email?
Not on its own. You'd need scripts or add-ons. A CRM with reminder emails does it without extra set-up.
Can I import this spreadsheet into AgentDS later?
Yes. Upload it as CSV or Excel, match the columns to AgentDS fields and review everything before it's saved.