<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ImmigrationGPT</title>
    <description>The latest articles on DEV Community by ImmigrationGPT (@immigrationgpt).</description>
    <link>https://dev.to/immigrationgpt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3842898%2F1d2088e2-9afb-4d90-8328-8ecfa55e93a6.png</url>
      <title>DEV Community: ImmigrationGPT</title>
      <link>https://dev.to/immigrationgpt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/immigrationgpt"/>
    <language>en</language>
    <item>
      <title>UK Right to Work Checks 2026: eVisa Verification Logic, IDVT Rules, and the Follow-Up Date Problem HR Systems Ignore</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Thu, 20 Aug 2026 08:07:13 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-right-to-work-checks-2026-evisa-verification-logic-idvt-rules-and-the-follow-up-date-problem-1dhc</link>
      <guid>https://dev.to/immigrationgpt/uk-right-to-work-checks-2026-evisa-verification-logic-idvt-rules-and-the-follow-up-date-problem-1dhc</guid>
      <description>&lt;h1&gt;
  
  
  UK Right to Work Checks 2026: eVisa Verification Logic, IDVT Rules, and the Follow-Up Date Problem HR Systems Ignore
&lt;/h1&gt;

&lt;p&gt;Right to work compliance in 2026 is split across three distinct check types, and most HR systems treat them as one. That conflation is the source of most audit failures.&lt;/p&gt;

&lt;p&gt;This is a technical walkthrough of what valid checks actually require in 2026 — covering eVisa share code flows, IDVT eligibility constraints, and the follow-up date logic that falls through the cracks of nearly every HRIS.&lt;/p&gt;




&lt;h2&gt;
  
  
  Check type 1: Home Office online service (eVisa workers)
&lt;/h2&gt;

&lt;p&gt;Since January 2025, most non-British, non-Irish workers no longer hold physical Biometric Residence Permits. Their immigration status is digital — held in the Home Office eVisa system and viewable via the online right to work service at &lt;code&gt;gov.uk/view-right-to-work&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The verification flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Worker generates a share code through their UKVI account (share codes expire after 90 days)&lt;/li&gt;
&lt;li&gt;Employer enters the share code + worker's date of birth at &lt;code&gt;gov.uk/view-right-to-work&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;System returns: name, photo, immigration status, permission type, expiry date, and any work restriction flags&lt;/li&gt;
&lt;li&gt;Employer downloads or screenshots the result and retains it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What makes this check invalid:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Employer checks an expired share code (the system will return an error, but some operators log "checked" without reading the result)&lt;/li&gt;
&lt;li&gt;Worker on a pending switch — their existing leave has lapsed but the new application is in-time; employer assumes permission continues (it does, under section 3C leave, but only if the in-time application was made before expiry — this needs to be verified, not assumed)&lt;/li&gt;
&lt;li&gt;Employer accepts an expired BRP as evidence for a worker who should have an eVisa&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The output of the online check should be stored with a timestamp matching the pre-employment date. For workers with time-limited permission, the expiry date returned by the system is the date that drives follow-up scheduling — not the document issue date.&lt;/p&gt;




&lt;h2&gt;
  
  
  Check type 2: Manual document check (British and Irish citizens)
&lt;/h2&gt;

&lt;p&gt;British and Irish citizens aren't in the eVisa system. Their check is document-based. Acceptable evidence includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UK/Irish passport (current or expired, for British citizens)&lt;/li&gt;
&lt;li&gt;UK birth certificate or adoption certificate + NI number evidence&lt;/li&gt;
&lt;li&gt;Certificate of registration or naturalisation as British citizen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The check must be in-person (physically present) or via a certified IDVT provider. Video calls are not valid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IDVT (Identity Document Validation Technology)&lt;/strong&gt; applies only to British and Irish citizens. IDVT providers use document scanning + facial comparison to verify identity digitally. The check is valid only if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The provider appears on the certified provider list maintained by DSIT (not a self-certification)&lt;/li&gt;
&lt;li&gt;The employer retains the IDVT provider's confirmation output&lt;/li&gt;
&lt;li&gt;The check is done before the start of employment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a worker is a British national but has a foreign-sounding name and your process defaults to the share code route, that's friction with no compliance value. British nationals don't have share codes for domestic employment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Check type 3: Follow-up checks for time-limited permission
&lt;/h2&gt;

&lt;p&gt;Workers on any visa with an expiry date require a follow-up check. The employer must:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Know the expiry date of the worker's current permission (from the initial check output)&lt;/li&gt;
&lt;li&gt;Run a fresh check before that date using the same method (online service)&lt;/li&gt;
&lt;li&gt;Retain the new output alongside the original&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem in most HRIS setups: the only date field tracked is the "right to work document expiry date" recorded at onboarding. For workers who switch immigration route mid-employment — Graduate visa to Skilled Worker, Student visa to Graduate, Spouse visa with a renewal — the tracked date may not reflect current permission.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The minimum correct data model for a right to work record:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;check_type&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;online_service&lt;/code&gt; / &lt;code&gt;document&lt;/code&gt; / &lt;code&gt;idvt&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;check_date&lt;/td&gt;
&lt;td&gt;Date check was performed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;permission_expiry&lt;/td&gt;
&lt;td&gt;Date permission expires (from check output)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;followup_due&lt;/td&gt;
&lt;td&gt;Scheduled follow-up date (before permission_expiry)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;status&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;valid&lt;/code&gt; / &lt;code&gt;time_limited&lt;/code&gt; / &lt;code&gt;no_restriction&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;check_output_stored&lt;/td&gt;
&lt;td&gt;Boolean or reference to stored output&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;followup_due&lt;/code&gt; field should trigger a workflow no later than 4 weeks before &lt;code&gt;permission_expiry&lt;/code&gt;. Calendaring a follow-up to the expiry date itself is a compliance risk — if the check slips by a day, the worker has been employed without valid RTW permission.&lt;/p&gt;




&lt;h2&gt;
  
  
  Civil penalty scale in 2026
&lt;/h2&gt;

&lt;p&gt;As of February 2024, the maximum civil penalty for employing an illegal worker is &lt;strong&gt;£60,000 per worker&lt;/strong&gt; (up from £20,000). A valid right to work check, performed correctly, provides a statutory excuse — if it fails those validity criteria, the excuse disappears regardless of good faith.&lt;/p&gt;




&lt;p&gt;For verifying whether a prospective employer holds a valid Home Office sponsor licence — a related check for workers and recruiters — &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;immigrationgpt.co.uk&lt;/a&gt; searches the live register.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Information only. Not legal advice. Verify against current Home Office guidance before implementation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>hr</category>
      <category>compliance</category>
    </item>
    <item>
      <title>UK Visa Appeal Deadlines 2026: Administrative Review vs. Tribunal Routes — What Compliance Systems Conflate</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Wed, 19 Aug 2026 08:09:18 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-visa-appeal-deadlines-2026-administrative-review-vs-tribunal-routes-what-compliance-systems-1me3</link>
      <guid>https://dev.to/immigrationgpt/uk-visa-appeal-deadlines-2026-administrative-review-vs-tribunal-routes-what-compliance-systems-1me3</guid>
      <description>&lt;h1&gt;
  
  
  UK Visa Appeal Deadlines 2026: Administrative Review vs. Tribunal Routes — What Compliance Systems Conflate
&lt;/h1&gt;

&lt;p&gt;Most HR and compliance platforms treat "right of appeal" as a binary flag on a visa refusal. In practice, there are at least three distinct post-refusal mechanisms in UK immigration law, each with different deadlines, different eligibility criteria, and different outcomes — and collapsing them into one field creates compliance gaps that can strand employees.&lt;/p&gt;

&lt;p&gt;This post breaks down the actual logic tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Post-Refusal Routes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Administrative Review
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who it applies to:&lt;/strong&gt; Applicants refused under the Points-Based System (Skilled Worker, Student, Global Talent, etc.) who are either in the UK or applied from overseas under an eligible route&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it challenges:&lt;/strong&gt; Caseworking errors only — factual mistakes the Home Office made, not a disagreement with their assessment of the evidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deadline:&lt;/strong&gt; 14 days (in-country) or 28 days (out-of-country) from receiving the decision&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; £80&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome if successful:&lt;/strong&gt; The original decision is withdrawn and reconsidered, not necessarily granted&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. First-tier Tribunal Appeal
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Who it applies to:&lt;/strong&gt; Applicants with an explicit right of appeal stated in their refusal letter — most in-country human rights cases, family visas, EEA cases (legacy), and some other categories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What it challenges:&lt;/strong&gt; Whether the decision was in accordance with immigration rules AND/OR whether it violates human rights (typically Article 8)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deadline:&lt;/strong&gt; 14 days (in-country) or 28 days (out-of-country) from receiving the decision&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost:&lt;/strong&gt; £80 (on-the-papers decision) or £140 (oral hearing)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome if successful:&lt;/strong&gt; Tribunal directs the Home Office to reconsider — a grant is likely but not automatic&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Reapplication
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Not technically a "challenge" to the refusal, but in practice often the fastest path — especially for PBS routes where the original application had document problems rather than caseworking errors&lt;/li&gt;
&lt;li&gt;No deadline, but delay matters if the applicant is in-country and their leave is running out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The compliance gap:&lt;/strong&gt; Systems that model only "appeal: yes/no" conflate routes 1 and 2, miss route 3 as a parallel option, and often get the deadlines wrong by not distinguishing between in-country and out-of-country positions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deadline Logic That's Harder Than It Looks
&lt;/h2&gt;

