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
77 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 still applies the pre-2021/22 method (as at June 2026), and several widely-used third-party tools follow it. 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 — 77 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 · 28 rows
| ID | What it tests | Status |
|---|---|---|
| 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-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 100% earnings cap binding scenario reduces tested PIA below AA. Current orchestrator surfaces a warning but does not reduce PIA — see ADR-011 for default. Implement when v2 introduces full PTM044100 PIA-reduction semantics. | v2 |
| PTM-EX-09 | PTM-EX-09 DB scheme PIA from 16× capital valuation. PIA computation exists at calc-engine/pension/db-pia.ts (calculateDBPensionInputAmount) but the AA-orchestrator corpus harness only consumes pre-computed PIA inputs. Wire the DB-PIA computation into the corpus harness so this example can run end-to-end with capital-value inputs. | covered |
IPTM · Investment Bond Chargeable Event Gain & Top-Slicing Relief · 26 rows
| ID | What it tests | Status |
|---|---|---|
| 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, no credit, basic-rate slice | 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 (HMRC Agent Update 83, 2021) differentiator — offshore: PSA recalc drives £600 TSR uplift | 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 5-step anchor incl. PSA cross-term (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 |
| 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). Quilter 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 Author's source-markdown worked example (docs/research/hmrc-iptm-bond-corpus.md EXAMPLE 3) has internal restarts and disputed arithmetic ('No, this is wrong... let me restart Step 4 properly'; multiple candidate AET interpretations). It is NOT an HMRC-published number set. Per CLAUDE.md §Testing it is not extracted. RESOLUTION (P06-07, 2026-05-23): superseded as a ground-truth source by the verbatim HMRC IPTM3850 examples now in this corpus (IPTM-HMRC-01 passing; IPTM-HMRC-EX2/EX3 deferred). The constructed Brief-12/2021 anchors IPTM-EX-03-OFFSHORE/ONSHORE remain the engine regression tests for the recalc rule. IPTM-EX-02 stays deferred — its arithmetic could not be canonicalised against an authoritative source. | 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) · 30 rows
| ID | What it tests | Status |
|---|---|---|
| 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 — FNC at the most recent officially published rate (operator ruling) | matched |
| CARE-WAL-04 | Wales home care — £25,000 savings is above the £24,000 limit; £100 cap shown | 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 |
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.
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.