· 4 min read · The HumanR team
Work-permit and visa expiry: what to track and when
A lapsed permit is rarely a paperwork problem. It is a missing list. What to track for a foreign workforce, when to be warned, and who should hear about it.
A lapsed permit is a missing list, not a careless person
When an employee's work permit or visa runs out unnoticed, the first reaction is to look for whoever should have caught it. Usually nobody could have. The dates lived in a column of a staff sheet, a folder of scans and someone's memory, and the only way to find what was expiring was to go looking. Nobody goes looking on a busy week.
The fix is not more diligence. It is turning “go and look” into “be told”: one list of every date that can run out, checked every night, with warnings early enough to act on. The rest of this post is what goes on that list and how the warnings should work, whether you use software for it or not.
What belongs on the list
Permits and visas are the obvious ones, but a lapse that stops someone working can come from several directions. Track all of them in the same place, because the person acting on them is usually the same:
| Item | Why it bites |
|---|---|
| Work permit | The right to work itself. Renewal often needs the passport and medical to be valid first. |
| Visa or residence permit | Can run on a different clock from the work permit for the same person. |
| Passport | Many renewals need months of passport validity left, so a passport can block a permit renewal long before it expires. |
| Medical certificate | Often a condition of the permit, with its own validity. |
| Fixed-term contract | A permit tied to a contract is only as current as the contract. |
| Probation end | Not an immigration date, but a deadline someone must act on, and easy to miss in the same way. |
| Quota or allocation | Where permits are allocated by block or by occupation, the allocation itself can expire, and every hire draws on it. |
Record the expiry date of each document, not just a yes or no that someone has one. A date can be checked automatically. A tick box cannot.
When to be warned: several times, not once
A single reminder fails the way a single alarm does: it goes off on the wrong day, gets dismissed, and nothing reminds you again. Warn at several marks as the date approaches. HumanR uses 90, 60, 30 and 7 days, and the day itself, the same for every company, and flags each item once per mark so the same warning does not repeat night after night.
Each mark has a job. Ninety days is for starting renewals that need other documents first. Sixty is for chasing whatever has not started. Thirty and seven are escalation. The day itself is the record that it happened.
Know your own lead time
How early is early enough depends on the country, the permit type and how fast your authority is working this year. No article can give you that number. Your immigration officer or agent can: ask them how long a renewal takes from a complete application, then add the time it takes your own people to assemble one.
If that total is longer than ninety days for some permits, keep your own list of those people and start them earlier. Warnings are a safety net under a renewal calendar, not a replacement for one.
Who should hear about it
The commonest failure after “nobody knew” is “one person knew, and they were on leave”. A warning sent to a single named inbox has a single point of failure.
HumanR ties recipients to a role instead of a list: everyone whose role can manage employees, and every Admin, receives the alerts. To add or remove someone, you change their role. Each person gets one summary in the app (“12 employee documents, 3 contract ends and 1 quota permit are approaching expiry”) and can opt in to the same summary by email. If nobody holds that role on alert night, nothing can be sent, so that is written to the log rather than failing silently.
If the team that acts on these lives in Slack or Teams, a webhook can post each item there separately, naming the person and the date, which is what a channel needs.
Quota is the same problem from the other side
Where permits are issued against a quota, an expiry is only half the risk. The other half is finding out at offer stage that the occupation you are hiring for has no slots left, or that the quota block itself lapsed.
Track quota as blocks by company and occupation, with used and available counts and the block's own expiry date. Then a hiring decision can be checked against real capacity before anyone books a flight, and the block's expiry goes on the same nightly list as everyone's documents.
If you are staying on a spreadsheet for now
You can get most of the way there with discipline. A minimum that holds up:
- One row per document, not one column per document type. A person with two visas then fits.
- A real date column, formatted as a date, so it can be sorted and filtered. Check a few for day/month flips.
- A “days left” formula and conditional formatting at your marks.
- A named owner and a deputy, and a fixed weekly time to filter the sheet to the next 90 days.
- When a document is renewed, a new row with the new date, not an overwrite, so you can see what happened.
What a spreadsheet cannot do is check itself overnight and tell the deputy when the owner is away. That is the point where moving it into a system pays for itself.