&lt;p&gt;The 14/28-day windows sound simple. They're not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Day count starts from receipt, not decision date.&lt;/strong&gt; The Home Office sends the decision; the applicant or their representative receives it. If the letter is sent by post and the applicant is abroad, the receipt date may differ significantly from the decision date. HMCTS guidance uses "deemed receipt" rules — but applicants who can document actual receipt of the letter on a later date can sometimes establish a later start point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bank holidays and Saturdays don't extend the deadline&lt;/strong&gt; for administrative review in all cases — but they do for tribunal appeal filing in certain circumstances under the Tribunal Procedure Rules. The distinction matters when a deadline falls on a Sunday or bank holiday.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Out-of-country" is the applicant's position when the decision is received&lt;/strong&gt;, not when the application was made. An applicant who applied in-country but travelled abroad and received the refusal notification while outside the UK may be in the 28-day window even though they applied from inside the UK.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Can and Can't Be Challenged
&lt;/h2&gt;

&lt;p&gt;For systems trying to assess the viability of an administrative review (the most common first step for PBS refusals):&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reviewable errors:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect salary calculation (wrong figure used, incorrect exchange rate applied)&lt;/li&gt;
&lt;li&gt;Misidentification of SOC code on the Certificate of Sponsorship&lt;/li&gt;
&lt;li&gt;Failure to apply the correct version of the immigration rules in force at the time of application&lt;/li&gt;
&lt;li&gt;Failing to request missing information before refusing where policy required this&lt;/li&gt;
&lt;li&gt;Processing a refusal on a document the applicant had actually provided&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not reviewable:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The ECO weighed the evidence and didn't find it credible&lt;/li&gt;
&lt;li&gt;The applicant doesn't meet the rules as correctly applied&lt;/li&gt;
&lt;li&gt;New evidence the applicant wishes to submit that wasn't in the original application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For tribunal appeals, Article 8 grounds are more flexible — they allow proportionality arguments and new evidence — but the success threshold is different: the decision has to be a disproportionate interference with established family or private life, not just wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hearing Timeline Reality in 2026
&lt;/h2&gt;

&lt;p&gt;If an appeal is lodged at the First-tier Tribunal (Immigration and Asylum Chamber), the wait for a hearing is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;6–12 months at most hearing centres&lt;/li&gt;
&lt;li&gt;12–18+ months at high-volume centres (Hatton Cross, Taylor House)&lt;/li&gt;
&lt;li&gt;Faster (sometimes 2–3 months) for out-of-country video hearings, but still subject to delays&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For compliance calendars tracking employee immigration status: a sponsored worker whose appeal is pending can continue working in the UK under Section 3C leave (leave extended by operation of law while an in-time appeal is pending). The right-to-work position during this period is technically valid, but employers must track the appeal status because Section 3C leave terminates if the appeal is withdrawn or decided.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Section 3C leave tracking is a specific failure point in most HR systems.&lt;/strong&gt; The standard right-to-work check confirms that the worker has a document evidencing leave — it doesn't confirm that the underlying appeal is still live. If the appeal is dismissed and the employer isn't notified, the worker's right to work ceases, but the HR system may still show a "valid" record based on the initial check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Architecture for Compliance Tooling
&lt;/h2&gt;

&lt;p&gt;If you're building or auditing a compliance system that handles post-refusal scenarios:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Capture the refusal route explicitly&lt;/strong&gt; — administrative review eligible, tribunal appeal eligible, neither, or both&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store both decision date and receipt date&lt;/strong&gt; — they're different fields&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track in-country vs. out-of-country position at receipt&lt;/strong&gt; — this determines which deadline window applies&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Section 3C leave as a separate leave state&lt;/strong&gt; — with a dependency on appeal outcome, not just the original visa expiry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flag the appeal outcome date&lt;/strong&gt; — and trigger right-to-work re-verification at that point&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For HR teams without bespoke tooling: maintain a manual log of any employees with pending appeals, check appeal status quarterly, and verify right-to-work documents immediately on appeal determination.&lt;/p&gt;




&lt;p&gt;For UK immigration rules, sponsor register data, and policy Q&amp;amp;A, see &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt; — built specifically for UK immigration questions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not legal advice. Always consult an OISC-regulated adviser or SRA-authorised solicitor for case-specific guidance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>hr</category>
      <category>compliance</category>
    </item>
    <item>
      <title>UK Skilled Worker Visa Salary Thresholds 2026: Why Your Eligibility Logic Is Probably Wrong About the Floor</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Tue, 18 Aug 2026 08:08:26 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-skilled-worker-visa-salary-thresholds-2026-why-your-eligibility-logic-is-probably-wrong-about-578p</link>
      <guid>https://dev.to/immigrationgpt/uk-skilled-worker-visa-salary-thresholds-2026-why-your-eligibility-logic-is-probably-wrong-about-578p</guid>
      <description>&lt;h1&gt;
  
  
  UK Skilled Worker Visa Salary Thresholds 2026: Why Your Eligibility Logic Is Probably Wrong About the Floor
&lt;/h1&gt;

&lt;p&gt;The £38,700 baseline is the wrong starting point for salary threshold validation logic. Here's why, and what the correct model looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual rule
&lt;/h2&gt;

&lt;p&gt;Salary eligibility for a Skilled Worker visa in 2026 is: &lt;code&gt;max(£38,700, going_rate[soc_code])&lt;/code&gt;. The going rate isn't an average — it's the median salary for the role's Standard Occupational Classification (SOC) code, as defined by the Home Office.&lt;/p&gt;

&lt;p&gt;If you're building or auditing a compliance system that validates job offers for Skilled Worker eligibility, and you're only checking against a single floor value, you'll pass offers that should fail — specifically any offer between £38,700 and the going rate for that SOC code.&lt;/p&gt;

&lt;h2&gt;
  
  
  SOC code dependency
&lt;/h2&gt;

&lt;p&gt;The going rate lookup requires the correct SOC 2020 code. There are approximately 650 eligible codes for Skilled Worker purposes. Getting the code wrong produces the wrong threshold. The code also determines whether a shortage occupation discount applies (currently 90% of going rate for a subset of codes).&lt;/p&gt;

&lt;p&gt;Complicating factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The same job title can legitimately map to multiple SOC codes depending on duties&lt;/li&gt;
&lt;li&gt;The Home Office publishes the going rate table in appendix form, updated periodically — your lookup data has a publish date that matters&lt;/li&gt;
&lt;li&gt;Employers classify the role; candidates don't control this and often don't know the code assigned&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  New entrant rates
&lt;/h2&gt;

&lt;p&gt;For workers who qualify as "new entrants" (under 26, recent graduates, or switching from Student/Graduate visa), the threshold drops to £30,960 or 70% of the going rate, whichever is higher.&lt;/p&gt;

&lt;p&gt;New entrant status expires — typically at age 26 or after three years of sponsorship. If you're tracking visa compliance across time, this means the applicable threshold for a given worker can change mid-sponsorship. A record that was compliant at issue may require a salary uplift to remain compliant at renewal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What counts as "salary"
&lt;/h2&gt;

&lt;p&gt;The Home Office's salary calculation includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic pay (guaranteed)&lt;/li&gt;
&lt;li&gt;Allowances guaranteed in the employment contract&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It excludes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bonuses, unless guaranteed and unconditional&lt;/li&gt;
&lt;li&gt;Commission&lt;/li&gt;
&lt;li&gt;Overtime&lt;/li&gt;
&lt;li&gt;Pension contributions&lt;/li&gt;
&lt;li&gt;Equity or benefits in kind&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any compliance system that uses "total compensation" or "OTE" as the salary figure will generate false positives. The validation needs to extract and verify only guaranteed base pay plus guaranteed contractual allowances. In practice this requires contract-level data, not just payroll summaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part-time roles
&lt;/h2&gt;

&lt;p&gt;The thresholds apply on an annualised basis regardless of hours. For part-time contracts, the actual annual pay must still meet the threshold — there's no proration. A 0.5 FTE role paying £25,000 actual salary fails, even if the FTE-equivalent is £50,000.&lt;/p&gt;

&lt;p&gt;If you're importing payroll data, use the actual contracted annual salary value, not FTE-normalised figures. These produce different numbers and the distinction matters for compliance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rate table staleness
&lt;/h2&gt;

&lt;p&gt;The Home Office going rates were last substantially updated in April 2024. Since then they've remained stable, but this isn't guaranteed to persist. Any hardcoded going rate values in an eligibility system become a liability when the table is refreshed. Rate data should be treated as a versioned lookup with a publication date, not a static constant.&lt;/p&gt;

&lt;p&gt;Build in a check against the appendix version, not just the values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical validation checklist
&lt;/h2&gt;

&lt;p&gt;Before a Certificate of Sponsorship is issued:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm SOC 2020 code assignment for the specific role and duties&lt;/li&gt;
&lt;li&gt;Look up going rate from the current published Home Office appendix&lt;/li&gt;
&lt;li&gt;Apply threshold = &lt;code&gt;max(£38,700, going_rate)&lt;/code&gt; — or new entrant rate if applicable&lt;/li&gt;
&lt;li&gt;Verify that &lt;code&gt;basic_pay + guaranteed_allowances &amp;gt;= threshold&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Confirm the salary figure is an actual annual amount (not FTE-normalised for part-time workers)&lt;/li&gt;
&lt;li&gt;Check whether shortage occupation rate applies for the SOC code&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For sponsor licence status verification alongside salary checks, &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt; has a searchable register of the 125,000+ licensed UK sponsors — useful for cross-referencing employer compliance status when validating a job offer end-to-end.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where eligibility systems break
&lt;/h2&gt;

&lt;p&gt;The most common failure point isn't the floor value — it's SOC code selection. Because employers assign codes and there's no automated validation against a job description, the same role generates different eligibility outcomes depending on who does the coding. This is especially common in roles that span multiple disciplines (e.g., a data analyst who manages a team might be SOC 2425 or 1131 depending on the primary duties).&lt;/p&gt;

