GradpilotDaily Ships

Can you reclaim student loan repayments?

Had student loan repayments taken from your pay? Check every tax year against the official thresholds for your plan, see what you can reclaim and why, and whether reclaiming is free money. The simplest check takes a minute: one tax year, income and deductions from your P60.

See it working first:
Step 1 — Your loans

Tell us what you actually have. Not sure of your plan? It is in your online repayment account, and on your Active Plan Type letter.

For course-end, first-loan and paid-off dates, a month and year is fine (like 2020-06 — we'll use the 1st of that month), or just a year (like 2020 — we'll use 30 June of that year), and your results will say which we used. Your SLC online account shows the exact dates.

Step 2 — Your tax years

For each year, use your P60: income before tax, and the student loan total. That is enough for a below-threshold check — payslips are only needed to pinpoint wrong-plan, too-early or after-payoff amounts.

Step 3 — Results

Your headline answer, year-by-year table, whether reclaiming is worth it, next steps and a ready-to-paste message to SLC will appear here.

For developers

POST /api/check with JSON runs a check without saving it. POST /api/share also saves it for 180 days and returns share links. Saved and sample reports live at /r/:id (HTML), /r/:id.md, /r/:id.csv and /api/r/:id (JSON). Try /r/sample-a, /r/sample-b or /r/sample-c. GET /api/samples lists the samples; GET /api/health returns the version. Send an asOf date (YYYY-MM-DD) to fix "today".

Minimal working example for POST /api/check — one tax year from a P60:

{
  "asOf": "2026-11-04",
  "profile": {
    "plans": [
      2
    ],
    "hasPgl": false,
    "undergradCourseEnd": "2021-06"
  },
  "years": [
    {
      "taxYear": "2024/25",
      "income": 20000,
      "slDeducted": 120,
      "pglDeducted": 0
    }
  ]
}

Fields: asOf (optional, YYYY-MM-DD); profile.plans (list of 1, 2, 4 and/or 5); profile.hasPgl (true/false); profile.undergradCourseEnd and profile.pglCourseEnd (when each course ended); profile.loanPaidOffDate, profile.pglPaidOffDate and profile.firstLoanPaidDate (all optional) — each of these dates accepts YYYY-MM-DD, YYYY-MM (the 1st of that month is used) or YYYY (30 June of that year is used); profile.balanceUndergrad / profile.balancePgl (optional £ balances, for "should you reclaim?"); years (at least one, each with taxYear like 2024/25, income, slDeducted and pglDeducted in £); planning.currentSalary (optional), planning.salaryGrowthPct and planning.rpiPct (optional, defaults applied).

Same check as a curl one-liner:

curl -s -X POST https://gradpilot.dailyships.co.uk/api/check -H 'Content-Type: application/json' -d '{"asOf":"2026-11-04","profile":{"plans":[2],"hasPgl":false,"undergradCourseEnd":"2021-06"},"years":[{"taxYear":"2024/25","income":20000,"slDeducted":120,"pglDeducted":0}]}'