Uploaded PDFs (P60, PSS, chargeable-event certificates) are parsed, then permanently deleted from UK-region object storage 24 hours later. An hourly cron enforces the cutoff; nothing carries over between paraplanner sessions.
A calc your compliance officer will sign.
Four pillars: HMRC corpus to zero pence, replayable for six years, deterministic code (never an LLM), and the post-2021/22 top-slicing rule by default.
Correctness
85 HMRC and statutory worked examples. Zero pence tolerance.
We run every example in our test corpus — HMRC PTM (pension), IPTM (bond), and care statutory means-test cases — against the engine on every commit. The tolerance is 0 pence (integer equality, not a rounding band). A single mismatch blocks merge to main. The full list is in §06.
Beyond the corpus, a separate first-principles harness re-derives 144 statutory probes directly from the legislation, independently of the engine — 0-pence tolerance on every one.
Method: PTM 057100 · IPTM 3830 · IPTM 3820 / HMRC Agent Update 83 (2021)
Replayability
Twelve months on, against the same versioned config.
Every signed calculation persists the full inputs, engine version, tax-year config, date and intermediate steps on its audit record. Replay the row a year later at the same versions and you get a byte-identical result. The client-facing annex stays a clean planning illustration — every page carries the planning disclaimer, your firm’s branding and FCA attribution when set, the page number, and a single “Prepared by {name} · {date}” line. The tool version, config version and full inputs live on the audit record and the JSONL audit export, not on the page a client sees.
Separation
AI extracts the figures. Code calculates the tax. Never the other way around.
The LLM lifts figures from a document and shows them to you with their source; you approve before any calc runs. The engine itself is pure TypeScript — no network, no randomness, no model access, no hidden state. The separation is enforced by the codebase, not by intention.
Named sub-processors + data locations: /privacy §4 →
The TSR rule
The post-2021/22 top-slicing rule. Done right.
“Errors still exist in HMRC's tax calculations.”
AccountingWEB →·Tax Adviser Magazine: Learn to slice correctly →
IPTM 3820 / HMRC Agent Update 83 changed the PSA/SRB recalculation for gains arising on or after 6 April 2021. HMRC's own calculator applied the pre-2021/22 method for a time, and third-party spreadsheets and back-office tools that copied it still do. ParaplanAI applies the post-2021/22 rule by default — every step appears on the annex with its IPTM 3820 citation — and the IPTM corpus tests it on every commit.
Retention
Source PDFs gone in 24 hours. Everything else is yours to delete.
An hourly cron purges raw uploads on a 24 hour horizon. The structured figures lifted from each document persist with the calculation so the audit trail still resolves; the PDF bytes don't need to. You are the controller — delete any record on demand, and finalised calculations are kept only for the window your firm sets (six years by default).
Clients, policies and calculations are yours to delete — one click, whenever you want. You hold your own FCA record; we never force a period on you. Finalised calculations you keep are auto-retained for the window your firm sets (six years by default), then deleted. Drafts you never finalise are removed after 90 days.
The compliance annex you download stays available so it can be re-fetched without re-running the calc. It is kept alongside its calculation under your firm’s retention policy, and goes the moment you delete the record — export it first if you need a copy.
Open HMRC corpus
Updated 11 Jun 2026Every example in our HMRC and statutory test corpus. In public.
The HMRC PTM, IPTM, and care statutory worked examples — 85 of them, each set out in full in the table below. Every row runs on every commit at 0-pence tolerance (integer equality, not a rounding band); a single failing example blocks merge. Find a mismatch? info@paraplanai.co.uk — confirmed mismatches in matched rows are patched within seven calendar days.
Method: HMRC PTM and IPTM manuals · IPTM3820 (HMRC Agent Update 83, 2021) · Care Act 2014 / CSCAR Regs 2014 · Open Government Licence v3.0
PTM · Pension Annual Allowance, Carry Forward, Tapered AA, MPAA, LSA / LSDBA, LTA History, TTFAC · 30 rows
| ID | What it tests |
|---|---|
| PTM-EX-01 | Basic Standard AA - No Taper, No Carry Forward matched |
| PTM-EX-02 | Carry Forward from Prior 3 Years matched |
| PTM-EX-03 | Tapered Annual Allowance, Taper Active, No CF matched |
| PTM-EX-04 | Tapered AA with Carry Forward Interaction matched |
| PTM-EX-05 | MPAA Triggered - DC Cap Applied, CF survives to the default/alt-AA tests (ADR-026 + ADR-038) matched |
| PTM-EX-05B | MPAA Triggered - alternative chargeable amount binds (DC>MPAA, large DB) (ADR-026 / P01-09) matched |
| PTM-EX-06 | MPAA Already Active in Prior Year matched |
| PTM-EX-08 | Taper Reaches Minimum Floor (£10k for 2023/24+) matched |
| PTM-EX-10 | Multiple Schemes - Combined PIA matched |
| PTM-EX-11 | 2022/23 - £40k AA with £4k Floor Taper matched |
| PTM-EX-12 | 2023/24 - First Year of £60k AA matched |
| PTM-EX-13 | Carry Forward Partially Consumed matched |
| PTM-EX-14 | AA Charge - Multi-Scheme High PIA matched |
| PTM-EX-15 | B1/ADR-051 — MPAA prior-year trigger, DC £0, DB £55k: s.227ZA(1)(b) gate closed, no alternative test matched |
| PTM-EX-16 | B2/ADR-051 — unusedAAThisYear s.228A(8) substitution: DC £30k post-trigger, DB £0 matched |
| PTM-EX-17 | B4/ADR-051 — taper reduction floors to the nearest whole pound: AI £260,001 matched |
| PTM-EX-09 | DB PIA from opening/closing capital values (16x factor, 2025-26 CPI revaluation) matched |
| PTM-LSA-01 | PCLS within unused LSA — no excess matched |
| PTM-LSA-02 | PCLS exceeds remaining LSA after prior usage matched |
| PTM-LSDBA-01 | PCLS consumes LSDBA in lock-step with LSA matched |
| PTM-LTA-0607 | 2006/07 standard LTA (A-Day) is £1,500,000 matched |
| PTM-LTA-0708 | 2007/08 standard LTA is £1,600,000 matched |
| PTM-LTA-0809 | 2008/09 standard LTA is £1,650,000 matched |
| PTM-LTA-0910 | 2009/10 standard LTA is £1,750,000 matched |
| PTM-LTA-1011 | 2010/11 standard LTA is £1,800,000 (A-Day peak) matched |
| PTM-LTA-1112 | 2011/12 standard LTA is £1,800,000 (peak held; clean join to 2010/11) matched |
| PTM-LTA-1213 | 2012/13 standard LTA steps down to £1,500,000 matched |
| PTM-LTA-2021 | 2020/21 standard LTA is £1,073,100 (the abolition basis) matched |
| PTM-TTFAC-DB-01 | Pre-2024 death benefit: own amount ignored for the LSDBA, but it flips the standard deduction to 100% for the original PCLS matched |
| PTM-EX-07 | PTM-EX-07 The author-constructed combined-reading fixture is not accepted as current behaviour or runnable ground truth. ADR-011 accepts the separate/warn-only implementation: the orchestrator surfaces the PTM044100 relief-limit warning but does not reduce PIA for the annual-allowance test. No chartered-specialist review of the alternative is recorded. Keep this classified as a v2 modelling question unless a new owner-and-specialist decision, primary-source-backed fixture and coordinated engine/annex change replace ADR-011. v2 |
IPTM · Investment Bond Chargeable Event Gain & Top-Slicing Relief · 28 rows
| ID | What it tests |
|---|---|
| IPTM-HMRC-01 | HMRC IPTM3850 Example 1 (Amanda) — onshore single event, no PA withdrawal matched |
| IPTM-HMRC-EX3 | HMRC IPTM3850 Example 3 (Mike) — onshore single event, PA withdrawn matched |
| IPTM-DERIVED-01 | Onshore basic-rate slice with PSA recalc — relief offsets full attributable tax matched |
| IPTM-DERIVED-02 | Offshore, basic-rate slice — s.531(1) deemed-tax credit clamps the notional slice tax to £0 matched |
| IPTM-DERIVED-03 | PSA recalc divergence: full-gain pushes to higher rate, slice stays basic matched |
| IPTM-DERIVED-04 | Additional-rate member, no PSA, no SRB matched |
| IPTM-EX-03-OFFSHORE | IPTM3820 Step-4 PSA recalculation — offshore: PSA £500 → £1,000, relief unchanged (s.531(1) credit floors the relieved liability at £0) matched |
| IPTM-EX-03-ONSHORE | IPTM3820 (HMRC Agent Update 83, 2021) differentiator — onshore sibling: PSA divergence masked by 20% slice credit matched |
| IPTM-DERIVED-05 | Non-taxpayer + large offshore gain sliced into allowances — net £0 via top-slicing matched |
| IPTM-DRV-W3-01 | Savings interest retained in Step-4 notional legs — offshore, interest shifts slice band (CX-W3) matched |
| IPTM-DRV-W3-02 | Savings interest retained — onshore credit clamp masks the band shift (CX-W3 sibling) matched |
| IPTM-DRV-W3-03 | Onshore gain with real savings interest — full five-step anchor (CX-W3 / PQ-CALC-03) matched |
| IPTM-DRV-W6-01 | Pre-2021/22 rule: Step-3 PSA carries unchanged into Step 4 (CX-W6) matched |
| ABRDN-OFFSHORE-01 | abrdn published offshore Example 1 — external anchor for the A1 fix matched |
| TECHZONE-JACK-S530 | techzone "Jack" — s.530(3)-(5) restricted deemed-tax credit (A4) matched |
| GFH-01-single | Single premium, no withdrawals — full surrender gain SV−P. matched |
| GFH-02-topup | Top-up premium (2 premiums); gain unchanged, premiums aggregated; N from first premium. matched |
| GFH-03-excess | Regular withdrawals breaching 5% → excess events years 4-9 (prior tax years); year-10 excess absorbed into the surrender. matched |
| GFH-04-under5pct | Regular withdrawals UNDER 5% → no excess; withdrawals added back to the gain. matched |
| GFH-05-midyear | Mid-year surrender (not on an anniversary) with excess history; all excess in prior tax years. matched |
| GFH-06-fees-topup | Fee-inclusive withdrawals + a top-up; multiple premiums and a withdrawal history. matched |
| GFH-07-20yr-cap | 25-year-old bond — the 5% allowance is capped at 20 years per premium. matched |
| GFH-08-segment-division | Non-round per-segment division (12 segments). the calculator floors the per-segment gain to whole pounds; our engine keeps pence. matched |
| IPTM-HMRC-EX2 | IPTM-HMRC-EX2 HMRC IPTM3850 Example 2 (Amanda, two onshore events £50k/5yr + £10k/4yr, employment £40k, 2022/23): HMRC's published TSR is £8,185.20 using the 7-step multi-event method (sum of per-policy annual equivalents £12,500; relieved liability via the (relieved × total gain)/total AE apportionment). RESOLVED 2026-05-26 (V2-F-020 / ADR-028 — supersedes ADR-014's weighted-N): the engine now implements the IPTM3840 sum-of-slices method and reproduces this example BYTE-EQUAL (£8,185.20). It is asserted in calc-engine/bond/__tests__/top-slicing.multi-gain.test.ts (both calculateMultiGainTopSlicingRelief directly and via the calculateBondTSR orchestrator). Remains in `deferred` here only because the JSON corpus harness consumes single-event inputs and cannot express extras.additionalBonds — the dedicated test is the runnable home. The superseded weighted-N path gave annual equivalent £12,000 / TSR £8,616. covered |
| IPTM-EX-01 | IPTM-EX-01 Time Apportionment Rules (non-residence years) — out of scope for v1; require period-of-residence tracking inputs. out of scope |
| IPTM-EX-02 | IPTM-EX-02 This legacy author-draft identifier has no recoverable authoritative worked-example number set; the earlier metadata also misidentified which markdown example it represented. It is classified no-source and is not accepted as calculation ground truth. Retain it only as an evidence-ledger row: it must not be promoted to a runnable oracle without a new primary source and explicit owner and specialist acceptance. The separately identified verbatim HMRC IPTM3850 examples and constructed Brief-12/2021 regression anchors keep their own statuses and do not retrospectively validate this row. no HMRC source |
| IPTM-EX-03 | IPTM-EX-03 Superseded — author's primary markdown example is degenerate (notional income £57,500 stays in higher rate, PSA recalc has no rate-band effect; markdown explicitly notes 'PSA recalculation made NO DIFFERENCE'). Replaced by constructed IPTM-EX-03-OFFSHORE + IPTM-EX-03-ONSHORE. superseded |
| IPTM-EX-05 | IPTM-EX-05 Multi-CEC aggregation. RESOLVED 2026-05-26 (V2-F-020 / ADR-028): the engine implements the IPTM3840 sum-of-slices multi-gain TSR (calculateMultiGainTopSlicingRelief), verified byte-equal against HMRC IPTM3850 Example 2 in top-slicing.multi-gain.test.ts. Stays in `deferred` only because this JSON harness consumes single-event inputs; the dedicated test is the runnable home. covered |
Care · Local Authority Means-Test (England, Wales, Scotland, Northern Ireland) · 33 rows
| ID | What it tests |
|---|---|
| CARE-ENG-01 | England residential — 1p above the upper limit self-funds matched |
| CARE-ENG-02 | England residential — exactly at the upper limit is in the tariff band (£36/wk) matched |
| CARE-ENG-03 | England residential — exactly at the lower limit: income-assessed, no tariff matched |
| CARE-ENG-04 | England residential — £20,000 mid-band tariff (£23/wk) matched |
| CARE-ENG-05 | England residential — 1p above the lower limit rounds up to one £1 step matched |
| CARE-ENG-06 | England nursing — self-funder still gets FNC £267.68 (not means-tested) matched |
| CARE-ENG-07 | England residential — qualifying occupant disregards the £300k home matched |
| CARE-ENG-08 | England residential — 12-week disregard window excludes the home matched |
| CARE-ENG-09 | England — CHC indicated for a £500k self-funder (independent of means) matched |
| CARE-ENG-10 | England — s.117 aftercare line on top of a computed position matched |
| CARE-ENG-11 | England — recent gifts raise the deprivation caution matched |
| CARE-ENG-12 | England home care — home never counted; £30k savings self-fund matched |
| CARE-ENG-13 | England home care — tariff band with MIG floor and an AA prompt at 80 matched |
| CARE-ENG-14 | England residential — counted home makes a self-funder; DPA rate surfaced matched |
| CARE-SCO-01 | Scotland residential — 1p above £36,750 self-funds; FPC still paid matched |
| CARE-SCO-02 | Scotland residential — exactly at the upper limit: tariff band £56/wk matched |
| CARE-SCO-03 | Scotland residential — exactly at the lower limit: income-assessed, no tariff matched |
| CARE-SCO-04 | Scotland nursing — tariff band plus FPC and free nursing care lines matched |
| CARE-SCO-05 | Scotland home care — free personal care at all ages matched |
| CARE-SCO-06 | Scotland — an unsure CHC answer maps to the consider level matched |
| CARE-WAL-01 | Wales residential — 1p above the £50,000 single limit self-funds matched |
| CARE-WAL-02 | Wales residential — exactly £50,000: the LA assists, no tariff, MIA floor matched |
| CARE-WAL-03 | Wales nursing — dated 2026/27 FNC components remain separate matched |
| CARE-WAL-04 | Wales home care — £25,000 savings is above the £24,000 limit, but the £100 cap still binds (charged, not self-funding) matched |
| CARE-WAL-05 | Wales home care — £20,000 savings: assisted, capped at £100/wk matched |
| CARE-WAL-06 | Wales — CHC indicated routes to the local health board matched |
| CARE-NI-01 | NI residential — £20,000 mid-band tariff with the NI PEA matched |
| CARE-NI-02 | NI nursing — self-funder still gets the £100 RNCC matched |
| CARE-NI-03 | NI home care — trust-discretionary position, no figures claimed matched |
| CARE-NI-04 | NI residential — benefit in payment surfaces the trust-funded 28-day stop rule matched |
| CARE-ENG-15 | England home care — 66-year-old confirmed BELOW Pension Credit age gets the working-age MIG band (E1) matched |
| CARE-ENG-16 | England home care — 66-year-old confirmed to have REACHED State Pension age gets the pensioner MIG band (E1) matched |
| CARE-ENG-17 | England home care — 66-year-old with NO answer supplied defaults conservatively to the working-age MIG band and warns (E1) matched |
Methodology
Open-question defaults
Where HMRC is ambiguous, here's what we apply.
Where the guidance is ambiguous, we record the interpretation we apply and which way any error leans (available on request). Defaults hold the conservative direction — never silently understating a charge or over-relieving. Firms should confirm acceptance in writing before adopting the output.
Questions? info@paraplanai.co.uk →
Professional responsibility
A calculation tool. Not a substitute for the adviser.
ParaplanAI is a calculation tool, not a provider of financial or tax advice. The regulated adviser using it retains full professional responsibility for every figure that reaches a client file — which is why every calculation is independently verifiable against the cited HMRC method shown on this page.
ParaplanAI does not hold separate professional-indemnity insurance. The tool’s assurance is its transparency: every step shown, every HMRC reference cited, every result replayable against a published corpus. The adviser’s own review and their firm’s PI cover are the professional backstop.
Verified against
Every calculation, and the primary source it's checked against.
Each calculation family is built and tested against the HMRC manual section and the Act below. The references link to the gov.uk manual and to legislation.gov.uk — the same citations stamped on the compliance annex.
HMRC manual text reused under the Open Government Licence v3.0.
Changelog
What changed, and when. Real edits only.
A date appears here only when a rule, the configuration, or the verification actually changed — never a cosmetic refresh.
Top-slicing relief corrected to HMRC's current executable method, superseding independent-liability subtraction: Gift Aid still reduces adjusted net income but does not extend the TSR rate bands; one personal allowance, personal savings allowance and starting-rate-band set is selected at each TSR level, used against other income first, and the gain or slice is then rate-walked.
HMRC MTR v1.5.1a · Tester v1.5.4 · ITTOIA 2005 ss.535–536 · ITA 2007 s.58
2025-26 tax-year configuration verified (AA £60,000; taper floor £10,000; MPAA £10,000; LSA £268,275; LSDBA £1,073,100).
DB pension input amount: a separate automatic lump sum is taken at face value (1×), not multiplied by 16.
DB pension input amount: the opening value is revalued by the prior-September CPI before subtraction.
Multiple chargeable events in a tax year are aggregated by the sum-of-slices method.
Top-slicing relief Step-4 PSA/SRB recalculation applied for gains arising on or after 6 April 2021.
- Privacy notice — what we collect, how long we keep it, who else sees it.
- Terms of service — the planning-only output, retention promises, billing.
- Security — controls, sub-processors, breach-notification commitment.
- Data minimisation — what we hold, what we don't, and how long for.
- Data Processing Agreement — UK GDPR Art. 28 contract for firms.
- Help & SLA — support channels and per-tier response targets.