&lt;p&gt;Secondary failure modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New entrant threshold transitions missed — no trigger on age 26 or three-year mark&lt;/li&gt;
&lt;li&gt;Commission-heavy roles where total pay meets the threshold but guaranteed base doesn't&lt;/li&gt;
&lt;li&gt;Salary changes during sponsorship that drop below threshold and aren't flagged before renewal&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;UK immigration policy changes periodically. Verify against the current Home Office published guidance before implementation.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>hr</category>
      <category>compliance</category>
    </item>
    <item>
      <title>UK Spouse Visa 2026: English Language Evidence Rules, Exemption Logic, and What Compliance Systems Overlook</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Mon, 17 Aug 2026 08:10:34 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-spouse-visa-2026-english-language-evidence-rules-exemption-logic-and-what-compliance-systems-4nic</link>
      <guid>https://dev.to/immigrationgpt/uk-spouse-visa-2026-english-language-evidence-rules-exemption-logic-and-what-compliance-systems-4nic</guid>
      <description>&lt;p&gt;The UK Spouse visa English language requirement is more conditional than most compliance checklists reflect. Systems that model it as a single "language requirement met: yes/no" field build in systematic failure points. Here's the actual conditional structure and what evidence each branch requires.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Requirement: A2 CEFR via One of Three Routes
&lt;/h2&gt;

&lt;p&gt;The applicant must demonstrate English language ability at CEFR A2 level or above through exactly one of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An approved Secure English Language Test (SELT) from an approved provider, taken at an approved testing centre&lt;/li&gt;
&lt;li&gt;A degree qualification assessed as taught or researched in English&lt;/li&gt;
&lt;li&gt;Nationality from a majority English-speaking country (Appendix ENL)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each route has distinct sub-conditions. Treating them as interchangeable causes refusals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Route 1: SELT Evidence
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Approved providers as of 2026:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trinity College London (GESE, ISE)&lt;/li&gt;
&lt;li&gt;LanguageCert International ESOL SELT&lt;/li&gt;
&lt;li&gt;Pearson (PTE Academic UKVI)&lt;/li&gt;
&lt;li&gt;PSI Services (IELTS for UKVI Life Skills)&lt;/li&gt;
&lt;li&gt;Ascentis&lt;/li&gt;
&lt;li&gt;NOCN, NCFE, Oxford International Digital Institute (OIDI)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Critical implementation point:&lt;/strong&gt; The test must be taken at a UK Visas and Immigration approved SELT centre. IELTS Academic and IELTS for UKVI are different products from the same organisation. IELTS Academic taken at a university testing centre does not satisfy the Spouse visa requirement regardless of score. Only IELTS for UKVI at an approved SELT venue qualifies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expiry tracking requirement:&lt;/strong&gt; SELT results are typically valid for two years from test date. A compliance system storing English language status must store the test date — not just a boolean pass. An expired certificate invalidates the evidence route even if the score was sufficient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level boundary:&lt;/strong&gt; For initial Spouse visa entry, A2 (speaking and listening) is the threshold. When the applicant later applies for ILR, the requirement steps up to B1 across speaking, listening, reading, and writing — evidenced by a B1-level SELT and the Life in the UK Test. These are separate requirements. Systems that pre-populate ILR English language status from the initial entry SELT check need to flag the level change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Route 2: Academic Qualification
&lt;/h2&gt;

&lt;p&gt;Conditions that must all be satisfied:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The qualification is at bachelor's degree level or higher&lt;/li&gt;
&lt;li&gt;The degree was taught or researched in English&lt;/li&gt;
&lt;li&gt;The awarding institution is recognised&lt;/li&gt;
&lt;li&gt;If the institution is outside the UK: a UK ENIC (formerly UK NARIC) confirmation letter or certificate confirms English-medium instruction&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A degree from a non-English-speaking country does not automatically qualify even if instruction was primarily in English. UK ENIC assessment is required, and it has its own processing time — typically two to four weeks for standard service. This is relevant for application timeline planning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Form design implication:&lt;/strong&gt; An eligibility check cannot simply ask "Do you hold a bachelor's degree?" It needs: degree level, awarding institution country, language of instruction, and whether UK ENIC confirmation exists for non-UK institutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What doesn't qualify:&lt;/strong&gt; A degree with some English-medium modules from an institution in a non-English-speaking country, without UK ENIC confirmation. The Home Office requires documentary evidence — not self-attestation of English proficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Route 3: Appendix ENL Nationality Exemption
&lt;/h2&gt;

&lt;p&gt;Majority English-speaking countries in Appendix ENL (2026):&lt;/p&gt;

&lt;p&gt;Antigua and Barbuda, Australia, The Bahamas, Barbados, Belize, Canada, Dominica, Grenada, Guyana, Jamaica, Malta, New Zealand, St Kitts and Nevis, St Lucia, St Vincent and the Grenadines, Trinidad and Tobago, United States of America&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nationality, not residency:&lt;/strong&gt; A French national who has lived in Canada for 20 years is not exempt. Only nationals of ENL countries qualify. Residency, citizenship-in-progress, or long-term settlement in an ENL country does not confer the exemption.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dual nationality:&lt;/strong&gt; If an applicant holds multiple nationalities and one is from an ENL country, the exemption applies. Your eligibility form should accept multiple nationality inputs and test each against the ENL list — a single nationality field misses this case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Switching Route: No Exceptions
&lt;/h2&gt;

&lt;p&gt;Applicants already in the UK (on a student visa, graduate visa, or other leave) switching to a Family visa face the same English language requirement with no modifications. There is no exemption for people who have studied in English in the UK for years.&lt;/p&gt;

&lt;p&gt;International students switching to a Spouse/Partner visa often assume their UK degree satisfies the requirement. It does — but only if they apply for UK ENIC confirmation of English-medium instruction when the degree is from a non-UK institution. A UK degree from a UK institution qualifies directly under Route 2 without ENIC assessment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Failure Patterns
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Wrong test product:&lt;/strong&gt; Accepting IELTS Academic where IELTS for UKVI is required. The product distinction is not always surfaced in compliance checklists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Missing expiry dates:&lt;/strong&gt; Treating SELT status as static. A certificate valid at initial entry may be expired at extension or ILR stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single nationality field:&lt;/strong&gt; Not detecting ENL exemption for dual nationals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Degree route without ENIC gate:&lt;/strong&gt; Marking Route 2 as satisfied on degree possession alone, without checking for UK ENIC confirmation of English-medium instruction for non-UK institutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conflating initial and ILR thresholds:&lt;/strong&gt; Pre-populating ILR English language readiness from Route 1 A2 evidence without flagging that B1 is required at ILR stage.&lt;/p&gt;

&lt;p&gt;These are preventable refusals. The documentation gaps are identifiable at the pre-submission stage if the conditional logic is modelled correctly.&lt;/p&gt;

&lt;p&gt;For how these rules fit into the full Spouse visa eligibility picture, see &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;For informational purposes only. Not legal advice. Consult a regulated immigration adviser for case-specific guidance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>career</category>
      <category>hr</category>
    </item>
    <item>
      <title>UK Visa Refusal Triggers 2026: Pre-Submission Validation Logic for HR and Compliance Systems</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Fri, 14 Aug 2026 08:11:32 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-visa-refusal-triggers-2026-pre-submission-validation-logic-for-hr-and-compliance-systems-4g6b</link>
      <guid>https://dev.to/immigrationgpt/uk-visa-refusal-triggers-2026-pre-submission-validation-logic-for-hr-and-compliance-systems-4g6b</guid>
      <description>&lt;p&gt;UK visa applications fail for a consistent set of reasons — most of them checkable programmatically before submission. This is a reference for HR teams and developers building eligibility or document-checking tooling. It covers the dominant refusal patterns, the underlying rules, and how to surface risk before an application is submitted.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Financial evidence timestamp validation
&lt;/h2&gt;

&lt;p&gt;The Immigration Rules (Appendix FM-SE, paragraph 1A) require that funds be held continuously for 28 days, with the statement period ending no more than 28 days before the date of application. Most systems check the balance. Few check the timestamp validity window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Validation logic:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_bank_statement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;statement_end_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;funds_available_from&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;submission_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;required_days&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;window_ok&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;submission_date&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;statement_end_date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;28&lt;/span&gt;
    &lt;span class="n"&gt;period_ok&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;statement_end_date&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;funds_available_from&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;required_days&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;window_valid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;window_ok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;holding_period_valid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;period_ok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;valid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;window_ok&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;period_ok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;errors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;window_ok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Statement end date &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;statement_end_date&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; is more than 28 days before submission &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;submission_date&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;period_ok&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Funds held for fewer than &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;required_days&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; days before statement end&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
            &lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;condition&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Edge cases to handle:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Joint accounts: the total balance of a joint account is treated as 50% attributable to the applicant by default. Your validation layer should prompt for clarification when a joint account is used.&lt;/li&gt;
&lt;li&gt;Statement format: UKVI requires statements from financial institutions that meet specific format requirements. A checkbox confirming the source is an official bank statement (not a self-generated PDF) should be part of the document ingestion flow.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Salary threshold and CoS consistency checks
&lt;/h2&gt;

&lt;p&gt;The Skilled Worker visa requires meeting two salary thresholds simultaneously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The general threshold (£38,700 for most roles in 2026)&lt;/li&gt;
&lt;li&gt;The going rate for the specific SOC code (from Appendix Skilled Occupations)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The failure pattern: the CoS records a total compensation figure that includes non-guaranteed allowances (bonuses, commission), while payslip data shows a lower base salary. UKVI compares these and will refuse if the guaranteed base doesn't meet the threshold independently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data sources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOC going rates: &lt;a href="https://www.gov.uk/guidance/immigration-rules/immigration-rules-appendix-skilled-occupations" rel="noopener noreferrer"&gt;Appendix Skilled Occupations&lt;/a&gt; — GOV.UK, updated on policy change&lt;/li&gt;
&lt;li&gt;General threshold: &lt;a href="https://www.gov.uk/guidance/immigration-rules/immigration-rules-appendix-skilled-worker" rel="noopener noreferrer"&gt;Appendix Skilled Worker&lt;/a&gt; — changes less frequently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Validation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_skilled_worker_salary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;soc_code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;cos_annual_salary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;monthly_base_payslip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;soc_going_rates&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# {soc_code: min_annual_salary}
&lt;/span&gt;    &lt;span class="n"&gt;general_threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;38700.0&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;annualised_base&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;monthly_base_payslip&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;
    &lt;span class="n"&gt;going_rate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soc_going_rates&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;soc_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;required&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;going_rate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;general_threshold&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;meets_threshold&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;annualised_base&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cos_base_match&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cos_annual_salary&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;annualised_base&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# tolerance for rounding
