UK Immigration Health Surcharge 2026: Calculation Pitfalls, Exemption Logic, and What HR Systems Get Wrong
Most HR platforms that estimate UK immigration costs handle the immigration health surcharge (IHS) correctly in the standard case. One applicant, standard rate, multiply by years. Done. But the edge cases — rounding, dependent exemptions, NHS carve-outs, curtailment refunds — break naive implementations more often than expected.
Here's the full picture for anyone building cost estimation into a hiring or immigration compliance workflow.
Current rates (2026)
| Applicant category | Annual rate |
|---|---|
| Standard (Skilled Worker, Global Talent, Family routes) | £1,035 |
| Student visa | £776 |
| Youth Mobility Scheme | £776 |
| Visitor visa (≤ 6 months leave) | Exempt |
| NHS / CQC adult social care worker (qualifying employer) | Exempt |
| Dependant of British or Irish national | Exempt |
| Ukrainian nationals under Ukraine Schemes | Exempt |
These rates have been revised repeatedly since the surcharge launched in 2015 at £200/year. Any system storing the rate as a hardcoded constant will drift out of compliance; treat it as a configurable value.
The rounding rule breaks float arithmetic
The IHS portal charges by whole years, rounding up. A 30-month visa is billed as 3 full years, not 2.5. A 25-month visa is billed as 3 years. A 24-month visa is billed as exactly 2.
This catches implementations using floating-point duration:
# Wrong
ihs_total = rate_per_year * (visa_months / 12) # 30-month visa → 2.5 years → undercalculates
# Correct
import math
ihs_total = rate_per_year * math.ceil(visa_months / 12)
And per-person, not per-application:
def calculate_ihs(
visa_months: int,
applicants: list[dict], # [{name, rate_category, exempt}]
) -> float:
total = 0.0
years = math.ceil(visa_months / 12)
for applicant in applicants:
if not applicant["exempt"]:
total += applicant["rate"] * years
return total
A primary applicant plus two dependants on a 30-month Skilled Worker visa: 3 people × 3 years × £1,035 = £9,315.
Exemption logic: the NHS case is employer-gated, not role-gated
The NHS exemption catches most generic implementations. It does not apply to everyone who works in healthcare — it applies to workers employed directly by an NHS body or a Care Quality Commission-registered adult social care provider.
Agency workers placed at NHS sites typically don't qualify. The contract has to be with the NHS body itself.
def is_nhs_exempt(employer_type: str, employment_type: str) -> bool:
qualifying_employer = employer_type in ("NHS_BODY", "CQC_ADULT_SOCIAL_CARE")
direct_employment = employment_type != "AGENCY"
return qualifying_employer and direct_employment
Implementing this as a simple is_healthcare: bool flag will produce incorrect exemption results for a significant share of healthcare hires.
Dependent exemptions scope by sponsor type, not residency status
Dependants of British or Irish nationals are exempt. Dependants of ILR holders (settled persons) are not exempt — they pay the standard rate.
For HR cost estimation tools advising sponsors on relocation budgets, this distinction matters. The employee's own exemption status doesn't transfer to their partner if the partner is joining on a Dependant visa and the employee is a non-British settled person.
Curtailment refunds: build into sponsor offboarding
If an employee's leave is curtailed by the Home Office — through sponsor licence revocation, role change, or other qualifying events — they may be entitled to a prorated IHS refund. The calculation is: daily rate × days remaining from curtailment date to original visa expiry.
This is not automatic. The employee must apply via the IHS refund portal. HR compliance workflows for sponsor licence holders should:
- Log the curtailment date at the point the Home Office notification arrives
- Notify the employee of IHS refund eligibility
- Provide the original visa expiry date from their HR record
Voluntary departure doesn't trigger a refund. If the employee resigns and leaves early, they receive nothing.
Rate change risk
The IHS has been revised upward six times since 2015. Changes are implemented via secondary legislation, typically with limited lead time. Budget estimates built on today's rate for visas that won't be applied for until next year carry real rate-change risk — particularly for longer visa periods where the total is significant.
For maintained reference data on current IHS rates and visa fee structures across UK immigration routes, see immigrationgpt.co.uk.
Rates and rules reflect July 2026. Always verify against GOV.UK before using this data in production systems or employee-facing tools.
Top comments (0)