The UK Immigration Health Surcharge (IHS) is a fee attached to most long-term UK visa applications. If you're building HR tools, immigration compliance platforms, or cost calculators for international hires, IHS is one of the more formula-heavy parts of the process — the rate is per-person, per-year (or part thereof), and several exemption categories need to be evaluated before a final cost figure can be produced.
This post covers the current IHS rate structure, exemption logic, and refund conditions as a technical reference.
Current rate (2026)
The current standard rate is £1,035 per person per year (or partial year).
The "partial year" rule is the tricky part. Any fraction of a year counts as a full year for billing purposes. A 2.5-year visa costs:
ceil(2.5) = 3 years
3 × £1,035 = £3,105
For HR platforms handling family relocations, IHS must be calculated per family member with no discount for minors. A family of four on a 3-year Skilled Worker visa pays:
4 × ceil(3) × £1,035 = £12,420
This is a significant cost centre, coming before visa fees, document translation, legal fees, or relocation support.
Visa types that require IHS
IHS applies when the leave granted is more than 6 months. Applicable visa categories include Skilled Worker, Health and Care Worker, Global Talent, Student, Graduate, Spouse and Family visas, and Innovator Founder.
Short-stay visas (visitor, 6-month), settlement applications (ILR), and citizenship applications do not carry an IHS requirement.
Exempt categories
Before calculating IHS in your system, you need to evaluate exemption conditions:
def is_ihs_exempt(applicant):
if applicant.visa_type in ["ILR", "British Citizenship"]:
return True
if applicant.role == "NHS_WORKER" and applicant.employer == "NHS_DIRECT":
return True
if applicant.role == "SOCIAL_CARE_WORKER" and applicant.employer_type == "LOCAL_AUTHORITY":
return True
if applicant.funding == "UK_GOVERNMENT_SCHOLARSHIP":
return True
if applicant.status == "DIPLOMATIC_IMMUNITY":
return True
if applicant.visa_type == "ASYLUM" or applicant.has_humanitarian_protection:
return True
return False
The NHS worker exemption is the most complex to implement correctly. It applies at the point of application, not at the point of NHS employment. An employee who joined the NHS after paying IHS on an earlier Skilled Worker visa is not retroactively exempt — this is a frequent source of confusion in HR systems that try to flag exemptions after the fact.
Refund conditions
Two scenarios trigger IHS refunds.
Visa refused: Full refund, automatically processed by the Home Office. No action required from the applicant, though processing typically takes 4–8 weeks.
Early permanent departure: Partial refund for unused complete years. The applicant must apply through the IHS Refund Portal. In system terms:
def calculate_ihs_refund(visa_duration_years, days_used, rate_per_year=1035):
days_remaining = (visa_duration_years * 365) - days_used
complete_years_remaining = int(days_remaining / 365)
return complete_years_remaining * rate_per_year
Only complete remaining years qualify. If 1 year and 200 days remain on a visa, only 1 year is refundable. Build this floor logic carefully — rounding errors here produce incorrect refund estimates shown to users.
Payment flow
The IHS payment is a distinct step in the UKVI online application:
- Applicant completes the visa application form
- Redirected to the IHS payment portal
- IHS is calculated and charged based on visa duration and number of applicants
- Applicant receives an IHS payment reference number (UIV number)
- UIV number is required to complete the main visa application
The UIV number is the handoff point between the IHS system and the main application. If you're building an application tracker, treat the UIV as a required field before the application can be marked as submittable.
IHS rate history
For audit logs, historical cost modelling, or compliance reporting:
| Period | Rate per year |
|---|---|
| 2015 (launch) | £200 |
| 2019 | £400 |
| 2020 | £624 |
| 2023 | £1,035 |
| 2024–2026 | £1,035 (unchanged) |
The rate has increased fivefold since launch. Any system that hard-codes the IHS rate will eventually produce incorrect outputs. Store the rate in a configurable variable, not inline.
Cost model output structure
For employer cost tools or immigration compliance platforms, IHS should be a clearly separated line item:
{
"visa_type": "Skilled Worker",
"visa_duration_years": 5,
"ihs_exempt": false,
"ihs_cost_per_person": 5175,
"dependants": 1,
"dependant_ihs_cost": 5175,
"total_ihs": 10350,
"visa_application_fee": 719,
"total_upfront_cost": 11069
}
Separating IHS from the visa fee matters because they're paid at different stages, refunded under different rules, and sometimes one applies without the other.
Tools like ImmigrationGPT handle structured IHS cost modelling for UK visa applications alongside salary threshold checks and sponsor licence lookups.
This is a technical reference post. UK immigration rules change regularly — always validate against current GOV.UK guidance before shipping compliance-critical logic.
Top comments (0)