&lt;/span&gt;        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required_salary&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;annualised_base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;annualised_base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;warnings&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CoS salary includes non-guaranteed allowances&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cos_annual_salary&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;annualised_base&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Base salary £&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;annualised_base&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; below required £&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;required&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;annualised_base&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;required&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt; salary threshold lookup exposes the current going rates and general threshold via a query interface, with data ingested weekly from GOV.UK.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. English language certificate expiry
&lt;/h2&gt;

&lt;p&gt;Valid English language tests (IELTS, PTE Academic, SELT providers) have a two-year validity window from the test date to the submission date. Not the decision date — the submission date.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_english_cert_valid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;test_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;submission_date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;submission_date&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;test_date&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;days&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;730&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This check is trivially implementable. It catches a category of refusal that generates a high volume of avoidable failures, particularly for Student and Family visa applications. Surface it as a hard blocker on the submission flow, not a warning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Additional check:&lt;/strong&gt; confirm the test provider is on the current Appendix SELT approved list. The list changes when UKVI adds or removes providers. Pull from &lt;a href="https://www.gov.uk/guidance/immigration-rules/immigration-rules-appendix-selt" rel="noopener noreferrer"&gt;Appendix SELT&lt;/a&gt; directly; do not hardcode.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Non-disclosure detection
&lt;/h2&gt;

&lt;p&gt;UKVI maintains a consolidated immigration decision record per individual. Any discrepancy between the applicant's declarations and that record — previous refusals, overstays, curtailed leave — is flagged as potential deception, not a standard refusal. The outcome can be a 10-year re-entry ban under paragraph 9.8.&lt;/p&gt;

&lt;p&gt;You cannot query UKVI's records via API. The check must be human-in-the-loop, but it should be an explicit, required step with confirmation rather than a buried checkbox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation pattern:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;DisclosureCheckpoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;required_disclosures&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;previous_uk_visa_refusals&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;previous_overstay&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;curtailed_leave&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;deportation_or_removal&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;criminal_convictions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;applicant_responses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="n"&gt;missing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="n"&gt;field&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;field&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;required_disclosures&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;field&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;applicant_responses&lt;/span&gt;
        &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;missing&lt;/span&gt;  &lt;span class="c1"&gt;# Surface these as blocking incomplete fields
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your system is HR-facing (managing employee immigration), the HR file should record any curtailment events as they happen — e.g., when an employee's prior employer lost their sponsor licence. That data needs to surface when the employee makes a future application.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Relationship evidence gap detection (family visa applications)
&lt;/h2&gt;

&lt;p&gt;For spouse and partner visa applications, UKVI caseworkers are trained to identify inconsistencies between different pieces of evidence. Automated pre-checks can surface structural gaps before legal review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gap detection logic:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_relationship_evidence&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;gaps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cohabitation_proof&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;gaps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No cohabitation evidence (tenancy agreement, utility bills, bank statements showing same address)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;separation_period_contact&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;period_lived_apart&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;gaps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Periods of separation declared but no contact evidence (call logs, messages) provided&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;joint_financial_commitment&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;gaps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No joint financial commitment evidence (joint account, shared bills)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;stated_meeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;stated_meeting_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;earliest_contact_log&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;evidence_bundle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;earliest_contact_evidence_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;stated_meeting&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;earliest_contact_log&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;earliest_contact_log&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;stated_meeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;gaps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Inconsistency: contact evidence starts &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;earliest_contact_log&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;earlier than stated meeting date &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;stated_meeting&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;gaps&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are pattern flags, not legal determinations. Output should go to a legal reviewer, not direct to UKVI.&lt;/p&gt;




&lt;h2&gt;
  
  
  Data sources summary
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data point&lt;/th&gt;
&lt;th&gt;GOV.UK source&lt;/th&gt;
&lt;th&gt;Update trigger&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SOC going rates&lt;/td&gt;
&lt;td&gt;Appendix Skilled Occupations&lt;/td&gt;
&lt;td&gt;Policy change (typically post-Budget)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;General salary threshold&lt;/td&gt;
&lt;td&gt;Appendix Skilled Worker&lt;/td&gt;
&lt;td&gt;Policy change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approved SELT providers&lt;/td&gt;
&lt;td&gt;Appendix SELT&lt;/td&gt;
&lt;td&gt;Provider add/remove decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sponsor licence register&lt;/td&gt;
&lt;td&gt;UKVI CSV (published weekly Thursdays)&lt;/td&gt;
&lt;td&gt;Weekly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Financial requirements&lt;/td&gt;
&lt;td&gt;Appendix FM-SE&lt;/td&gt;
&lt;td&gt;Policy change&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pull all of these directly from GOV.UK source URLs. Third-party aggregators introduce lag — and in immigration compliance, stale data creates liability.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;General information only. Not legal advice. For regulatory compliance, consult a qualified immigration solicitor.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>career</category>
      <category>hr</category>
    </item>
    <item>
      <title>UK Points-Based Immigration 2026: The Salary Floor Stack That Breaks Most Eligibility Checks</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Thu, 13 Aug 2026 08:21:11 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-points-based-immigration-2026-the-salary-floor-stack-that-breaks-most-eligibility-checks-g41</link>
      <guid>https://dev.to/immigrationgpt/uk-points-based-immigration-2026-the-salary-floor-stack-that-breaks-most-eligibility-checks-g41</guid>
      <description>&lt;p&gt;Most eligibility tools for the UK Skilled Worker visa check a single salary threshold. The actual Home Office decision involves a salary floor stack with three separate layers — and failing any one of them produces the same refusal, even if the applicant passed the mandatory points total.&lt;/p&gt;

&lt;p&gt;This post documents the stack, because it keeps coming up when HR systems produce incorrect eligibility verdicts.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 1: The National Minimum Salary Threshold
&lt;/h2&gt;

&lt;p&gt;Since April 2024, the minimum salary for a Skilled Worker visa is £38,700 per year (for most roles) or the relevant going rate — whichever is higher. Before that it was £26,200 (and briefly £25,600 before that).&lt;/p&gt;

&lt;p&gt;Simple enough. A salary input above £38,700 clears Layer 1. Most eligibility checkers stop here.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 2: The SOC-Specific Going Rate
&lt;/h2&gt;

&lt;p&gt;The Home Office publishes a going rate for each Standard Occupational Classification code eligible for the Skilled Worker route. These rates are set based on UK labour market data and are updated periodically.&lt;/p&gt;

&lt;p&gt;For many SOC codes, the going rate is below £38,700 — so Layer 1 dominates. But for approximately 30–40 SOC codes, the going rate exceeds £38,700. When that happens, the going rate becomes the effective salary floor.&lt;/p&gt;

