Live engine numbers
Across 5 chains and 33 protocol-specific classifiers. Every number on this page is computed from the live database once a day — no marketing rounding, no aspirational figures.
Last updated 13 May 2026.
38
disposals matched
Each one run through same-day, 30-day Bed & Breakfast, and Section 104 pooling per HMRC rules — not a single FIFO approximation.
£287,503.75
DeFi income processed
Staking rewards, LP fees, airdrops, and protocol incentives — classified, priced at receipt date, and ready for SA100 Other income.
5 / 33
chains / protocols
Ethereum, Arbitrum, Optimism, Base, Polygon — plus dedicated handlers for Uniswap, Aave, Lido, Curve, Balancer, GMX, and 27 more.
Counter-positioning
We re-ran every disposal through naive FIFO matching — the default method most non-UK and spreadsheet-based tools use — and diffed against the HMRC-correct gain ChainTax actually filed. The difference is the over-reporting our users avoided by using the rules HMRC actually applies (same-day, 30-day Bed & Breakfast, then Section 104 average-cost pooling) instead of first-in-first-out.
The number is a sum across all users, clamped at zero. A positive figure means FIFO would have over-stated gains in aggregate — almost always the case once a S104 pool stabilises.
How we calculate this
Disposals matched — SELECT COUNT(*) FROM "TaxEvent" WHERE type = 'CAPITAL_GAIN'. Each row represents a single disposal that has passed classification, pricing, and HMRC matching.
Gains processed — sum of TaxYear.totalGains across all users. Aggregate only — never per user. The denormalised column is bumped on every recompute.
DeFi income processed — sum of TaxEvent.proceeds WHERE type = 'INCOME'. Staking, LP fees, airdrop FMV at receipt.
Over-reporting prevented — we re-run every disposal through naive FIFO and diff the total positive gain against the HMRC-matched figure ChainTax actually returned. Result clamped to zero (a negative diff would mean HMRC matching over-stated — vanishingly rare in aggregate, but the public figure stays honest either way).
Connect a wallet, get a per-disposal breakdown with Show Working for every line. No card needed to scan.