&lt;p&gt;Example current going rates (2026):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOC 2136 (Programmers and software development professionals): £40,800&lt;/li&gt;
&lt;li&gt;SOC 1135 (Financial managers and directors): £47,700&lt;/li&gt;
&lt;li&gt;SOC 2211 (Medical practitioners): varies, often well above £38,700 (handled under separate NHS frameworks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A salary of £42,000 clears Layer 1. If the applicant is sponsored under SOC 1135, it fails Layer 2.&lt;/p&gt;

&lt;p&gt;HR systems that compare only against £38,700 will mark this applicant as eligible. They won't be.&lt;/p&gt;




&lt;h2&gt;
  
  
  Layer 3: Tradeable Points Salary Reductions
&lt;/h2&gt;

&lt;p&gt;There's a downward exception in the other direction: tradeable points allow salary reduction in certain circumstances.&lt;/p&gt;

&lt;p&gt;If a role is in a shortage occupation, an applicant can be paid 80% of the going rate (and 80% of £38,700 where that applies). If a role is with a recognised research body or a PhD-level job, similar reductions apply.&lt;/p&gt;

&lt;p&gt;So the same salary might be ineligible under a standard SOC code, eligible under a shortage occupation exception.&lt;/p&gt;

&lt;p&gt;The shortage occupation list in 2026 is not the same as it was in 2023 (it was significantly revised). HR systems that cached the old list will produce wrong verdicts for roles that were removed from the shortage occupation designation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The SOC Code Mapping Problem
&lt;/h2&gt;

&lt;p&gt;Underneath all of this is a categorisation problem that breaks the salary check before it starts.&lt;/p&gt;

&lt;p&gt;SOC codes are taxonomic — they describe what a worker does, not what a company calls the role. Many real job titles map plausibly to two or three different SOC codes. Whether SOC 2135 (IT business analysts) or SOC 2136 (Programmers) is more appropriate often depends on how the actual duties split.&lt;/p&gt;

&lt;p&gt;If a sponsor assigns SOC 2135 when SOC 2136 is more accurate (or vice versa), the going rate comparison uses the wrong baseline. Beyond that, some SOC codes are entirely ineligible for the Skilled Worker route — if a sponsor assigns one of those by mistake, the mandatory points check fails ("job doesn't meet the skill level requirement") even if the actual duties are skilled.&lt;/p&gt;

&lt;p&gt;Eligibility logic that takes SOC code as an input without validating it against the eligibility list will produce confident wrong answers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical Implications for HR Compliance Systems
&lt;/h2&gt;

&lt;p&gt;A correct Skilled Worker eligibility check needs to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validate the SOC code against the current eligible occupation list&lt;/li&gt;
&lt;li&gt;Look up the going rate for that SOC code&lt;/li&gt;
&lt;li&gt;Compare the salary against &lt;code&gt;max(£38,700, going_rate)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Check if the role is on the shortage occupation list; if so, apply the 80% reduction to the effective floor&lt;/li&gt;
&lt;li&gt;Note whether PhD or research-body tradeable points apply&lt;/li&gt;
&lt;li&gt;Flag any salary that passes the national threshold but fails the going rate — these are the cases most likely to produce incorrect results in legacy systems&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The going rate and shortage occupation list are published by the Home Office in the official immigration salary list guidance document. As of 2026, the most recent version is the one that accompanied the April 2024 reforms. It's been updated once since. If your system is using a hardcoded table and hasn't been refreshed, it's probably wrong on at least some SOC codes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt; provides a tool for checking employer sponsor status and current salary thresholds by SOC code, which is useful for teams building right-to-work compliance into HR systems.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is reference information, not legal advice. For specific compliance situations, consult a qualified UK immigration adviser.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>career</category>
      <category>hr</category>
    </item>
    <item>
      <title>UK Family Visa Financial Requirements 2026: MIR Logic, Savings Top-Up Calculations, and What HR Systems Need to Flag</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Wed, 12 Aug 2026 08:08:04 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-family-visa-financial-requirements-2026-mir-logic-savings-top-up-calculations-and-what-hr-115d</link>
      <guid>https://dev.to/immigrationgpt/uk-family-visa-financial-requirements-2026-mir-logic-savings-top-up-calculations-and-what-hr-115d</guid>
      <description>&lt;p&gt;UK family visas are often treated as a soft compliance category — the applicant is abroad, the route is personal, and HR teams assume it's the employee's problem to sort. That's changing. Where a Skilled Worker's right to work depends on continued sponsorship, a refused dependent visa for a spouse or child creates retention risk that lands back on HR. Understanding the financial eligibility logic is increasingly part of competent workforce immigration management.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Current MIR Threshold
&lt;/h2&gt;

&lt;p&gt;The minimum income requirement (MIR) for a UK spouse or unmarried partner visa is &lt;strong&gt;£29,000 gross per year&lt;/strong&gt;, as of April 2024. This replaced the £18,600 threshold that had been frozen since 2012. A further phased increase to £34,500 was announced under the previous government but has been paused; £29,000 is the operative figure for applications submitted now.&lt;/p&gt;

&lt;p&gt;The threshold applies to the UK-based sponsor — the settled or pre-settled person or British citizen already in the country. Income from the applicant abroad does not count.&lt;/p&gt;

&lt;h2&gt;
  
  
  Income Sources: What UKVI Accepts
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Salaried employment
&lt;/h3&gt;

&lt;p&gt;The cleanest path. UKVI calculates from the six months of payslips immediately preceding the application. The annualised rate is compared to £29,000. If the sponsor started a new job within the reference window, the calculation uses actual earnings multiplied to an annual equivalent — but only if that employment is continuing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key constraint:&lt;/strong&gt; the employment must be expected to continue after the decision date. A fixed-term contract ending before the decision is a problem. Caseworkers will check termination dates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-employment
&lt;/h3&gt;

&lt;p&gt;Assessed from the most recent full HMRC self-assessment year. This creates a lag: someone who became self-employed in June 2025 cannot rely on that income for an application before April 2027 (when the 2025-26 tax year closes). Applications based on self-employment require SA302 or equivalent HMRC documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Savings top-up
&lt;/h3&gt;

&lt;p&gt;Where salaried income falls below £29,000, UKVI permits savings to fill the gap — but not at parity. The formula: for every £1 of annual income shortfall below the threshold, the applicant must hold £2.50 in qualifying savings. Those savings must have been held continuously for the six months immediately before application.&lt;/p&gt;

&lt;p&gt;Example: a sponsor earning £25,000 has a £4,000 annual shortfall. Required savings: £4,000 × 2.5 = &lt;strong&gt;£10,000&lt;/strong&gt;, held for six months, in accounts they control and can demonstrate ownership of.&lt;/p&gt;

&lt;p&gt;Savings in joint accounts are permitted but require evidence that the funds originate from the sponsor, not a third party. UKVI's guidance on this is vague enough that caseworkers apply it inconsistently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-qualifying income
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cryptocurrency or investment returns: not accepted&lt;/li&gt;
&lt;li&gt;Rental income: accepted only with formal tenancy agreement evidence and documented payment history&lt;/li&gt;
&lt;li&gt;Income from outside the UK: excluded entirely&lt;/li&gt;
&lt;li&gt;Pension income: accepted if received in the UK and ongoing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Child Dependants: Threshold Uplift
&lt;/h2&gt;

&lt;p&gt;When children are included in the application — either simultaneously or as dependants added to a future leave-to-remain — the threshold increases:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Family composition&lt;/th&gt;
&lt;th&gt;Gross income required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sponsor + 1 partner&lt;/td&gt;
&lt;td&gt;£29,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+ 1 child&lt;/td&gt;
&lt;td&gt;£32,800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+ 2 children&lt;/td&gt;
&lt;td&gt;£35,200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+ 3 children&lt;/td&gt;
&lt;td&gt;£37,600&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each additional child beyond the second adds £2,400.&lt;/p&gt;

&lt;p&gt;For children applied for separately after a partner has already entered the UK, the assessment shifts to an adequacy test (no public funds, adequate maintenance and accommodation) rather than the fixed threshold. Most multi-child applications are made jointly at the outset, so the table above applies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adult Dependent Relative Route: Different Logic Entirely
&lt;/h2&gt;

&lt;p&gt;The ADR route — parents and grandparents of British citizens, those with ILR, or those on most long-term visas — does not use the MIR framework. Instead, UKVI requires two things simultaneously:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The relative requires long-term personal care due to illness, disability, or age&lt;/li&gt;
&lt;li&gt;That care is not available — or not available to the required standard — in the relative's country of residence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second limb is where almost all refusals happen. "Not available" does not mean "more expensive" or "inconvenient." It means structurally unavailable. In practice, UKVI's caseworkers will check whether paid care services exist in the applicant's country, and if they do, will refuse on that basis regardless of cost.&lt;/p&gt;

&lt;p&gt;There is no fixed financial threshold for ADR, but the sponsor must demonstrate they can support and accommodate the relative without public funds. The assessment is holistic: UKVI looks at income, savings, housing capacity, and the projected ongoing care costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Failure Points for HR Flagging
&lt;/h2&gt;

&lt;p&gt;If your workforce includes Skilled Workers who may be applying for family visas, these are the scenarios worth flagging proactively:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Salary recently increased to just above £29,000:&lt;/strong&gt; UKVI calculates from payslips, not the contract rate. If a pay rise happened recently, confirm whether six months of qualifying payslips exist at the new rate, or whether a savings top-up will be needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recent job change:&lt;/strong&gt; New employer = new payroll reference period. If the employee started within the last six months, the calculation uses actual earnings from the new employment only — not blended across employers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fixed-term contract ending within 12 months:&lt;/strong&gt; UKVI may refuse if there's no demonstrable expectation of continued employment beyond the decision date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Income from abroad:&lt;/strong&gt; Employees recently returned from an overseas posting will have a proportion of their recent income disqualified. The £29,000 is from UK earnings only.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for Workforce Planning
&lt;/h2&gt;

&lt;p&gt;A refused spouse or dependent visa does not directly affect the sponsored worker's own visa. But the practical impact — a partner or child stuck abroad — affects retention in ways that show up in attrition data, not immigration compliance reports. HR teams that proactively check financial eligibility for employees they know are planning family applications reduce last-minute escalations significantly.&lt;/p&gt;

&lt;p&gt;The documentation requirements for an MIR application are not complex but are mechanical and specific. Payslips, bank statements, employer letters confirming ongoing employment — all must be assembled in exact form. Common errors include sending bank statements that predate the six-month savings window, or omitting the employer's company registration number from the letter.&lt;/p&gt;

&lt;p&gt;For sponsor licence verification and up-to-date immigration tools, see &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;immigrationgpt.co.uk&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article is for general information and does not constitute legal advice. Verify current rules on GOV.UK or consult a regulated immigration adviser for specific applications.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>career</category>
      <category>hr</category>
    </item>
    <item>
      <title>UK Sponsor Licence Register 2026: What the CSV Actually Contains, and Where Verification Systems Break</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Tue, 11 Aug 2026 11:28:01 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-sponsor-licence-register-2026-what-the-csv-actually-contains-and-where-verification-systems-4ahf</link>
      <guid>https://dev.to/immigrationgpt/uk-sponsor-licence-register-2026-what-the-csv-actually-contains-and-where-verification-systems-4ahf</guid>
      <description>&lt;p&gt;The UK Register of Licensed Sponsors is public, free, and updated daily. If you're building anything in the HR or compliance space that touches right-to-work or visa sponsorship — or if your team makes decisions based on it manually — you should understand what the data actually looks like and where it fails.&lt;/p&gt;

&lt;p&gt;Most implementations I've seen treat the register as a ground truth. It isn't, and the edge cases where it isn't are exactly the ones that create compliance risk.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the data structure looks like
&lt;/h2&gt;

&lt;p&gt;The register ships as two CSV files — not one:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Worker route CSV&lt;/strong&gt; — covers Skilled Worker, Senior or Specialist Worker, Scale-up Worker, International Sportsperson, Minister of Religion, International Agreement (worker)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Temporary Worker route CSV&lt;/strong&gt; — covers Creative Worker, Charity Worker, Religious Worker, Seasonal Worker, Government Authorised Exchange, International Agreement (temporary)&lt;/p&gt;

&lt;p&gt;Each row contains five fields: &lt;code&gt;Organisation Name&lt;/code&gt;, &lt;code&gt;Town/City&lt;/code&gt;, &lt;code&gt;County&lt;/code&gt;, &lt;code&gt;Type &amp;amp; Rating&lt;/code&gt;, &lt;code&gt;Route&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That's it. No Companies House number. No VAT registration. No date of licence issue. No record of how many Certificates of Sponsorship the employer has issued or how many remain in their annual allocation. No contact details.&lt;/p&gt;

&lt;p&gt;The absence of any unique persistent identifier — something that maps to a canonical company record — is the most significant structural problem for any system that tries to do automated matching rather than manual lookup.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "Type &amp;amp; Rating" actually means
&lt;/h2&gt;

&lt;p&gt;An employer can hold multiple routes simultaneously, and they'll appear as multiple rows with the same organisation name. An entry for "Acme Technologies UK Limited" might appear twice: once with &lt;code&gt;Skilled Worker / A&lt;/code&gt; and once with &lt;code&gt;Temporary Worker / A&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Rating A is the standard status. Rating B means the employer has active compliance concerns and is on an improvement plan — but they can still issue CoS certificates. A B-rating doesn't block sponsorship. Only suspension or revocation does.&lt;/p&gt;

&lt;p&gt;The revoked-sponsors file is a separate download from the Home Office, not included in the main register CSVs. A system that only processes the active register returns a clean result for an employer whose licence was revoked yesterday, if the revoked list hasn't been synced. That's not a theoretical edge case — the daily update cycle creates a real window.&lt;/p&gt;




&lt;h2&gt;
  
  
  Update timing and what "daily" means in practice
&lt;/h2&gt;

&lt;p&gt;The Home Office updates on working days, typically before 10am UK time. The exact update time isn't published. A revocation processed on a Friday afternoon won't appear in the register until Monday morning — roughly 65 hours.&lt;/p&gt;

&lt;p&gt;During that window, querying the active register gives a positive result for a suspended employer. If your system makes automated onboarding decisions based on register status, you need to account for this lag explicitly: a clean result isn't evidence of current status, it's evidence of status as of the last update.&lt;/p&gt;

&lt;p&gt;For compliance audit purposes, recording the timestamp of every register check — and flagging results more than 24 hours old as potentially stale — is the bare minimum.&lt;/p&gt;




&lt;h2&gt;
  
  
  The name-matching problem
&lt;/h2&gt;

&lt;p&gt;The register uses the name as recorded with the Home Office, which may differ from the Companies House name, the trading name, and the name the employer uses in job adverts. All three can diverge.&lt;/p&gt;

&lt;p&gt;"Acme UK Technology Limited" and "Acme Technologies UK Ltd" could be the same legal entity with a different registered name, or two different entities. The register gives you no way to distinguish without external data.&lt;/p&gt;

&lt;p&gt;Building reliable automated matching against the register requires:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Normalising capitalisation, punctuation, and whitespace&lt;/li&gt;
&lt;li&gt;Stripping legal suffixes (Ltd, Limited, PLC, LLP, LTD, plc) before matching, then re-checking with them included&lt;/li&gt;
&lt;li&gt;Fuzzy matching with a confidence threshold — typically 0.85+ on a string similarity metric&lt;/li&gt;
&lt;li&gt;Cross-referencing &lt;code&gt;Town/City&lt;/code&gt; when multiple entries match the normalised name&lt;/li&gt;
&lt;li&gt;Flagging anything below the confidence threshold for manual review rather than assuming clean&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The proper fix is a Companies House API integration that resolves a legal entity number, which you can then use to look up the registered name precisely and match against the register without fuzzy logic. Most teams don't build this, and the fuzzy match fails loudly on hyphenated names, Welsh entities, and group subsidiaries.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's missing from the data that matters operationally
&lt;/h2&gt;

&lt;p&gt;Two things practitioners ask about most often that aren't in the register:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CoS allocation remaining.&lt;/strong&gt; The Home Office assigns each sponsor an annual quota of unrestricted CoS. The register doesn't show allocation used or remaining. An A-rated employer with zero CoS left looks identical to one with 200 remaining. The only way to know is to ask the employer directly, or check with a solicitor who has access to their SMS (Sponsor Management System) records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Licence age.&lt;/strong&gt; No issue date is published. A two-week-old licence holder appears the same as a six-year licence holder. Licence age is a reasonable proxy for compliance maturity — the Home Office's compliance visit programme targets newer sponsors disproportionately.&lt;/p&gt;




&lt;h2&gt;
  
  
  Practical implementation notes
&lt;/h2&gt;

&lt;p&gt;If you're consuming the register programmatically — for example, to verify employers in a job board, HR platform, or compliance dashboard — two things most implementations skip:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dual-list checking.&lt;/strong&gt; Every query should check both the active register and the revoked list. Positive on active + positive on revoked simultaneously can happen during a revocation in progress (the active list update lags the revoked list). This is the edge case that creates actual liability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time-bounded result caching.&lt;/strong&gt; Cache register lookups, but expire them within 24 hours. A stale Active result from three days ago is not a compliance-grade check.&lt;/p&gt;

&lt;p&gt;A search interface over both the active register and the revoked-sponsors list is available at &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;immigrationgpt.co.uk&lt;/a&gt; for manual lookups. For automated or bulk use, processing the raw CSVs with the considerations above is the right approach.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;UK immigration rules and UKVI policies change regularly. Verify current requirements directly with the Home Office or a qualified immigration adviser before making compliance decisions.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>hr</category>
      <category>career</category>
    </item>
    <item>
      <title>UK Immigration Health Surcharge 2026: Fee Calculation Logic, Dependency Chains, and What HR Platforms Get Wrong</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Fri, 07 Aug 2026 08:15:33 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-immigration-health-surcharge-2026-fee-calculation-logic-dependency-chains-and-what-hr-40o4</link>
      <guid>https://dev.to/immigrationgpt/uk-immigration-health-surcharge-2026-fee-calculation-logic-dependency-chains-and-what-hr-40o4</guid>
      <description>&lt;p&gt;The UK immigration health surcharge (IHS) sits in an awkward spot for HR and compliance systems: it's a mandatory payment calculated at application time, its logic includes dependency chains tied to visa duration and applicant age, and its interaction with refunds, exemptions, and employer reimbursement policy is poorly documented in most immigration tooling.&lt;/p&gt;

&lt;p&gt;Here's a technical breakdown of how the IHS actually works and where implementations tend to fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  The calculation model
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;IHS_total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;rate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;×&lt;/span&gt; &lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;visa_duration_years&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;person&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;applicants&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rates in 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: &lt;strong&gt;£1,035 per person per year&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Reduced (student visa category or under 18 at date of application): &lt;strong&gt;£776 per person per year&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Duration is measured from the intended start date of leave to the expiry date, rounded &lt;strong&gt;up&lt;/strong&gt; to the nearest full year. A visa issued for 2 years and 6 months = 3 × rate, not 2.5 × rate.&lt;/p&gt;

&lt;p&gt;This is where most calculators go wrong. A system that rounds to the nearest year or uses floor() instead of ceil() will consistently underquote IHS for any application with a non-integer duration. The Home Office's own portal applies ceil() — your tooling should match.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dependency chain logic
&lt;/h2&gt;

&lt;p&gt;Each person on the application pays their own IHS independently. The model per person is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nc"&gt;IHS&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;person&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;rate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age_at_application_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;×&lt;/span&gt; &lt;span class="nf"&gt;ceil&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;visa_duration_years&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rate selection is based on &lt;strong&gt;age at the application submission date&lt;/strong&gt;, not the visa start date or the current date. An applicant who turns 18 between application and grant date is still charged the reduced rate if they were under 18 when they applied.&lt;/p&gt;

&lt;p&gt;For a mixed family of three — main applicant (32), spouse (29), child (16) — applying for a 3-year Skilled Worker visa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Main:   £1,035 × ceil(3) = £3,105
Spouse: £1,035 × ceil(3) = £3,105
Child:  £776  × ceil(3) = £2,328
Total:  £8,538
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Systems that apply a single rate to all persons on a record produce a wrong total. The mixed-rate case is common enough that it should be a default test case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exemption logic
&lt;/h2&gt;

&lt;p&gt;Run an exemption check before any calculation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;is_exempt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;applicant&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;applicant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nationality&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;BILATERAL_HEALTHCARE_COUNTRIES&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;applicant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;visa_category&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;S2_Healthcare_Visitor&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ECAA_Turkish_Worker&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;applicant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;role&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;diplomat&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;BILATERAL_HEALTHCARE_COUNTRIES&lt;/code&gt; currently includes Australia and New Zealand as the primary cases. The list has changed post-Brexit and may change again — this should be an externally-maintained, versioned data source rather than a hardcoded constant. EEA nationals are &lt;strong&gt;not&lt;/strong&gt; exempt, which surprises some applicants who recall pre-Brexit arrangements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Refund scenarios and their asymmetry
&lt;/h2&gt;

&lt;p&gt;Three refund triggers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Application refused&lt;/strong&gt; → full refund (all persons, all IHS paid)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application withdrawn before decision&lt;/strong&gt; → full refund&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permanent departure before visa expiry&lt;/strong&gt; → partial refund for &lt;strong&gt;complete unused years only&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The third case has a meaningful asymmetry: you paid using ceil() but you reclaim using floor() on remaining time. An applicant who departs 14 months before visa expiry gets one year's IHS back — not 14 months' worth. Documenting this in any UI that mentions IHS refunds prevents support tickets later.&lt;/p&gt;

&lt;p&gt;Refund timeline averages 6–8 weeks via the Home Office online portal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What HR systems typically miss
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. No employer/employee responsibility field&lt;/strong&gt;&lt;br&gt;
The Home Office doesn't care who pays the IHS — it's a contractual matter between employer and employee. HR systems that track visa costs often lack a field for this, making it impossible to flag or audit reimbursement commitments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. IHS paid ≠ IHS coverage period&lt;/strong&gt;&lt;br&gt;
If a visa is granted for shorter than the applied-for duration, the IHS is not automatically adjusted. The difference is recoverable via a refund claim, but the claim must be submitted manually. Systems that derive "IHS covered through [date]" from payment records may overstate coverage if a shorter grant occurred.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Partial year billing vs. partial year refund&lt;/strong&gt;&lt;br&gt;
As above: the ceil() at payment vs. floor() at refund is asymmetric. Both rules need to be implemented correctly for the calculator to produce accurate lifetime-of-visa IHS cost estimates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Bulk application handling&lt;/strong&gt;&lt;br&gt;
For companies processing multiple sponsored workers simultaneously, IHS totals can be significant. A cohort of 10 workers on 5-year Skilled Worker visas (no dependants) pays £51,750 in IHS at point of application. Cash flow visibility on this is useful for finance teams, but rarely surfaced by HR tools.&lt;/p&gt;

&lt;p&gt;For more on UK immigration compliance tooling and sponsor data, see &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;immigrationgpt.co.uk&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article is for technical reference. It does not constitute legal advice. Always verify current rates and exemption rules on GOV.UK before building or relying on automated IHS calculations.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>hr</category>
      <category>compliance</category>
    </item>
    <item>
      <title>UK Global Talent Visa 2026: What Unsponsored Routes Mean for HR Systems and Right-to-Work Checks</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Wed, 05 Aug 2026 08:09:10 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-global-talent-visa-2026-what-unsponsored-routes-mean-for-hr-systems-and-right-to-work-checks-2hki</link>
      <guid>https://dev.to/immigrationgpt/uk-global-talent-visa-2026-what-unsponsored-routes-mean-for-hr-systems-and-right-to-work-checks-2hki</guid>
      <description>&lt;h1&gt;
  
  
  UK Global Talent Visa 2026: What Unsponsored Routes Mean for HR Systems and Right-to-Work Checks
&lt;/h1&gt;

&lt;p&gt;The UK Global Talent visa is the route most HR and compliance systems handle worst — not because it's rare, but because it breaks several assumptions those systems are built on.&lt;/p&gt;

&lt;p&gt;No sponsor. No CoS reference number. No Certificate to log. No sponsor management system duties. And yet it grants full right to work in the UK for any employer, in any role.&lt;/p&gt;

&lt;p&gt;Here's a technical breakdown of how the route works, what the data looks like at the verification stage, and where compliance workflows typically fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Route structure
&lt;/h2&gt;

&lt;p&gt;Global Talent is administered across five endorsing bodies, each covering a different sector:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UKRI&lt;/strong&gt; — academic research&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Royal Academy of Engineering&lt;/strong&gt; — engineering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;British Academy&lt;/strong&gt; — humanities and social sciences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Royal Society&lt;/strong&gt; — natural sciences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UKVI Digital Technology route&lt;/strong&gt; — tech (formerly Tech Nation, now administered directly by UKVI)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The endorsing body makes an independent recommendation. UKVI issues the final visa. The leave is typically granted for two to five years depending on the applicant's tier and circumstances.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the share code check returns
&lt;/h2&gt;

&lt;p&gt;Since the eVisa migration in early 2025, Global Talent holders have a UKVI online account and generate share codes for right-to-work checks in the same way as other leave holders. The check returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visa type: &lt;code&gt;Global Talent&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Expiry date&lt;/li&gt;
&lt;li&gt;Work entitlement: &lt;code&gt;Permitted to work for any employer in any capacity&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That final field is the key. No occupation restriction. No salary floor. No employer name attached. The compliance action is: verify the share code via the UKVI online service, record the expiry date, set a renewal alert. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where HR systems build in the wrong assumptions
&lt;/h2&gt;

&lt;p&gt;Most HRIS and compliance tools are architected around sponsored-worker workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Field for CoS reference number → Global Talent has none&lt;/li&gt;
&lt;li&gt;"Sponsorship expiry" flag → not applicable to this visa type&lt;/li&gt;
&lt;li&gt;SMS duty tracking → irrelevant for unsponsored routes&lt;/li&gt;
&lt;li&gt;Occupation code matching → not required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a Global Talent holder enters these systems, the missing fields typically cause validation errors or false compliance alerts. The fix is a conditional branch on visa type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;visa_type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Global Talent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;suppress_sponsorship_fields&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="nf"&gt;set_rtw_expiry&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;visa_expiry_date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;clear_sms_duty_flags&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The endorsement tier (Exceptional Talent vs Exceptional Promise) has no employer compliance implication and doesn't appear in right-to-work data. You don't need to record it.&lt;/p&gt;

&lt;h2&gt;
  
  
  ILR eligibility timeline logic
&lt;/h2&gt;

&lt;p&gt;Global Talent visa holders reach ILR eligibility faster than Skilled Worker route holders in many cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exceptional Talent&lt;/strong&gt; tier: 3 years continuous residence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exceptional Promise&lt;/strong&gt; tier: 5 years continuous residence&lt;/li&gt;
&lt;li&gt;Skilled Worker comparison: 5 years&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For systems that track long-service employee immigration status, this means Global Talent holders may become ILR-eligible well before employees hired at the same time via sponsored routes. If you're building eligibility logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;visa_type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Global Talent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;endorsement_tier&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Exceptional Talent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;ilr_eligibility_years&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;ilr_eligibility_years&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;visa_type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Skilled Worker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;ilr_eligibility_years&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rules sit in Appendix Global Talent of the Immigration Rules, updated via Statements of Changes. Worth monitoring the gov.uk SoC feed if your system tries to stay current.&lt;/p&gt;

&lt;h2&gt;
  
  
  Processing time data for onboarding pipelines
&lt;/h2&gt;

&lt;p&gt;For systems that model candidate timelines or employer planning windows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Typical Duration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Endorsement decision&lt;/td&gt;
&lt;td&gt;3–5 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UKRI fast-track (research)&lt;/td&gt;
&lt;td&gt;~2 weeks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visa decision after endorsement&lt;/td&gt;
&lt;td&gt;~3 weeks standard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Priority visa decision&lt;/td&gt;
&lt;td&gt;~5 working days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total (organised applicant)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6–10 weeks&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This compares favourably to Skilled Worker timelines when you factor in sponsor licence processing — particularly for organisations without an existing licence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dependants and family leave
&lt;/h2&gt;

&lt;p&gt;Global Talent visa holders can bring dependants (partner, children under 18) who get leave in line with the main applicant. Dependants on Global Talent leave have unrestricted right to work in the same way as the main applicant. Right-to-work checks for dependants should reflect this — they don't inherit any employer restriction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sponsor licence status as a parallel data point
&lt;/h2&gt;

&lt;p&gt;Tools that surface Global Talent information often also need to show employer sponsorship status — particularly for users deciding between the Global Talent (unsponsored) route and a Skilled Worker (sponsored) route. UK sponsor licence status is publicly queryable via the Register of Licensed Sponsors at gov.uk. The register is updated daily and includes active, suspended, and revoked licences across Skilled Worker, Student, and other route categories.&lt;/p&gt;

&lt;p&gt;Tools like &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;immigrationgpt.co.uk&lt;/a&gt; surface this data directly, making it possible to check sponsor status and run eligibility checks without scraping the register manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The Global Talent visa is the cleanest right-to-work scenario from a compliance standpoint. No employer duties, no sponsorship tracking, no SMS involvement. The only obligations are verifying the share code, noting the expiry date, and setting a renewal reminder. If your system raises errors or false compliance alerts for these holders, the problem is hardcoded sponsored-worker assumptions — not the visa itself.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post is for technical reference only and does not constitute legal or immigration advice. UK immigration rules are subject to change. Consult qualified advisers for case-specific guidance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>hr</category>
      <category>career</category>
    </item>
    <item>
      <title>UK Right to Work Checks 2026: A Technical Reference for HR and Compliance Systems</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Tue, 04 Aug 2026 08:09:03 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/uk-right-to-work-checks-2026-a-technical-reference-for-hr-and-compliance-systems-3na6</link>
      <guid>https://dev.to/immigrationgpt/uk-right-to-work-checks-2026-a-technical-reference-for-hr-and-compliance-systems-3na6</guid>
      <description>&lt;p&gt;Right to work compliance in the UK is a stateful problem. It's not a one-time check at onboarding — it's an ongoing obligation with expiry tracking, re-verification triggers, and audit record requirements that differ by nationality and document type. Building systems that handle this correctly requires understanding what the underlying check actually produces, not just that it needs to happen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three check types, three different data shapes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Manual checks&lt;/strong&gt; apply to British and Irish nationals presenting physical documents — passport, birth certificate plus National Insurance card, or other documents from the Home Office's Lists A and B. The record is a retained copy of the original. No structured expiry data is produced unless the document itself carries a time limit (which British passports don't). List A documents give an unrestricted statutory excuse. List B documents require follow-up verification at expiry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Online share code checks&lt;/strong&gt; apply to everyone with biometric immigration status: EU Settlement Scheme holders, Skilled Worker visa holders, Graduate visa holders, Student visa holders, and most other visa categories. The employer enters a 9-character alphanumeric share code plus the worker's date of birth at gov.uk/view-right-to-work. The response includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right to work status (confirmed / not confirmed)&lt;/li&gt;
&lt;li&gt;Work condition restrictions (e.g. "20 hours maximum during term time", "work in any job with any employer")&lt;/li&gt;
&lt;li&gt;Leave expiry date&lt;/li&gt;
&lt;li&gt;A reference number identifying the specific check&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;IDSP checks&lt;/strong&gt; (Identity Document Validation Technology) apply to British and Irish passport holders whose employer uses a certified third-party provider. The output varies by provider but must include check outcome, timestamp, and underlying document data. Certification is maintained by the Home Office — only providers on the published register confer statutory excuse.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to persist
&lt;/h2&gt;

&lt;p&gt;For online checks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Date and time of check&lt;/li&gt;
&lt;li&gt;Worker's date of birth (used in the query; don't retain the share code itself post-check)&lt;/li&gt;
&lt;li&gt;Confirmation page as PDF or screenshot&lt;/li&gt;
&lt;li&gt;Expiry date of leave (critical for scheduling re-verification)&lt;/li&gt;
&lt;li&gt;Any work conditions returned (these affect payroll and scheduling logic)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For manual checks: a clear copy of every document presented, with the check date recorded.&lt;/p&gt;

&lt;p&gt;Retention period: duration of employment plus two years. The Home Office audit process checks record completeness and timeliness, not just existence. A record dated after the worker's start date does not establish statutory excuse for the period before it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The re-verification scheduler
&lt;/h2&gt;

&lt;p&gt;This is where most implementations fail. A worker joins on a Skilled Worker visa expiring in 18 months. The initial check runs. No re-verification event is created. The visa lapses. The employer continues paying wages. Six months later, an enforcement visit finds the worker without valid leave — and the employer without a statutory excuse for the post-expiry period.&lt;/p&gt;

&lt;p&gt;Civil penalty: up to £45,000 per worker for a first offence. £60,000 on repeat breach.&lt;/p&gt;

&lt;p&gt;A compliant implementation triggers re-verification no later than the leave expiry date. In practice, fire the reminder 28–60 days before expiry. The worker needs time to renew their visa, receive the biometric residence permit or digital status update, and generate a new share code. That process typically takes 8–12 weeks if the renewal application is straightforward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Edge cases worth handling explicitly
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Students&lt;/strong&gt;: The share code confirmation will show "maximum 20 hours per week during term time, unlimited during vacation periods." If your system tracks hours by worker category, you need to parse and store this restriction — not just log "check complete."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Graduate visa holders&lt;/strong&gt;: Unrestricted work, no employer tie, no sector restriction. Commonly confused with Student visa holders in legacy HR systems. Expiry: 2 years post-graduation, 3 years for PhD graduates. The share code check will make this clear; the schema should distinguish the visa category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EEA nationals post-Brexit&lt;/strong&gt;: Physical EEA passports have not conferred right to work since June 2021. A system that accepts a scanned EEA passport as sufficient verification is non-compliant for any hire made after that date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Employer-tied visas&lt;/strong&gt;: Some categories (e.g. Health and Care Worker route, some intra-company transfers) tie the worker to a specific employer. The share code confirmation will name the permitted employer. If the worker has changed employer without updating their visa, the check will return a negative or conditional result.&lt;/p&gt;

&lt;h2&gt;
  
  
  The adjusted checks gap
&lt;/h2&gt;

&lt;p&gt;March 2020 to April 2022: the Home Office permitted "adjusted" checks — remote video verification with scanned documents. A supplementary in-person or IDSP check was required for workers hired under this regime, to be completed by 30 September 2022.&lt;/p&gt;

&lt;p&gt;Systems built during COVID that contain only adjusted check records — with no supplementary check performed — are carrying latent compliance risk. Those records do not provide statutory excuse if inspected today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sponsor licence verification
&lt;/h2&gt;

&lt;p&gt;If your HR tooling needs to verify whether a company holds a sponsor licence before processing a right to work check for a visa-national applicant, the Home Office's Register of Licensed Sponsors is publicly searchable. &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt; wraps that register (125,000+ records) with search and plain-English Q&amp;amp;A for HR teams that need to do this repeatedly.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Technical information only — not legal advice. UK immigration rules change. Verify current requirements with the Home Office or a regulated adviser before implementing compliance systems.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>career</category>
      <category>hr</category>
    </item>
    <item>
      <title>ILR Eligibility in 2026: What HR Compliance Systems Need to Track</title>
      <dc:creator>ImmigrationGPT</dc:creator>
      <pubDate>Mon, 03 Aug 2026 08:11:52 +0000</pubDate>
      <link>https://dev.to/immigrationgpt/ilr-eligibility-in-2026-what-hr-compliance-systems-need-to-track-573j</link>
      <guid>https://dev.to/immigrationgpt/ilr-eligibility-in-2026-what-hr-compliance-systems-need-to-track-573j</guid>
      <description>&lt;p&gt;Most HR platforms that handle UK immigration compliance are good at tracking visa expiry dates. Almost none of them model ILR eligibility correctly — and that gap has real consequences: employees lose track of their qualifying window, employers make decisions based on inaccurate residence status, and ILR applications get submitted with avoidable errors.&lt;/p&gt;

&lt;p&gt;This post covers the actual logic of ILR eligibility as it applies in 2026, with the precision you need to implement it correctly in a compliance or HR tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Qualifying Period: Not as Simple as a Date Diff
&lt;/h2&gt;

&lt;p&gt;The core rule sounds simple: 5 years continuous lawful residence in the UK on a qualifying route. But &lt;code&gt;application_date - visa_start_date &amp;gt;= 5_years&lt;/code&gt; is not the right calculation.&lt;/p&gt;

&lt;p&gt;Three things complicate it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Route-specific qualifying periods.&lt;/strong&gt; Skilled Worker is 5 years. Global Talent is 3 or 5 years depending on endorsement type (Exceptional Promise vs Exceptional Talent). Innovator Founder is 3 years. UK Ancestry is 5 years. Any system modelling ILR eligibility needs a &lt;code&gt;qualifying_years&lt;/code&gt; field per route, not a hardcoded value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Route changes reset the clock.&lt;/strong&gt; Time on a Student or Graduate visa does not count toward ILR. The transition Student → Graduate → Skilled Worker trips people up constantly. A person who has lived in the UK for 7 years might have only 3 years of ILR-qualifying residence. A correct data model needs a &lt;code&gt;qualifying_start_date&lt;/code&gt; that reflects the beginning of the most recent unbroken qualifying route chain — not the applicant's first UK entry date.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Skilled Worker re-entry edge case.&lt;/strong&gt; If someone leaves the UK and re-enters on a new Skilled Worker visa rather than an extension, the qualifying period continues rather than resetting — provided the gap does not constitute a break in lawful residence. Absence tracking and visa continuity tracking are separate concerns that interact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Absence Tracking: Rolling Windows, Not Calendar Years
&lt;/h2&gt;

&lt;p&gt;The 180-day absence limit is calculated on a rolling 12-month basis, not per calendar year or visa year. This is the most commonly misimplemented rule.&lt;/p&gt;

&lt;p&gt;The correct calculation: for any date &lt;code&gt;D&lt;/code&gt; in the qualifying period, absences in the 365-day window &lt;code&gt;[D-365, D]&lt;/code&gt; must not exceed 180 days. This must hold for every single day in the qualifying period — not just a snapshot at application time.&lt;/p&gt;

&lt;p&gt;A person could pass a per-year check but fail a rolling-window check if absences cluster at the boundary between two years. UKVI runs the rolling check.&lt;/p&gt;

&lt;p&gt;For a compliance system this means: a complete absence log for the full qualifying period, a function calculating the maximum rolling-window violation rather than total absences, and alerting logic that flags risk during the qualifying period — not six months before the application deadline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Salary Continuity for Skilled Workers
&lt;/h2&gt;

&lt;p&gt;Skilled Worker ILR does not require a specific salary floor, but it requires the applicant was paid at least the going rate for their SOC code throughout the qualifying period. A role change without a new Certificate of Sponsorship, a salary reduction, or a gap in employment all need to be evidenced.&lt;/p&gt;

&lt;p&gt;For HR systems: store historical salary records against the CoS they were paid under, not just current compensation. An employee who changed job titles internally may have needed a new CoS — if the role change involved a different SOC code or a salary drop below the going rate, the ILR application is exposed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good Character: The Fields Most Systems Ignore
&lt;/h2&gt;

&lt;p&gt;The good character requirement catches things that do not look like immigration issues: criminal convictions including overseas ones, civil penalties under immigration law, short periods of overstay (even 1-2 days), and working in breach of visa conditions such as exceeding the student 20-hour work limit.&lt;/p&gt;

&lt;p&gt;Most HR compliance systems do not capture overstay history because it predates the employer relationship. But it is something employees should self-audit before submitting.&lt;/p&gt;

&lt;h2&gt;
  
  
  English Language and Life in the UK Test
&lt;/h2&gt;

&lt;p&gt;These are binary gates. Systems tracking ILR readiness should flag whether a valid Life in the UK test pass certificate exists and whether an accepted English language qualification has been taken within the allowable window.&lt;/p&gt;

&lt;p&gt;The list of accepted English tests changes. Build in a data refresh mechanism rather than hardcoding accepted test types. Some applicants are exempt — citizens of majority English-speaking countries, or those with degrees taught in English. Exemption logic needs to be explicit.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Compliance Tooling
&lt;/h2&gt;

&lt;p&gt;The tools that actually help employees reach ILR are the ones that start tracking from day one of the qualifying period. Absence alerts, salary continuity monitoring, and route-eligibility checks need to be in the normal workflow, not bolted on at the end.&lt;/p&gt;

&lt;p&gt;The Home Office guidance on SET(O) applications and the Immigration Rules Appendix Continuous Residence are the authoritative sources. They update periodically — point-in-time snapshots of eligibility logic will drift.&lt;/p&gt;

&lt;p&gt;If you are working on immigration status verification or sponsor licence checking for UK employers, &lt;a href="https://immigrationgpt.co.uk" rel="noopener noreferrer"&gt;ImmigrationGPT&lt;/a&gt; covers the UK sponsor register — useful context for ILR-adjacent compliance workflows.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Nothing in this post constitutes legal advice. Verify against current Home Office guidance before implementing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>immigration</category>
      <category>uk</category>
      <category>career</category>
      <category>hr</category>
    </item>
  </channel>
</rss>
