Tottenham Hotspur crest
The Bean Counter
Tottenham Hotspur · Financial Compliance · 2026/27

I am often asked about our net spend. It is often said that we do not spend enough money on incoming players... we cannot spend what we do not have.

— Daniel Levy · Chairman's statement, FY24 accounts · March 2025
Tottenham Hotspur official crest

The Bean Counter · Tottenham

2026/27 PRE-SEASON
To Dare Is To Do
Football has become a game of bean counting — so here's the abacus. PSR · PL Squad Cost Ratio · the £295m rebuild · book values · homegrown quota · net-debt watch

State of Play

Tottenham Hotspur's estimated squad cost ratio is 69.7% against the Premier League's 85% limit for clubs outside Europe, leaving roughly £92.9m/yr of cost headroom. The summer 2026 window stands at £102.4m banked from sales against £311.5m committed on signings. Every figure here is this tracker's own estimate, built from published accounts and media reporting, as reported 3 Sept 2026.

PL Squad Cost Ratio · Estimated
/ 85%
85% green line · red 115% (off scale)
Out of Europe, Spurs get the 85% domestic cap — not the 70% squeezing the nine European qualifiers. That 15-point gap IS the £295m window.
Window Net Spend
fees only · the biggest net spend in the league — no registration gate applies
Squad Churn
·
17th-place squad → De Zerbi rebuild: Tonali, Fernandes, van Hecke bought and Savinho (£75m + £10m, announced 25 Aug) + Robertson, Senesi, Dúbravka free
Est PSR Headroom
≈£85m
final PSR cycle (FY24–26) · stadium depreciation does the heavy lifting · assessed Jan 2027 (estimate)

The Clock — What's Counting Down

DAYS TO SAUDI WINDOW CLOSE
6 SEP
DAYS TO 25-MAN LIST DUE
~2 SEP · PREMIER LEAGUE
DAYS TO PL SCR CHECKPOINT
OCT 2026
DAYS TO PSR ACCOUNTS DEADLINE
31 DEC · FINAL PSR CYCLE

The Six Regulations — Pass / Fail / Room Left

PL PSR
On Track To Pass
EST USAGE: ~£20m of the £105m 3-yr loss allowance. FY24 −£26m + FY25 −£121m (club record) + FY26 est — but PSR deducts depreciation (~£70m/yr of stadium charge), academy, community & women's costs, turning ~£210m of headline losses into a comfortable pass. Estimate, not official.
ROOM: est ~£85m · accounts due 31 Dec 2026 → final-ever PSR assessment Jan 2027.
PL SCR — the big one
Comfortable
NOW: vs the 85% green line (red 115%) — the most comfortable big-revenue ratio in the league, even after £295m of buys.
ROOM: of cost/yr before the line — this headroom, not PSR, is what funded Tonali, Fernandes and van Hecke.
CLOCK: monitoring checkpoint Oct 2026 · assessment 1 Mar 2027 · levies only bite from 2027/28.
UEFA Rules (SCR · FER)
Not In Scope
Spurs are not in Europe in 2026/27, so UEFA's 70% SCR and Football Earnings Rule don't apply. Clean record: no UEFA financial-rules sanction — while Villa, Chelsea, Newcastle and Forest were all fined in July 2026.
EUROPE TEST: vs the 70% line — where the same numbers would land if Spurs qualify for 2027/28. Room on that harder test: /yr.
SSR — Net-Debt Watch
Watch · Expected Pass
NET DEBT: £831m (FY25, up from £773m) — the largest in the league, but long-dated, fixed-rate stadium borrowing (~£30m/yr of finance cost), not payday lending.
TESTS: liquidity after an £85m stress test + positive-equity ratio. Stadium asset value and ENIC equity backing mean no indication of an issue · first full tests 7 Jul 2027.
25-Man List Gate
The Real Squeeze
QUOTA: max 17 non-homegrown players in the 25-man list. Our audit counts ~20 non-HG seniors after the window's seven arrivals, Savinho included at advanced stage (est — HG status per PL definition, 3 seasons in England/Wales before 21).
ROOM: roughly two over — Romero’s sale to Atlético on 15 Aug took one of the surplus non-homegrown bodies out, which is what the Vicario (Juventus) and Richarlison (Juventus/Fenerbahçe) exit talks are still being tolerated for. Bergvall & Tel are U21-exempt (born ≥ 1 Jan 2005); Archie Gray no longer is. List due ~2 Sep.
Loan Quotas (In · Senior)
2 + 6 Left
DOMESTIC (English clubs): 2 of 2 concurrent slots free — Spurs took no loans in; last season's loanees (Palhinha, Kolo Muani) have gone back · season cap 4 · max 1 per club.
INTERNATIONAL (FIFA): 6 of 6 SENIOR slots free — over-21, non-club-trained only; U21 & club-trained loans exempt · max 3 from any single club.
OUT: Dragusin to Fiorentina uses an outbound international slot — with a conditional obligation that would convert it to a sale.

Quick Answers — Spurs' Finances in Plain English

Are Tottenham in trouble with FFP in 2026?

No — the opposite. Spurs enter 2026/27 with arguably the most comfortable compliance numbers in the league: a squad cost ratio around 65% (est) against the 85% green line, and a final PSR cycle expected to pass with room once stadium depreciation and academy deductions apply. The pressure points are sporting, not regulatory: two straight 17th-place finishes, £831m of net debt and a homegrown squad-list squeeze.

How can a 17th-placed club spend £295m?

Because the new rules cap spending relative to revenue, and Spurs' £565m of FY25 revenue (top-three in the league) towers over a wage bill of £256m — roughly 55% of revenue, the most comfortable ratio among the big-revenue clubs. Years of restrained net spend banked exactly the headroom De Zerbi is now spending on Tonali, Fernandes and van Hecke.

What is Tottenham's squad cost ratio right now?

Roughly 65% on this tracker's estimates — after the £295m window is counted. Out of Europe, Spurs' green threshold is 85% (European qualifiers get 70%), with the red threshold at 115%. The October 2026 checkpoint and 1 March 2027 assessment are the dates that matter.

Did Tottenham pass PSR after a club-record £121m loss?

On every published estimate, yes. PSR allows deductions for depreciation, academy, community and women's football — and Spurs' stadium generates a ~£70m annual depreciation charge, the league's biggest 'good spend' shield. That converts ~£210m of three-year headline losses into an estimated ~£20m PSR loss against the £105m allowance. Final assessment: January 2027.

Why did Spurs sell Luka Vuskovic before he ever played?

Bean counting. Brighton's £46m (+£4m add-ons) against a ~£12m book value books ~£34m of near-instant profit into the SCR denominator and the final PSR year — and Spurs kept a 20% sell-on plus matching rights on his next move. A player who never made a competitive appearance became one of the most profitable in the club's history.

So what's the catch?

The 25-man list. Spurs project to hold roughly 20 non-homegrown senior players for 17 slots — so the exits still to come (Bergvall bids, the Richarlison question) are about registration arithmetic, not money. Add Xavi Simons' ACL (wages and amortisation with zero minutes) and the fact that none of this headroom bought a top-half team last season.

The whole thing in two sentences: the new squad-cost rules judge spending against revenue, and no club's revenue-to-squad-cost gap is wider than Spurs' — so the league's most alarming football project is also its most comfortable balance sheet. The £295m window spends that gap; the risk lives in the 25-man list, the net debt and the table, not the rulebook.

Incomings & Outgoings

Summer 2026 window (opened 15 June, closes 1 September — delayed by the World Cup). A deal enters this table at a medical and not before: ADVANCED means terms agreed and the medical taken or booked, DONE means a club has announced it. Anything short of that is interest, however well sourced, and interest lives on the Rumours tab. Fees per media reports. Rows marked Advanced are closing in — agreed, or reported near agreement with personal terms done — but NOT announced by the club: they are counted in the totals at that stage and flagged, not presented as done. De Zerbi’s promised "bomba" still looks like Savinho: announced by both clubs on 25 August at £75m plus £10m of add-ons, five years to 2031 with an option of a further year. Held here at ADVANCED for five weeks while the reporting ranged from £60m to £68m — neither of which was the number.

Summer 2026 — Out

PlayerToFee £mWage £k/wkCost freed £m/yrProfit £mStatus

Summer 2026 — In

PlayerFromFee £mWage £k/wkSCR cost £m/yrStatus
Fees Out (sales)
Confirmed + advanced permanent deals
Fees Committed (buys)
Confirmed + advanced permanent deals
Net Window Balance
No registration gate applies — the constraint is the 70% ratio and the 25-man list
Annual Cost Freed (outs)
Wages + stopped amortisation leaving both SCR numerators
Annual Cost Added (ins)
Fee÷5 amortisation + wages + ~10% agent fee
Net SCR Swing
Change to the annual squad-cost numerator from this window
How the columns map to the rules: SCR cost / Cost freed hits the numerator of the PL's 85% squad cost ratio (and UEFA's 70% test, if Spurs return to Europe) · Profit feeds the SCR denominator and the final PSR year · Fees include no registration gate — Spurs can buy whatever the ratio and the 25-man list absorb. Wages are estimates.
Buys lead this window by design — the reverse of the selling clubs. Spurs' £294.5m gross spend is the league's biggest, funded by the ~£118m/yr of SCR headroom banked under years of Levy-era restraint. The bean-counting sale is Vuskovic: £46m against a ~£12m book with a 20% sell-on retained — near-pure profit from a player who never made a competitive appearance. Simons' ACL (suffered at Wolves in May) is why creativity, not just midfield steel, is where the remaining money points.

2025/26 Season — In (Summer 25 + Jan 26)

PlayerFromFee £mWindow

2025/26 Season — Out

PlayerToFee £mWindow
Last season's business — Kudus, Simons and Danso in, Son's Los Angeles farewell before it — was assembled for a European push that collapsed into a relegation fight. The one January sale, Brennan Johnson to Crystal Palace for £35m on 3 January, is the deal this page had been missing: a Palace club record at the time, but for Spurs a near-neutral piece of bean counting — roughly £31m of book value still on the £47.5m 2023 fee meant only about £4m of profit landed in FY26, against ~£4.2m/yr of wages and ~£8m/yr of amortisation freed. The two loans (Palhinha, Kolo Muani) came with no obligations, which is why relegation-adjacent Spurs carried no forced-spend risk into this summer: everything expensive was reversible.

Spending Headroom

"Room" means two things for Spurs in 2026/27: the PL squad cost ratio (green 85% of revenue + trading profit, red 115%), and — the quieter one — how much of the final PSR allowance the FY26 accounts consume. There is no registration gate and no UEFA test this season. The model below is adjustable — the defaults are my estimates, so put your own numbers in.

The window so far — fees in and out

Sales banked
Vuskovic £46m, Veliz ~£8m, Devine ~£6m, Thompson ~£4m — plus Dragusin's conditional obligation waiting offstage
Committed on signings
Tonali £92.5m, Fernandes £85m, van Hecke £52m, Savinho £65m at advanced stage (Robertson, Senesi & Dúbravka free)
Net window balance
The league's biggest net spend — legal, because the constraint is the ratio below, not a balance test
Committed but deferred: the window's small print — Savinho's £10m of add-ons on top of the announced £75m, £5m of it reported effectively guaranteed and none of it capitalised here until triggered, up to £7.5m of Tonali add-ons (fee rises to £100m on triggers), £4m of Vuskovic add-ons receivable, Dragusin's obligation converting the Fiorentina loan to a ~£17m sale on conditions, and the 20% sell-on Spurs retained on Vuskovic. None of it hits FY27's numbers today; all of it is queued for future summers. Bean counters call this "count later."

The Fined Four — July 2026's CFCB Round, Watched From Outside

Four English clubs were fined in UEFA's July 2026 decisions. Spurs — out of Europe, ratio ~65% — were not among them, and it's worth seeing what the market they're buying in looks like under that pressure.

Club2026 FineSuspendedBreachSettlementExit Route
Aston Villa£19.4m£12.9mSCR 2025 ("significant") · 2nd straight4-yr to 2028/29 · £9.5m paid 2025 · trend formally ENDORSED£144m of player-sale profits + record Visit Rwanda deal — selling the squad's appreciation
Chelsea£2.6mSCR · repeat4-yr · £26.7m paid, up to £51m conditionalAcademy sales (pure profit) + intra-group hotel sales the PL accepted — and now the Rogers/Garnacho tightrope
Newcastle£2.6m + £8.6mBOTH SCR and FER — the doubleObligations continue despite missing EuropeIsak to Liverpool for £125m — one sale to rule the FY25 accounts
Nottingham Forest£2.2mSCRAnderson to City for £116m weeks later — fine dwarfed 53:1 by one transfer
The pattern across all four: every exit route runs through selling players — Rogers to Chelsea, Anderson to City, Isak to Liverpool. Spurs sit on the other side of that trade: the fined clubs' compliance sales are the buying opportunities this window was built on (Tonali arrived from a Newcastle still carrying UEFA settlement obligations).
Why Spurs' headroom is structural, not clever: the SCR denominator is revenue plus player-trading profit, and Spurs' revenue is a top-three number built on a 62,850-seat stadium that also hosts the NFL, boxing, rugby and stadium-tour income. The numerator — wages plus amortisation — was kept lean through years of "we cannot spend what we do not have". Result: even after adding ~£59m/yr of new amortisation this summer, the ratio sits ~20 points inside the green line. The same numbers would pass UEFA's harder 70% test too — which is precisely the argument for why this rebuild is meant to end back in Europe.

Annual constraint — squad cost ratio model

Squad cost = player & head-coach wages + transfer amortisation + agent fees. Denominator = football revenue + net player-trading profit. Defaults assume no European revenue, continued NFL/events income and the full summer window on the books. Edit any figure:

PL SCR · green 85% · red 115%
green 85%
Europe test · UEFA/PL 70% (if Spurs qualify for 27/28)
limit 70%

What-if: add a signing

Added annual squad cost
amortisation (incl. 4% PL levy) + wages + est. agent fee
PL SCR after signing
vs the 85% green line
Window net balance after fee
No gate — context only. The real question is whether the player needs a non-homegrown list slot
Rule of thumb: every £1m/yr of ratio headroom buys either ~£5m of transfer fee (5-yr amortisation) or ~£19k/week of wages. On the default assumptions the ratio has roughly — enough for De Zerbi's promised "bomba" several times over. The practical ceilings are elsewhere: only ~17 non-homegrown list slots, and the discipline of not rebuilding the wage bill back to the 2010s' Champions League structure without the revenue that goes with it.
Caveats: revenue projection assumes NO European income, modest matchday/commercial growth on FY25's £565m and continued stadium-events revenue; relegation would have collapsed the denominator, which is why last season's final day was a nine-figure fixture. The wages figure is the SCR-relevant slice (players + head coach), not the £256m total FY25 staff bill. The amortisation estimate is accounts-based (~£110m FY25 charge, est) plus ~£59m/yr from this summer's fees, less sold players — labelled est because Spurs don't publish a player-by-player schedule. Agent fees are a separate SCR category; our estimate may double-count a few £m already capitalised inside amortisation — deliberately conservative. The PL's precise adjustments mean the true ratio will differ: treat this as a planning tool, not a compliance calculation.

Rumour Mill

The window shut at 11pm on 1 September 2026, and this tab is now mostly history. Nothing below can become an incoming transfer until January: a registration cannot be lodged outside the window, so every inbound link here is closed rather than pending, however well sourced it was. Three things the deadline does not close, which is why the cards are kept live rather than swept away. Free agents — a player already out of contract can be signed and registered outside the window. Outgoing moves abroad — several leagues closed later than England, so a player could still leave after English clubs had stopped buying: the Saudi Pro League runs to 6 September, the Süper Lig closed on 4 September and MLS on 2 September. Seven cards on this site point at one of those and are still live; every other card is now marked JANUARY and priced as a January deal rather than one that can happen today. Academy moves — an under-18 joining on training compensation is not moving a professional registration and is not bound by this deadline. Cards are left in place because a rumour that died at the deadline is a record of what was reported and what it was worth, and deleting them would quietly improve this site’s hit rate. The tick-box model still works: a JANUARY card prices what the deal would cost when the window reopens, which is the question actually worth asking about a link that survived the summer.

Everything on this tab is short of a medical. That is the line: a deal that has reached one sits in the Ins & Outs table, and everything below it — an offer, an agreement in principle, personal terms with no fee agreed, a bid lodged — is here, counting towards nothing until it moves. Tick any combination of live rumours (fees and wages are my estimates of reported figures) and the panel at the bottom recalculates the effect on the rules that actually bind Spurs: the PL's 85% squad cost ratio, the 70% Europe test, the window's net fee balance and booked sale profits. Uses the same base assumptions as the Headroom tab, so tweaks there flow through here. The "bomba" wildcard stays OFF this board: Savinho's £65m move from Manchester City sits in Ins & Outs at Advanced (personal terms agreed, fee being finalised, unannounced as of 9 Aug) and is already priced into the base case below. What remains here is the rest of the winger list (Gakpo, Schade, Sancho) plus the exits that would pay for it — a board that has since lost its biggest name to the transfer table: captain Cristian Romero completed his move to Atlético Madrid on 15 Aug and now sits in Ins & Outs, not here. Guglielmo Vicario (Juventus, and a loan rather than the sale this page first modelled) joins Richarlison, Bergvall, Sarr and Solanke on the out side.

Incoming rumours

Outgoing rumours

Window net fees
Δ annual squad cost
PL SCR (85%)
Europe test (70%)
Profit booked
Tick the rumours above to model a scenario — and change any fee or wage to model your own number instead of this tracker’s.
How each lever maps to the rules: an incoming deal adds (fee + the PL’s 4% levy)÷5 + wages + ~10% agent fee to the SCR numerator — and, if the player is a senior non-homegrown arrival, consumes one of the ~17 quota slots that are Spurs' genuinely scarce resource. An outgoing deal frees wages + remaining amortisation from the numerator and books profit (fee − book value) into the denominator. That's why a Bergvall sale at the ~£60m Brighton are reported preparing — £8.5m fee, mostly unamortised — is the single most efficient lever on this board: ~£55m of near-pure profit and barely £3m/yr of lost squad cost (though as a U21-exempt player he frees no list slot; the Romero sale did, and a Richarlison exit would). The football judgement is a different question entirely.

Squad · Book Value & Amortisation

Senior squad after this summer's confirmed exits. Book value is computed live: straight-line amortisation of the reported fee from signing date to current contract end (extensions re-spread the remaining value — this is the standard treatment). Wages are third-party estimates (Capology/SalaryLeaks-style databases, cross-checked Jul 2026) — not official. Tap a column to sort.

Player Pos Fee £m Signed Contract End Yrs Left Amort £m/yr Book Value £m Mkt Val £m Profit If Sold £m Est Wage £k/wk
Savinho is a Spurs player as of 25 August, announced by both clubs at £75m plus £10m of add-ons on a five-year deal to 2031. He carried an ADVANCED · UNANNOUNCED flag on this page for five weeks while the reporting ranged from £60m to £68m — neither of which was the fee. He is counted in full, and his contract end is ASSUMED at 2031 pending an announcement; if the move collapses, his ~£13m/yr comes straight back out. 💰 highlighted rows = est. profit if sold ≥£20m — where market value towers over book value. Bergvall is the standout (£8.5m fee in 2024, £50m valuation: ~90% pure profit — which is exactly why Newcastle's £46m and Forest's £38m bids were entertained rather than laughed off). Udogie's 2022 fee is largely amortised; Kulusevski carries a mid-fee book against a strong market value. These are the bean counter’s favourite players and the football department’s dilemma. Market values are Transfermarkt-style estimates — except Bergvall (£50m), which uses Spurs' reported asking price per the Rumour Mill. Not listed individually (academy/low book value or out on loan): Dragusin shows with his Fiorentina loan flag; academy names (Ajayi, Hardy, Olusesi etc.) are collectively immaterial to the amortisation picture but pure profit if ever sold. Free transfers & academy players carry £0 book value (that's why selling them is pure PSR profit). Undisclosed fees estimated where flagged ~. Add-ons are treated differently on the two sides of the ledger, and this page says so rather than quietly netting it out: both an incoming and an outgoing fee are modelled at the guaranteed amount, with add-ons counted only when they trigger. This caption used to claim the opposite for incoming deals — that they were modelled all-in — and that was a description of a rule this site does not follow: every incoming row bar two was already on the guaranteed basis, and the two exceptions, Suzuki and Ruggeri, were brought into line on 2 September. Contingent money is not capitalised until it is owed, which is the conservative reading and the one the corrections here have consistently enforced. New-signing wages are estimates until the databases catch up with the window. Amortisation shown on remaining contract; the PL and UEFA both cap the amortisation schedule for new deals at 5 years even on longer contracts. FIFA’s 5% solidarity contribution is deducted from an international fee, not added to it: a buying club pays the headline number and distributes the 5% out of it, so a purchase costs the full fee; a club selling abroad banks 95% and books its profit on that. Domestic sales are untouched. Both sides are modelled here.
Squad Book Value
Sum of estimated carrying values
Annual Amortisation
Current squad only. Club-wide FY25 charge ~£110m (est) — this summer adds ~£59m/yr
Est. Squad Wages
Estimated senior squad only. Total club FY25 wage bill: £256m (incl. staff, bonuses)
Simons' ACL and the SCR — three hits, no offset: an injury gives no relief under the Squad Cost Ratio. (1) His wages (~£7m/yr est.) stay in the numerator in full while he plays zero minutes — he was stretchered off at Wolves in May, is expected to miss much of 2026/27, and missed the World Cup. (2) His ~£10m/yr amortisation on the £51.8m fee keeps charging regardless. (3) A player signed to be the creative centrepiece can't be sold, loaned or replaced cheaply — the Fernandes fee is partly Simons-shaped. And unlike Amadou Onana's World Cup injury at Villa, this one happened in a club fixture, so FIFA's Club Protection Programme pays nothing: the full cost stays on Spurs' book. The one consolation is bean-counting scale: at a ~70% ratio, Spurs can absorb a £17m/yr passenger that would genuinely hurt a club pressed against 70%.

Amortisation Runway — What's Already Committed

Transfer-fee amortisation locked into future seasons from today's contracts (straight-line on remaining book value), plus the Tonali add-ons if triggered. This is spending that's already eaten before Spurs buy anyone else.

Assumes current contracts run to term (sales remove their bars; extensions re-spread them). Amber = Tonali's ~£7.5m of add-ons (fee £92.5m → £100m), spread from FY28 if triggered — committed but not yet on the books.

Premier League homegrown quota — 2026/27

Two ceilings, not one. A club may register 25 senior players, and no more than 17 of them may be non-homegrown. The familiar “eight homegrown” line is what falls out of those two numbers — but only if you fill all 25. A club with six qualifiers is not breaking any rule; it simply cannot name a squad bigger than 23. Under-21s sit outside the list altogether and play regardless: for 2026/27, born on or after 1 January 2005. Players out on loan are not registered.

Homegrown is a registration test, not a passport test. Three entire seasons, or 36 months, at any club affiliated to the FA or the FAW before the end of the season in which the player turns 21. That is why Kevin Danso qualifies — Austrian, but in England from the age of six and registered at Reading and MK Dons — while Andy Robertson does not: Queen's Park and Dundee United are Scottish FA clubs, and Hull came at 20.

Spurs are full, in the most literal sense the rule allows. 24 of the 25 places are used and two look free — but at 6 homegrown and 18 non-homegrown the non-homegrown ceiling is exactly full. Not one more player without a British passport-equivalent registration can be added, whatever he costs and whoever leaves. The only signings that fit are homegrown ones or under-21s.

One player is the reason it is 17 and not a breach, and he arrived from France. Wilson Odobert became homegrown this season by accrual, not by transfer: Burnley in 2023/24 and Spurs in 2024/25 and 2025/26 are three entire seasons, and because he turned 21 in November 2025 the window ran to the end of that season. Without him Spurs carry five qualifiers and cap at 22 — one below the squad they have actually registered. Three players are under 21 — Archie Gray, Lucas Bergvall and Mathys Tel — and play outside the list; Gray is the only one who brings a homegrown place when he ages in.

Premier League 25-Man Squad List — 2026/27

No UEFA List A this season — Spurs didn't qualify for Europe. The list that matters is the Premier League's: 25 players maximum, of whom no more than 17 can be non-homegrown (HG = three seasons registered in England/Wales before the 21st birthday). Under-21s (born on/after 1 Jan 2005 for 2026/27) don't need a slot at all. Lists are submitted after the window shuts, ~2 September.

List Transition · 17th-Place Squad → De Zerbi's Rebuild

Each position: who's gone since last season's list, who stays, and who fills the hole — with deal status. The financial story is simple (huge headroom); the registration story isn't: our audit counts roughly 20 non-homegrown seniors chasing 17 slots (est).

Goalkeepers

Out · 0
Nobody
Retained · 2
Guglielmo VicarioJUVENTUS TALKS · SPURS GREEN LIGHT · NON-HG
Antonín KinskýSTAYS · NON-HG
In · 1
Martin DúbravkaFREE · EXPERIENCED NO.2 · NON-HG
NET: three senior keepers, all non-homegrown — three quota slots gone before an outfielder is named. The kind of detail that turns a "comfortable" window into a squeeze — and the likeliest reason Spurs have green-lit Vicario's Juventus talks (see Rumours), which would cut it back to two.

Defenders

Out · 3
Cristian RomeroATLÉTICO MADRID £30.4m · CAPTAIN SOLD · FREES A NON-HG SLOT
Luka VuškovićBRIGHTON £46m+£4m · 20% SELL-ON KEPT
Radu DrăgușinFIORENTINA LOAN · CONDITIONAL OBLIGATION
Retained · 5
Pedro PorroSTAYS · NON-HG
Destiny UdogieSTAYS · NON-HG
Kevin DansoSTAYS · NON-HG
Djed SpenceSTAYS · HOMEGROWN
Archie GraySTAYS · HG · NO LONGER U21-EXEMPT
In · 3
Jan Paul van Hecke£52m FROM BRIGHTON · NON-HG
Marcos SenesiFREE FROM BOURNEMOUTH · NON-HG
Andy RobertsonFREE FROM LIVERPOOL · NON-HG (SCOTTISH-TRAINED)
NET: 2 out → 3 in, and the back line De Zerbi builds from is transformed — but all three arrivals are non-HG (Robertson's youth years were in Scotland, which doesn't count). The Vušković sale was quota-neutral (he'd have been U21-exempt) — pure bean-counting.

Midfielders — the £177.5m rebuild

Out · 3 (+1 injury)
Yves BissoumaCONTRACT EXPIRED · FREE
João PalhinhaLOAN ENDED · SPURS PASSED ON PERMANENT
Randal Kolo MuaniLOAN ENDED (LISTED FWD/MF ROLES)
Xavi SimonsACL AT WOLVES (MAY) — OUT LONG-TERM · NOT A SALE
Retained · 5
Rodrigo BentancurEXTENDED (REPORTED TO 2030) · NON-HG
Pape Matar SarrSTAYS · NON-HG
James MaddisonSTAYS · HOMEGROWN
Dejan KulusevskiSTAYS · NON-HG
Lucas BergvallBIDS REJECTED · BRIGHTON PREPARING ~£60m · U21-EXEMPT
In · 2
Sandro Tonali£92.5m CLUB RECORD · NON-HG
Mateus Fernandes£85m FROM WEST HAM · NON-HG
NET: the engine room rebuilt at record cost — Tonali and Fernandes both beat the old Solanke record inside a fortnight. Both need non-HG slots; Bergvall doesn't (born Feb 2006), which is the quota logic hiding inside the "sell Bergvall?" debate.

Forwards

Out · 3
Brennan JohnsonCRYSTAL PALACE £35m · JAN 26 · HG PLACE LOST
Alejo VélizBAHIA ~£8m
Alfie DevinePRESTON ~£6m · ACADEMY = PURE PROFIT
Retained · 4
RicharlisonTOP SCORER (11) · JUVE / FENER TALKS OPEN · NON-HG
Dominic SolankeSTAYS · HOMEGROWN
Wilson OdobertSTAYS · NON-HG · NOT U21-EXEMPT (b. Nov 2004)
Mathys TelSTAYS · NON-HG · U21-EXEMPT (b. Apr 2005)
In · 1 (advanced)
Savinho£75m FROM MAN CITY · ANNOUNCED 25 AUG · NON-HG
Gakpo / Schade / Sancho…REST OF SHORTLIST — NOT ADVANCED · SEE RUMOURS
NET: Johnson's January sale plus 2 fringe sales out, and the promised marquee attacker still looks identified — Savinho, personal terms agreed and the clubs closing in on a fee (~£60–68m reported; £65m used), but unannounced by either club as of 9 Aug. He is a senior non-homegrown winger, so the circle the Richarlison and Bergvall storylines have to square stays tight: 19 non-HG bodies for 17 slots after Romero’s sale to Atlético — which is exactly why the Vicario talks are still being tolerated.
Homegrown status per the PL definition (three seasons/36 months registered with an English or Welsh club before the 21st birthday) — our classifications are estimates from career histories, not an official list. U21 exemption for 2026/27 = born on or after 1 Jan 2005: Bergvall and Tel qualify; Gray, Odobert and Kinský no longer do.
The count that shapes the run-in: tally the seniors above and Spurs hold roughly 19 non-homegrown players for 17 slots (est, one fewer since Romero’s 15 Aug sale) — with only ~4 homegrown seniors (Maddison, Solanke, Spence, Gray) plus academy names to fill the balance of the 25, one fewer since Brennan Johnson's January move to Palace. The non-homegrown count is unchanged by that sale — Johnson filled a homegrown place, so his exit thins the side of the list Spurs can't buy their way out of. Dragusin's loan removes one and Romero's sale has removed another; a Richarlison or Vicario exit would remove a third (both still in live talks — see Rumours), while a Bergvall exit would not (U21-exempt) — and the non-HG "bomba" arrival is still advanced, with Savinho at £65m, which is why the count sits at 19 rather than 18. On this arithmetic an exit stops being optional. This — not money — is the constraint every deadline-day decision will be optimising.

Sanctions & Regulatory Record

The short version: on the modern financial rules, Spurs' record is clean — no PSR charge, no UEFA financial-rules fine, no settlement, no embargo. The club's regulatory history lives further back, and the entries below are the honest full list.

The SCR Glidepath — Comfortably Under

100% 85% 70% 55% 40% PL GREEN LINE 85% (NON-EUROPEAN CLUBS, FROM 26/27) UEFA 70% (ONLY WHEN IN EUROPE) FY2024FY2025FY2026FY2027 ~59% est ~63% est · EL-winning season ~66% est · CL + 17th ~65% proj · post-window
All points are this tracker's estimates (wages + amortisation + agent fees over revenue + trading profit) — neither the PL nor UEFA publishes club ratios. The story: even a club-record £295m window barely moves Spurs against an 85% line their revenue makes generous.
1994

The FA financial irregularities case — the club's one true sanction

Found guilty of making irregular loan payments to players in the 1980s (pre-ENIC, under the previous ownership): initially a 12-point deduction, an FA Cup ban and a £600,000 fine. On appeal the points were restored and the Cup ban lifted, with the fine increased to £1.5m — then a record. It remains the only major financial-rules punishment in the club's history, and it predates every rule on this page.

March 2023

Paratici banned — a person, not the club

Managing director of football Fabio Paratici's 30-month Italian FA ban (for Juventus-era accounting, unrelated to Spurs) was extended worldwide by FIFA; he resigned. No charge attached to Tottenham — but it put the club's football leadership in the compliance headlines for a year.

September 2025

Levy leaves — governance overhaul, not sanction

After 24 years, executive chairman Daniel Levy departs at the owners' request following an external review; Peter Charrington becomes non-executive chairman and Vinai Venkatesham CEO. Included here because it's the moment the "we cannot spend what we do not have" era formally ended — the balance-sheet discipline that created today's headroom was his legacy, spent by his successors. Levy's ENIC stake was subsequently sold (reported June 2026, to Eight Sports Capital).

2025/26 season

Conduct fines, not compliance ones

The season's disciplinary entries were ordinary-course: FA/UEFA crowd-conduct fines (including a reported £75k FA fine over crowd misconduct v Manchester United, and a minor UEFA disciplinary fine during the Champions League campaign, April 2026). Nothing financial-rules related. For a club that sacked two managers, finished 17th and exited the CL in the round of 16, the compliance file stayed remarkably empty.

30 June 2026 → Jan 2027

The final PSR cycle closes — expected pass

FY24 (−£26m) + FY25 (−£121m, club record) + FY26 (est) aggregate to roughly −£210m of headline losses — but with ~£70m/yr of stadium depreciation plus academy, community and women's football deductions, the PSR calculation lands around −£20m (est) against the £105m allowance. Accounts due 31 December 2026; the league's final-ever PSR assessment follows in January 2027. Then the regime that Spurs' stadium was practically designed for gives way to SCR + SSR — which suit them even better.

July 2026

Watching the fines from outside

UEFA's CFCB fines Aston Villa (£19.4m), Chelsea, Newcastle and Forest over the 70% squad cost ratio. Spurs — out of Europe, ratio ~65% (est) — face no UEFA jurisdiction at all this season, and instead spend the month buying from the constrained (£92.5m to Newcastle for Tonali). The cleanest sanctions page in this corner of the league table, for now.

Last Accounts — FY2024/25 (y/e 30 June 2025)

The season of the Europa League win under Postecoglou and the Frank appointment that followed — published April 2026, straddling the fall that came next. Headline: record £565m revenue. Reality: a club-record £121m pre-tax loss underneath it.

Revenue (club record)
£565.3m
+7% on FY24's £528m — top three in the league
Pre-tax result
−£121m
Club's worst ever · league's 2nd worst FY25, behind Chelsea's −£262m
Post-tax result
−£94.7m
"Depreciation, amortisation, player trading, interest and taxation" — the club's own list
Wage bill
£256m
+£34m (15%) on FY24's £222m · still only ~45% of revenue — lowest big-club ratio
Net debt
£831.2m
Up from £772.5m — the stadium loan book · long-dated & fixed-rate
Stadium depreciation
~£72m EST
The league's biggest PSR-deductible charge — the number that makes the £121m loss survivable

Revenue mix

Commercial
£277m
Broadcasting
~£162m
Matchday
£126m
Match receipts +19% year on year (£106m → £126m) — the stadium doing exactly what it was borrowed for. Broadcasting figure is the implied remainder (est) and includes the Europa League-winning run's UEFA distributions. Commercial (£277m, +£22m) includes the NFL partnership, concerts, boxing, rugby and the stadium-tour/attraction business — the income that exists whether or not the football is any good.

How £565m became −£121m

Revenue+£565.3m
Wages−£256m
Other operating costs incl. event/stadium ops & exceptionals (managerial changes) ~est, balancing−£213m
Stadium & other depreciation ~est−£72m
Player amortisation & impairment ~est−£110m
Profit on player sales ~est+£10m
Net finance costs ~est−£45m
Pre-tax loss−£121m
Only revenue, wages, the pre/post-tax results and net debt are confirmed line items from reporting on the published accounts; the cost lines marked ~ are this tracker's estimates arranged to reconcile, pending the full Companies House detail.
What changes in the next two sets of accounts: FY26 (published ~spring 2027) gets the Champions League league-phase and round-of-16 money (£70m+ est) plus the ~£4m profit on Brennan Johnson's £35m January sale to Palace (the fee was large; the profit wasn't, because ~£31m of the 2023 fee was still on the books) — probably another revenue record even with 17th place. The Vušković, Véliz and Devine profits fall the other side of the 30 June cut-off, into FY27. Then FY27 loses Europe entirely and absorbs ~£59m/yr of new amortisation from this window: the bean counter's forecast is the revenue line flat-to-down and the cost line up — exactly the profile the 85% SCR was designed to police. Ownership backdrop: ENIC hold 86.58%, the Lewis family trusts behind it; the board says the club is not for sale after rejecting two approaches, and Levy's personal ENIC stake was reported sold in June 2026.
The whole story in one line: the stadium costs £831m of net debt and ~£72m/yr of depreciation — but the depreciation is PSR-deductible, the revenue it generates is SCR-denominator, and so the same asset that looks like the club's biggest liability is the reason it has the league's most comfortable compliance numbers.

Rules & Compliance Status

Every regime that touches Spurs in 2026/27, the limit in pounds, and where the club stands. "FFP" itself no longer exists as a single rule — it's the old umbrella name, now split into UEFA's FER + SCR (not applicable to Spurs this season) and the Premier League's PSR (final year) becoming SCR + SSR.

COMPLIANT WATCH / SQUEEZE NOT COMPLIANT

Compliance calendar

1 Sep 2026WINDOW CLOSES 11PM
~2 Sep 2026PL 25-MAN LIST DUE
Oct 2026PL SCR MONITORING
31 Dec 2026PSR ACCOUNTS SUBMISSION
Jan 2027FINAL PL PSR ASSESSMENT
1 Feb 2027JANUARY WINDOW SHUTS
1 Mar 2027PL SCR ASSESSMENT
~31 Mar 2027FY26 ACCOUNTS FILING DUE
7 Jul 2027SSR TESTS
Premier League · to end of 2025/26
Expected pass

PSR — Profitability & Sustainability

LIMIT: £105m max pre-tax loss over rolling 3 years (£15m if not equity-funded)
BasisClub financial years (Spurs' y/e 30 June) — aggregate of FY24 + FY25 + FY26.
What countsAggregate 3-yr pre-tax result, with deductions for infrastructure depreciation, academy, community & women's football costs. This is where the stadium earns its keep: ~£70m/yr of depreciation is deductible "good spend".
SpursHeadline cycle: −£26m (FY24) −£121m (FY25, club record) + FY26 est ≈ −£210m. After deductions the PSR result lands ≈ −£20m (this tracker's estimate) — comfortably inside £105m, with ~£85m of headroom. The FY26 estimate now carries the ~£4m profit on Brennan Johnson's January sale to Palace — a £35m fee against ~£31m of remaining book value, which is why a headline-grabbing transfer barely registers here and the ~£85m estimate is left where it stands. No charge, no monitoring, no noise: Spurs have never been the subject of a PSR complaint.
DeadlineAccounts submitted by 31 Dec 2026 → final-ever PSR assessment January 2027. After that the rule is retired.
Premier League · live from 2026/27 · the binding framework
Comfortable

SCR — Squad Cost Ratio (PL)

CLUBS NOT IN EUROPE (incl. Spurs): green 85% · red 115% — CLUBS IN EUROPE: green 70% · red 100%
BasisSeason / financial year (2026/27, y/e 30 June 2027). Squad cost = player & head-coach wages + transfer amortisation/impairment + agent fees; denominator = revenue + net profit on player sales.
What countsTwo-tier enforcement: over green but under red = financial penalty (levies bite from 2027/28); over red = risk of sporting sanctions. Using the green-to-red buffer RATCHETS: next season's red threshold drops by the amount used, earned back at 10%/season of full compliance. Equity top-up: +£33m/3yr (max £15m/season) for non-European clubs.
Spurs~65% projected on the model defaults, even after £295m of buys — roughly £115–120m/yr of permissible squad cost unspent. That comfort is structural: top-three revenue over a wage bill run at ~45% of it. Missing Europe is worth 15 points of threshold (85 vs 70) — the one financial upside of 17th place.
DeadlineMonitoring checkpoint October 2026; formal assessment 1 March 2027, after the January window. 2026/27 is a transition year — levies for breaches only from 2027/28.
Premier League · live from 2026/27
Watch — the debt rule

SSR — Sustainability & Systemic Resilience

TESTS: liquidity headroom ≥ £0 after an £85m stress test · positive equity ratio ≤90% (26/27) → 85% (27/28) → 80% (28/29+)
BasisTested 7 July each year, covering the current and following season. Not a spending cap — solvency tests. 40% of squad market value counts as a liquid asset; the £85m stress test models the bad scenario Spurs just lived through twice.
SpursThe interesting case: £831m of net debt is the league's largest — but it's long-dated, fixed-rate stadium borrowing against an appreciating asset, revenue covers interest several times over, and ENIC has injected equity when needed (£97.5m in 2022). Amber for the headline number and the two straight relegation scares that made the stress scenario feel less theoretical; no indication of an actual failure.
DeadlineIn-season submissions from the start of 2026/27; first full tests 7 July 2027.
UEFA · not in scope 2026/27
N/A — no Europe

SCR + FER — UEFA's Rules

SCR: squad cost ≤ 70% of adjusted revenue + net transfer profit (calendar year) · FER: max ~£52m/€60m loss over 3 years
BasisApply only to clubs in UEFA competition. Spurs finished 17th, so neither test applies in 2026/27 — the CFCB has no jurisdiction over the club this season.
RecordClean. In the 2025/26 CL season (calendar-2025 test) Spurs were not among UEFA's squad-cost offenders — the July 2026 fines hit Villa, Chelsea, Newcastle and Forest instead. No settlement, no suspended fines, no FER file.
Why it still mattersThe rebuild's stated aim is Europe, and qualification would swap the 85% domestic cap for 70% on BOTH clocks. On today's estimates Spurs pass 70% too (~65%) — but the "Europe test" bar on the Headroom tab is the one to watch before any further wage escalation: the gap between comfort and the Villa treatment is about 5 points of ratio.
Premier League Rules · squad registration
The real gate

25-Man Squad List & Homegrown Quota

LIMIT: 25 players max · no more than 17 non-homegrown · U21s (born ≥ 1 Jan 2005) exempt
BasisHomegrown = registered with an English/Welsh club for three seasons (36 months) before the 21st birthday. Lists submitted after each window; changes only between windows.
SpursThe binding constraint of the whole summer: ~20 non-HG seniors for 17 slots on our count (est), with only ~4 homegrown seniors. Dragusin's loan clears one; the Bergvall bids and the Richarlison question are, in registration terms, the same story. Any non-HG "bomba" arrival must displace someone.
DeadlineList due ~2 September 2026; next amendment window February 2027.
UEFA Annex G.3.5 + PL FMV protocols
No exposure

Swap-Deal / Fair-Value Rules

TEST: opposite-direction transfers between the same clubs within ~45 days on similar terms = an EXCHANGE, valued at the LOWER of fee and book value; the PL runs fair-market-value protocols on registrations
What countsThe rule built for the Villa–Chelsea–Everton academy swaps of 2024, now enforced hard: UEFA has reportedly issued formal warnings over inflated swaps this summer. The PL's own FMV assessment (Handbook App 19) applies to Spurs domestically.
SpursNo live exposure — this window's Brighton traffic (van Hecke in for £52m, Vušković out for £46m) is the nearest thing to a two-way trade, but the deals were separately negotiated, weeks apart, with independent fees near market estimates, and the PL (not UEFA) is the only judge since Spurs aren't in Europe. Worth watching only if a Bergvall-to-Newcastle deal ever crossed with further Tonali add-on structuring — the bean counter's eyebrow rises, nothing more.
Terminology · where "FFP" went

FFP → what it means now

"Financial Fair Play" (2010) was rebranded by UEFA in 2022 as Financial Sustainability Regulations: solvency (no overdue payables) + stability (FER) + cost control (SCR). Domestically, the PL's version was PSR (2013), replaced by SCR + SSR from 2026/27. So when pundits ask how a 17th-placed club can spend £295m "under FFP", the precise answer is: because the rule that now exists is a revenue-relative cap, and Spurs have the league's most favourable revenue-to-cost gap. There is no absolute spending limit to breach.
Accounting mechanics

Amortisation & "pure profit"

Fees spread over the contract (max 5 years); sale profit = fee received − remaining book value − any sell-on shares owed, booked instantly. Academy products (Devine ~£6m) are ~100% profit; Vušković's £46m against a ~£12m book books ~£34m at once. Buying works the other way: Tonali at £92.5m adds only ~£18.5m/yr of cost. That asymmetry — sales count now, buys count slowly — is why a £295m window moves the ratio by only a few points, and why Bergvall at £50m would practically pay for Fernandes in compliance terms.

The Whole League — Bean Counted

All 20 clubs for 2026/27: which SCR tier they're in, their latest published accounts (FY2024/25, y/e mid-2025), and their compliance baggage. Nine clubs in Europe carry the 70% green / 100% red caps; the other eleven — Spurs included — get 85% / 115%. Notes updated 4 Aug — officially announced deals and appointments only; pursuits and links stay in the Rumour Mill. Figures marked ~ are estimates from league-wide analyses rather than confirmed line items — FY25 league totals: £6.8bn revenue, £4.4bn wages, £2.0bn amortisation, £948m aggregate pre-tax losses.

ClubEurope 26/27Green capRev £mWages £mW/RCompliance notes
ArsenalCL · CHAMPIONS70%~617~328~53%Comfortable on both ratios; CL runners-up 25/26. Amortisation £170m+ the main cost line.
Manchester CityCL70%~715408~57%New era: Maresca replaces Guardiola. Broke the British record for Forest’s Anderson (£116m, fixed fee) — absorbed inside 70% by a £715m revenue base.
Manchester UnitedCL70%~666~313~47%Carrick made permanent manager; ~£85m midfield rebuild (Santos £50m, Tielemans £35m from Villa). £196m amortisation, but a £666m denominator makes 70% easy.
Aston VillaCL · EL HOLDERS70%37827372%Mid-UEFA-settlement, fined twice but trend formally endorsed; the £117m British-record Rogers sale to Chelsea is the exit route.
LiverpoolCL70%~614~386~63%Iraola officially appointed (4 Jun, 2-yr deal) after Slot was sacked a year on from the title. FY25 wages inflated by title bonuses after £241m on Isak (£125m) & Wirtz. Squad cost £545m, big denominator.
BournemouthEUROPA70%~175~140~80%Flagged spending near capacity in FY25 — and first-ever Europe now drags them from 85% to the 70% cap just as Iraola officially left for Liverpool. The squeeze case, squeezed further.
SunderlandEUROPA70%~180*~95*~53%*FY25 = first PL season back. Europe two seasons after League One — the 70% cap lands on a still-growing revenue base.
Crystal PalaceEUROPA · CONF WINNERS70%~190~135~71%Conference League winners — then Glasner officially departed for Forest. Second straight European season keeps them on the 70% cap, right on the line like Villa.
BrightonCONFERENCE70%~222~165~74%FY25 costs rose sharply on amortisation; historically balanced by elite player trading profits.
Chelsea85%~541~360~67%Xabi Alonso era. UEFA settlement (£26.7m paid, up to £51m conditional), fined again Jul 2026 — then broke their record for Rogers (£117m) days after loaning Garnacho to Villa, walking the swap-rule tightrope. League-high £212m amortisation; missing Europe eases the cap to 85%.
Newcastle85%~350~220~63%Fined Jul 2026 for BOTH SCR and FER breaches; FY25 leaned on selling Isak to Liverpool for £125m. Settlement obligations continue despite missing Europe.
TOTTENHAM HOTSPUR85%56525645%The subject of this tracker: lowest wage ratio among the big-revenue clubs, the league's most comfortable bean-counting position — being spent, at last, on a £295m De Zerbi rebuild after two 17th-place finishes. See every other tab.
Nottingham Forest85%~190~155~82%Fined £2.2m in Jul 2026 — then banked £116m selling Anderson to City, transforming the FER/PSR picture overnight. Glasner confirmed as head coach 6 Jul (reported club-record ~£13m/yr salary) — their FIFTH boss in 12 months.
Everton85%~187~160~86%Two PSR deductions in 23/24; new stadium revenue is the plan for growing under the 85% cap.
Fulham85%~180~145~81%Small-revenue cohort where 85% barely funds a competitive XI — the other side of the SCR squeeze.
Brentford85%~195~125~64%The sustainability model club — comfortable margin on every metric.
Leeds85%~150*~110*~73%*FY25 = promotion season. Second PL season consolidating.
CoventryPROMOTED · CHAMPIONS85%~45*~35*~78%*Championship-era accounts. PL broadcast money transforms the denominator overnight — big headroom if they spend sensibly.
IpswichPROMOTED85%~145*~115*~79%*FY25 reflects their last PL season. Straight back up at the first attempt.
HullPROMOTED · PLAY-OFFS85%~30*~28*~93%*Championship accounts. The biggest financial step-up in the division — SSR liquidity tests bite hardest here. In: Butland, ex-Villa Targett, Zambrano & Morita.
The tier divide is the story of 2026/27: nine clubs in Europe live at 70/100 while eleven live at 85/115 — and nobody benefits from the divide like Spurs: 15 points more threshold than the European clubs, applied to the third-biggest revenue in the league. That combination — big denominator, soft cap — is the arithmetic under the £295m window. UEFA settlement obligations (Chelsea, Newcastle, Villa) travel with those clubs regardless. And note the squeeze cases at both ends: Bournemouth and Palace dragged down to 70% by success, Fulham and the promoted clubs for whom even 85% of a small revenue is a hard ceiling.
Sources: Deloitte Annual Review (league totals), club accounts via Swiss Ramble/Maguire analyses, UEFA CFCB statements, PSRwatch estimates. ~ figures are estimates; * marks accounts from a different division. Every club has its own page with the full treatment — transfers, book values, A-list, headroom — via the menu at the top.

Who's Selling to Survive — Net Transfer Balance

Sorted by net balance — the top of this table is where the selling pressure lives, the bottom is where the money goes.

THIS WINDOW: disclosed fees on officially completed 2026 deals only; undisclosed counted £0, loans & frees excluded; the Garnacho £42.5m is next season's Chelsea spend. LAST 5 YEARS: net spend 2021/22–2025/26, Transfermarkt basis (€ converted), ~ = estimated. The two views tell one story from opposite ends for Spurs: a heavy five-year net spend that bought two 17th-place finishes — and now the league's biggest window anyway, because the SCR judges ratios, not track records. The selling clubs at the top of the window view (Newcastle, Forest, Villa) are largely selling to UEFA's rulebook; Spurs are the club they're selling to.

Can You Fall Out of the Big Six? Spurs Are the Test Case

The question underneath every number in this tracker, inverted. The rules were written to stop challengers spending up to the elite — but what happens when an elite-revenue club plays like a relegation candidate for two straight years?

Why the fall hasn't hit the balance sheet yet

The 85% rule is a percentage of revenue — and Spurs' revenue barely noticed 17th place. Commercial (£277m) is contracted years out; the stadium's NFL/concert/tour income (£126m of match receipts and climbing) exists independent of league position; broadcasting floors are league-wide. So while the football collapsed, the denominator held — and two decades of "we cannot spend what we do not have" kept the numerator at ~45% of it. Result: the worst league campaign of the SCR era produced the biggest spending headroom of the SCR era. The rules don't just pull the ladder up behind the elite; they hold a safety net under them.

Why the clock is running anyway

1 · Revenue decays with absence. No Europe in 26/27 removes £50–90m/yr of UEFA money; a third bad season starts eroding commercial renewals and the matchday premium. The denominator is sticky, not immortal — ask the 2010s versions of Milan. 2 · The wage bill is being re-levered. Tonali, Fernandes and van Hecke and Savinho add ~£59m/yr of amortisation and £20m+/yr of wages: if the revenue line falls while the cost line steps up, today's 20-point cushion halves within two cycles. 3 · The squad-list squeeze taxes panic buying. Spending headroom on non-homegrown players Spurs can't register is the one way to waste it. 4 · Qualification flips the cap. The moment the rebuild works, the threshold drops 85% → 70% — success instantly consumes a third of the room that funded it. The bean counter's paradox of 2026/27: Spurs can only afford to spend like this while they're bad.

The bean counter's verdict: falling out of the Big Six sportingly takes two seasons; falling out financially takes closer to ten — and Spurs are spending year three's grace on the biggest window in the league to make sure nobody finds out what year five looks like. If De Zerbi's rebuild lands, this window is remembered as the mechanism working exactly as designed: banked discipline converted into squad at the moment of maximum need. If it doesn't, the FY28 accounts will show a rising cost line crossing a falling revenue line — the shape every sanctioned club on this page started with. The £295m isn't a gamble against the rules. It's a gamble against the calendar.

Changelog

Every update to the Bean Counter's data, newest first. Maintained manually with each rebuild.

3 Sept 2026

Danso to Sunderland on a loan with a £22.5m obligation, Tosin in from Chelsea OFFICIAL

Kevin Danso goes to Sunderland on a season loan with a £2.5m loan fee and a £22.5m obligation that triggers next summer. What moves this year is only the wage — ~£3.9m. The amortisation stays here: the £21m paid to Lens in 2025 leaves ~£14.8m of book value and ~£5.3m a year of charge on Tottenham’s books until the obligation actually converts.

Next summer that reverses sharply. £22.5m against a book value down to about £9.5m books roughly £13m of profit in a single line. An obligation is not an option: barring the trigger conditions failing, that profit is coming, and it is worth seeing a year early rather than as a surprise.

Tosin Adarabioyo arrives from Chelsea at about £7m on a five-year deal, replacing the homegrown place Danso took with him. Spurs sold a centre-back carrying £14.8m of book and bought one for £7m: the man leaving takes £5.3m/yr of amortisation off the numerator and the man arriving adds £1.5m. Ratio 69.2% → 69.7%, with the wage bridge moving £218m to £219m and amortisation to £182m.

2 Sept 2026

The Saudi deadline was five weeks out, and it is four days CORRECTION

This morning’s work put the Saudi Pro League window at 12 October and built a countdown, a gate and seven card tags on it. A reader said that sounded wrong — they had read it was days away. They were right.

The sources disagree. Wikipedia and Goal put the registration period at 22 July to 6 September; one tracker says 11 September; Sports Mole and AgentFlow say 12 October. The tell is arithmetic: 22 July to 12 October is 11.7 weeks, essentially FIFA’s twelve-week maximum for a registration period. That reads like somebody published the longest period permissible rather than the date actually announced. 6 September is 6.6 weeks, an ordinary window.

It is now carried at 6 September — the earliest credible date, chosen deliberately. The conservative error here is the early one: saying a shut window is open invents deals, which is the exact failure the window gate was written this morning to prevent. The countdown now reads four days rather than forty.

What is still unresolved: no source reachable from here separates Saudi domestic registration from international, so no such split is modelled. If one exists it is the international deadline that governs a sale out of England, and 12 October may well be a domestic-only extension rather than simply wrong. The date is flagged as contested on the deadline page rather than asserted.

Worth naming the pattern: the 12 October figure came from a single search result, and the source family it came from has now been wrong four times in this project — Hincapié’s fee, Trafford’s club, Fofana’s club, and this. A date that anchors a gate deserved a second source before it was written into twenty-one pages.

2 Sept 2026

The window is shut, and the site now says so — except where it isn’t CORRECTION

The Premier League window closed at 11pm on 1 September, so from the 2nd no rumour card here can describe a signing as something still pending: a registration cannot be lodged outside the window, however well sourced the link was. 139 cards are now marked JANUARY and priced as January deals rather than deals that can be done today.

But “the window” is not one thing, and flattening it would be the opposite error. A club that cannot buy can still sell: the Saudi Pro League runs to 6 September and the Süper Lig to the 4th; MLS closed on the 2nd. Bundesliga clubs finished earliest, on 31 August; Serie A, LaLiga and the Premier League all shut on the 1st. Six cards survive because they point at a league that outlasted England’s, and each has had its destination narrowed to the club that can actually still act. The seventh has already gone. Leon Bailey, whose card read “Al Diriyah” after Sevilla and Hull ran out of time, signed for Olympiacos on 2 September for £3.4m — which is the point of this section in one transfer. The English window shutting does not stop an English club selling, and it did not stop this one. It also proves a window this table does not list: Greece was still open on 2 September, and no closing date for it could be sourced, so none is stored rather than guessed.

The first countdown clock had been reading DONE against a label saying “days to window close”. It now counts to the Saudi deadline on 6 September — the one transfer deadline that still constrains these clubs, because they can still sell into it.

tools/check-window-state.js holds it: a card with no jan flag is asserting the deal can happen now, so its destination must sit in a window open today. It is date-driven rather than a one-off sweep — on 5 September the Türkiye cards stop being live and the gate says so without anyone remembering. It found six on Fulham that the first pass missed, because those rows are written with double quotes where the rest of the site uses single.

The countdown gate had a matching blind spot: it skipped any page without a club nav and only knew one label shape, so deadline/ was invisible to it — and was still counting to 1am on 1 October, the exact GMT-versus-BST bug that gate was written for, fixed on twenty pages and left on the twenty-first. It now reads both shapes, both const and var, and every page that carries a clock.

2 Sept 2026

An eighteenth gate: no transfer recorded on only one page METHOD

The two worst misses of this window were both one-sided. Liam Delap’s £45m move from Chelsea to Nottingham Forest was on neither club’s page, and Daniel Muñoz’s £20m move from Crystal Palace to Forest was absent from both too. Between them that is £65m of Forest’s spending, and their absence had Forest reading as comfortably compliant when the club is in fact over the 85% limit.

Nothing on this site could see either. The counterpart check compares fees for a player who appears on both pages — a different question, and one that is silent when a row is simply missing. There is no contradiction to detect in an absence, only the absence itself, which is the same reason a completed deal can sit undisturbed in the Rumour Mill.

The new check asks the absence question directly: for every completed Premier League to Premier League deal, is there a matching row on the other club’s page? Loans are excluded, because the borrowing club may carry one as a squad row rather than an incoming deal, and academy moves are excluded, because a selling club has no book value in a youth player to record.

It found one live defect immediately. Robertson was “Andy” on Liverpool’s page and “Andrew” on Tottenham’s, and a name mismatch defeats the fee check exactly as it defeats this one — both gates were blind to him. The names are now standardised. Verified by deleting the Delap row and watching the gate name it, and both check.sh and CI run all eighteen.

2 Sept 2026

A live rumour card for a deal this page had already done CORRECTION

Radu Drăgușin, whose card projected a £17m permanent sale to Fiorentina when the loan had already happened.

Why it matters: a live card is priced by the scenario modeller. With the completed row in the table and the card still on the board, ticking it charged the same deal twice — once as history, once as a hypothetical.

Why nothing caught it: the rumour-already-gone check only compared a card against deals completed at other clubs. If the player had landed at this club, the check skipped him, and outgoing cards were never examined at all. So the one case guaranteed to double-count — a card for your own completed deal — was the one case invisible to the gate. Six cards were in that state across five clubs.

The check now also reads each page’s own Ins and Outs tables, in both directions, and fails on any live card for a deal already recorded there. Verified by reviving one of the six: the gate fails, and passes again once the card is dead. Marking a card dead does not move the headline ratio — the completed row was always counted — it only removes the card from the modeller.

2 Sept 2026

Mudryk’s loan was recorded on neither page DATA

Mykhailo Mudryk joined on loan from Chelsea on deadline day, with Spurs holding a £75m option to buy, and neither this page nor Chelsea’s had a row for it. He is now in the Ins table and the squad.

This year the cost is the wage, not the £75m. No amortisation transfers on a loan, so nothing of Chelsea’s original £62m touches the Tottenham numerator. The option is not modelled until Spurs exercise it — which is what separates it from the Marmoush obligation above, recognised from conversion because an obligation is not a choice.

Net effect: the wage bridge derives £218m rather than £210m and the ratio goes 67.9% → 69.2%, headroom £95.9m against the 85% limit. The Marmoush loan-versus-purchase comparison further down has been recomputed off the new baseline.

2 Sept 2026

Lankshear was missing, and the Marmoush projections were the wrong way round CORRECTION

Will Lankshear’s sale to Middlesbrough was not on this page at all. Announced by the club on 22 July: permanent, five-year deal, £8m guaranteed with add-ons reported as high as £20m, plus a sell-on share and a matching right on any future bid. Academy product, so the book value is £0 and the guaranteed fee is all profit. Sales banked go £94.4m → £102.4m.

The Marmoush note had its two readings inverted, which is the more serious error. It quoted 70.4% for this site’s convention (obligation recognised from conversion, nothing capitalised now) against 68.2% for the stricter reading that capitalises the £50m immediately — saying, in effect, that booking a £50m asset and its amortisation improved the ratio. Adding a cost cannot lower a cost ratio.

Recomputed from the page’s own model: the loan reading leaves Spurs at 69.2% with £95.9m of headroom, and the purchase reading adds £10.4m/yr of amortisation to reach 70.9% with £85.5m. A difference of 1.7 points, and the stricter reading is the more expensive one — as it always was.

31 Aug 2026

Three pages had the window shutting four hours early CORRECTION

Hull, Coventry and Newcastle counted down to 7pm on 1 September. The window shuts at 11pm, which is what the other seventeen pages said and what their clocks ran to. On the eve of deadline day, three club pages were telling readers they had four hours less than they did.

Both halves were wrong together, which is why nothing looked odd on those pages: the label said 7PM and the clock counted to 19:00, so they agreed with each other and disagreed with the rest of the site. The first fix here only corrected the labels, and the new gate immediately failed for the right reason, catching a symptom fixed without its cause.

Also tidied: a squad-list deadline written as “after the window closes (~2 September)”, where the date belongs to the list and the parenthetical made it read as hedging on the window itself. And the Premier League checkpoint countdown was set to midnight UTC on 1 October, which is one o’clock in the morning here, because it was stored as though Britain were on GMT in October rather than BST.

tools/check-countdowns.js now renders each stored target through Europe/London and compares it to the label written beside it. Timezone is the whole difficulty: 22:00 UTC is 11pm in September and would not be in December, so the two can only be compared after conversion. Broken on purpose in both directions before being trusted, once with a wrong label against a right clock and once the other way about.

This was found because a reader corrected something said in conversation, not by anything that runs. Sixteen gates check this site and none of them read a clock.

31 Aug 2026

The bolding was doing too much work — 2,316 signposts dropped EDITORIAL

A reader said the site reads as though a machine wrote it. That is worth measuring rather than arguing with, so it was measured.

The design came out fine. Claret and blue are the club’s own rather than the cream-and-terracotta that generated pages default to, the display face is Barlow Condensed rather than Inter, corners are three or four pixels rather than fully rounded, and there are five emoji on a 530KB page. Nothing there needed changing.

The prose was the problem, and one habit dominated: a bolded editorial sentence opening almost every paragraph. There were 2,612 of them, roughly one bold span every 62 words across half a million words of text. Bold is for things a reader scans for — a fee, a name, a date, a verdict. Used on the thesis of every paragraph it stops marking anything at all, and it is one of the most recognisable tells there is.

2,316 of those have gone. Figures, names, labels and short verdicts keep theirs. No wording changed anywhere, only tags, so nothing about the analysis moved and the whole pass reverts with one command. Density goes from one bold every 62 words to one every 85.

Two things this does not fix, stated plainly because the difference matters. The em-dash rate is 17.3 per thousand words against one to three in edited prose, and that needs a slower pass: a blanket substitution produces comma splices. And underneath both is a rhetorical habit no script reaches — signpost, then aphorism, then antithesis, three times a paragraph. That is the thing the reader actually noticed, and it has to be rewritten by hand.

One note on method: the first attempt stripped the bold from the two sentences that state the medical rule, which tools/check-deal-stage.js holds byte-identical across all twenty pages. The gate failed and the sentences are excluded now. It was written to guard a transfer convention and it caught a typography change, which is the argument for gating wording as well as arithmetic.

31 Aug 2026

Agent fees to 10%, the wage gross-up to 1.55x — both were too low, and the FA publishes the proof MODEL CHANGE

Two constants underneath every figure on this site have moved, at a reader’s prompting. The agent fee charged on a signing goes from 5% of the transfer fee to 10%, and the wage gross-up from 1.45x to 1.55x. Both were estimates that had never been checked against a published source. Both now have one.

The agent rate was checkable all along. The FA publishes what every club pays intermediaries. Between 4 February 2025 and 2 February 2026, Premier League clubs paid £460.3m — against the £3,137m of incoming fees this site records for that window, an implied rate of 14.7%, nearly three times the 5% being charged. Chelsea alone paid £65.1m, Aston Villa £38.4m. 10% is the figure taken, deliberately below the implied ceiling: the FA total also covers sales, loans and contract renewals, and only the buy-side portion is capitalised into a transfer’s cost. It is a floor with evidence under it rather than a rule of thumb.

The gross-up was missing a whole category of pay. It covered employer NI, bonuses and image rights — but not signing-on fees, and UEFA is explicit that they count. Annex G.3 of the Club Licensing and Financial Sustainability Regulations: all forms of consideration to and/or benefit of players, such as sign-on fees, must be treated as employee benefit expenses and not costs of a player’s registration. So they belong in the numerator, they sit with the wage rather than the amortisation, and they spread across the contract as a prepayment for services. Employer NI alone is 15%, so of the old 45% only about 30 points were doing the work of bonuses, image rights and signing-on fees together. 55% gives that last item somewhere to live.

What actually moved. League-wide, the annual cost this window adds rises from £1,257m to £1,330m. Twelve clubs’ wage inputs were re-derived by the bridge and reset to it; no club crossed a limit, and headline ratios moved by at most 0.9 of a point — mostly downwards, which is worth understanding rather than glossing: the gross-up applies to the net wage movement, and most clubs sold more wage than they bought, so a bigger multiplier makes a negative movement more negative. Every projection built on an old baseline was recomputed too, not just the baselines.

One piece of tidying that mattered more than it looks. The gross-up existed as a named constant and then as five hard-coded copies of 1.45 in the same file, on all twenty pages. They all now read the constant. A number duplicated a hundred times across a site is not a convention, it is a hundred chances to change ninety-nine of them.

30 Aug 2026

Nothing below a medical belongs in the Ins & Outs tables RULE CHANGE

No row on this page had to move — every deal in the tables here was already at a medical or announced. The rule and its gate apply the same way, and the wording on both tabs now states it.

The status ladder ran done → advanced → in talks → offer, and all four rungs were rendered as rows in the deal tables. The bottom two contributed nothing to any figure — every total on this site filters to done and advanced — which made them arithmetically harmless and editorially loud. A reader scanning the Ins table saw rows the club had never agreed to, in the same table, in the same shape, as business that is done. Being excluded from the totals is not visible; being in the table is.

The threshold is now a medical. A deal enters at advanced — terms agreed and the medical taken or booked, awaiting only an announcement — and moves to done when a club announces it. A loan row is an agreed loan. Everything short of that is interest, however well sourced, and interest lives in the Rumour Mill, where it can still be ticked and modelled against the ratio. Nothing has been deleted. A row that counted towards nothing still counts towards nothing; it is just no longer sitting where settled business sits.

Four figures did move, and they moved because they had been wrong. The headline ratios, the swing and the window balance all filter to done and advanced and were untouched. But the amortisation column added to the deal tables sums every row in the table with no filter at all, and writes its total into a footer labelled “TOTALS IN (confirmed/advanced)” — a total that named a filter it did not apply. The same total feeds the “Added by this window’s deals” and “Net change” lines under the run-off chart. So unagreed deals were being amortised into figures that said they excluded them:

  • Crystal Palace — added by this window’s deals +£12.4m/yr → +£6.6m/yr, nearly halved, because Le Guen (£12m) and Njie (£16m) were being amortised though neither fee exists; freed −£18.3m/yr → −£12.3m/yr; net −£5.9m → −£5.7m/yr.
  • Sunderland — added +£11.2m/yr → +£6.7m/yr and net change +£9.2m → +£4.8m/yr, on an asking price for Poku that no one had agreed to pay.
  • Brentford — added +£16.9m/yr → +£16.1m/yr, net +£16.5m → +£15.6m/yr.
  • Liverpool — totals out, wage ~£735k/wk → ~£725k/wk and cost freed £61m → £60.2m/yr, for a loan with no agreed destination.

The amortisation code has deliberately not been changed. Its filter is now the whole table, because the whole table is now business at a medical or beyond — and the fix belongs at the input, in one gate, rather than as a twenty-first copy of the same rule pasted into twenty pages of inline script. That is also the answer to why this survived: nothing compared a table’s footer against the label printed on it, and the rows doing the damage were invisible in every figure a reader would have checked.

Twelve rows moved across eight clubs, and the wording moved on all twenty. The ledes described the threshold nine different ways — “medical/verbal”, “option/verbal”, “talks/verbal”, “medical or negotiating” — and three of those promised a table that now excludes what they promised. One sentence states the rule on the Ins & Outs tab and its counterpart on the Rumours tab, identical on every page, and tools/check-deal-stage.js holds both to the letter as well as failing any deal row below the threshold. The gate was broken on purpose twice before being trusted: once by dropping a row’s stage entirely, which is the obvious way round a stage check, and once by adding a season array no hard-coded list would have known about.

30 Aug 2026

The Ins & Outs tab scrolled sideways on a phone, and so did every other tab CORRECTION

One table on this site sat outside a scroll container. The amortisation runoff — Season, Already here, This window, Combined — is 560px wide and had nothing but a margin on its wrapper, while every other table on the page sits inside .twrap with overflow-x:auto. At phone width it stretched the whole document about 200px past the viewport, and because it was the document scrolling rather than a box inside it, every tab slid sideways, not just the one containing the table. All twenty club pages, identically.

It is not new and it was not the Read more button. The version of this page from before that change overflows by exactly the same 597 pixels against a 390-pixel viewport, which is worth stating plainly rather than letting the newest change take the blame for the oldest bug.

Why it went unseen is the more useful part. The browser check that runs against every page loaded it at desktop width and never clicked a tab, so it could not have seen either half of this: not the narrow viewport, and not the tab the table lives on. It now runs at 390px and walks all twelve tabs on all twenty pages, failing on any page whose document scrolls horizontally. That costs real time on each run, which is the honest price of catching a class of fault that only exists on the device most readers use.

30 Aug 2026

The deal notes now fold away behind a button LAYOUT

The note under a player’s name is where the reasoning for a deal lives, and on the busiest rows it runs to several hundred words. Read end to end that is the point of the table; scrolled past on a phone it buries the row underneath and everything after it. Long notes now clamp to two lines with a Read more button, and short ones are left exactly as they were — a note that fits gets no furniture around it. The full text stays in the page whether or not it is open, so it is still searchable, copyable and printable.

It did not work the first time, and the reason is worth writing down. The clamp was styled on a single class, and the table already carried a td .glide-cap rule setting the notes to display as blocks — a more specific selector, so it won. The result was a button that toggled its own label and changed nothing else: the line-clamp property applied, the display property it depends on did not, and the note stayed full height. Checked in a browser at phone width rather than by reading the stylesheet, which is the only way that particular failure shows up.

30 Aug 2026

A sell-on reduces the profit, not just the cash — and the gate that should have said so was reading a different page CORRECTION

Asked whether everything a transfer actually contains was applied to the deals on this site, and one thing was not. A sell-on owed to a former club is a cost of the disposal: it comes off the profit booked, not only off the cash banked. This site deducted it from the window balance and the List A test and then left it out of profit entirely — and profit is what feeds the squad-cost denominator through the three-year average. It now comes off booked profit, so the only quantified clause on the site, Villa’s £15m to Middlesbrough on the £117m Rogers fee, is handled by the model rather than by hand.

The gate was passing green on a £15m disagreement, and the reason is worth recording. The trading bridge’s check pulls the profit function out of the page and runs it — but that function reaches outside its own block for the sell-on data, which the extract did not include. Undefined dependency, guard returns zero, and the checker quietly computed a different profit from the one the page computes. A checker that does not mirror the page is not checking the page. It now pulls its dependencies across too, and it failed immediately when it did.

No figure moves today. The £15m had already been taken off this club’s denominator by hand when the sell-on was first noticed; the anchor gives that third back so the arithmetic lands in the same place, and from here it flows automatically. The three other clauses on the site — Baleba, Reijnders and Chérif — are recorded as unquantified and still contribute nothing, which is honest rather than convenient: the exposure is real and the percentage has never been reported.

30 Aug 2026

Seventeen non-homegrown of a permitted seventeen — Spurs are exactly full NEW

24 of the 25 places are used and two look free, but neither can go to a non-homegrown player. At 6 homegrown and 18 non-homegrown the ceiling is precisely full. Whatever is spent and whoever leaves, the only additions that fit are homegrown players or under-21s.

One player is the reason this is 17 and not a breach, and he is French. Wilson Odobert became homegrown this season by accrual rather than transfer — Burnley in 2023/24, then Spurs in 2024/25 and 2025/26, three entire seasons, with the window running to the end of the season in which he turned 21 last November. Without him Spurs hold five qualifiers and cap at 22, one below the squad actually registered. Kevin Danso is the other counter-intuitive one: Austrian, but in England from six and registered at Reading and MK Dons, so he qualifies where Andy Robertson, Scottish-trained, does not.

Why it was missing until now. This page carried UEFA’s List A and never the domestic quota — a different rule with different arithmetic. It was built for one club eleven months ago and the commit that shipped it said the other nineteen would follow. They did not, because a missing feature breaks no gate. Every player now carries a date of birth and a stated qualifying basis, so the counts derive from the squad table and the headcount gate holds the prose.

30 Aug 2026

The sale-profit input now derives itself, like the wage input above it METHOD

in-psp is the three-year average player-trading profit in the squad-cost denominator, and it was hand-set on all twenty pages. The failure mode is the one the wage bridge was built to stop, one input along: a sale completes, its profit is booked in the table, and the figure meant to carry a third of it stays where somebody last typed it. It only ever moved when whoever booked the deal remembered — which is the definition of a number that will eventually be wrong.

The page now shows its working beside the input: the earlier years’ contribution, plus this window’s booked profit divided by three, because UEFA smooths player-trading profit over three years so one window enters at roughly a third. Booked means done and not a loan — an advanced deal has not completed and its profit is not in the accounts, which is also the convention this page was already kept on. The profit is net of the FIFA solidarity taken out of a foreign sale.

One thing about the anchor is worth stating rather than glossing. The earlier years’ figure is carried forward from the number this page already used, not sourced from published accounts, so the bridge agrees with today’s input by construction. It earns its keep from here on, by moving when a deal lands. Tested by planting a completed sale into the tables and leaving the input alone: the gate said the denominator was £20m short, which is exactly the silence it exists to break.

30 Aug 2026

A sale can lose money once FIFA has taken its 5%, and the formatter could not write it down CORRECTION

Modelling solidarity produced the site’s first negative profit on a completed sale. Villa banked ~£8.08m of Lucas Digne’s £8.5m fee against a book value of £8.5m, so that deal is a small loss rather than a break-even — which is the correct answer, and one the gross-fee basis could never produce.

The money formatter could not render it. It put the pound sign first and the minus wherever the number happened to start, so the cell read “£-0.4m” against a site that writes −£0.4m everywhere else. Nineteen pages had that version. Bournemouth had the correct one, negative-aware, written when its own trading profit went below zero — so the fix was to adopt the version already in the codebase rather than invent a twentieth. All twenty now share one formatter.

Checked in a browser rather than by inspection, because the failure this could introduce is a doubled sign where a caller already prepends its own minus: no malformed negative on any of the twenty, and no JavaScript error.

30 Aug 2026

FIFA takes 5% of every fee sold abroad, and this site had been booking 100% of it CORRECTION

Asked what else is inside a completed deal that these numbers miss, and the answer was the solidarity contribution. 5% of any international transfer fee is deducted from the fee and shared among the clubs that trained the player between 12 and 23. The mechanics decide who pays: the buying club hands over the headline number and distributes the 5% out of it, so a purchase costs exactly the fee already capitalised here — nothing was wrong on that side. The selling club banks 95%. Every profit booked on a sale abroad was therefore 5% too high, across all twenty pages, from launch. Around £28m league-wide.

On this page it is £1.92m, from the foreign sales of Cristian Romero, Alejo Véliz. That comes off booked profit, and a third of it off the denominator, because sale profit feeds the squad-cost ratio through a three-year average.

The glossary had been claiming this was modelled the whole time. It said the 4% Premier League levy and FIFA’s 5% solidarity contribution both capitalise into registration cost — true of the levy, true of solidarity for a buyer, and quietly untrue of the thing that actually matters, which is what a seller keeps. Documentation that describes a calculation the code does not perform is worse than no documentation, because it stops anyone looking.

It is derived, not typed. The deduction comes from where the player went, which puts all the weight on classifying a destination — and getting that wrong is silent: an English club missing from the list costs its seller 5% of a fee it actually keeps, and no total looks odd. So tools/check-solidarity.js refuses to classify by default. Every fee-carrying destination must be a club one of the two lists already knows; a name in neither fails until a human decides which it is. The gate also holds the twenty inline copies of the classifier to being identical, for the same reason the wage gross-up is a single constant.

One assumption is recorded rather than hidden: Cardiff, Newport, Swansea and Wrexham are Welsh clubs inside the English pyramid, and are treated here as domestic because their registrations run through the English system.

Also documented, deliberately not changed: add-ons are modelled all-in on a purchase and guaranteed-only on a sale. That asymmetry makes the buy column a best case and the sell column a conservative one, and it now says so on the page instead of being visible only to whoever recomputes the fees.

30 Aug 2026

Wages in the deal tables were understated by 45%, and the sentence describing the fix was wrong on nine other pages CORRECTION

The site grosses wages by 1.45 to cover employer NI, bonuses and image rights — everywhere except the two columns readers actually look at. The cost of an arrival and the relief from a departure in the Incomings and Outgoings tables were built from raw weekly wages, so every one of them understated the real charge. Both columns are now grossed through a single GROSS constant, so they cannot come apart again. The headline ratio does not move: it is computed from the wage, amortisation and agent inputs, which were already on the grossed basis. What moves is the Net SCR Swing card and the two columns feeding it.

Which is where the second problem was. The swing is derived from the deal arrays and was therefore right the moment the gross-up landed — but the same figure is also typed into the overview callout, and typed figures do not move. And the ratio quoted in prose was ~65% against a computed ~68%. Palace’s was the clearest case: it read “still negative” where the page computed a positive swing, so the sentence was not stale but inverted.

Nothing showed this in a browser. A small script copies the derived card into the overview span at load, so the screen self-healed while the file stayed wrong — the same failure as the share card that displayed correctly and shipped a stale number to anyone who read the source. tools/check-overview-figures.js now runs the page’s own formulas against the page’s own arrays and fails on any stated swing or profit that disagrees, in the callout or in prose. The changelog is excluded, because a dated entry is a record.

Two more holes closed while the gate was being written. The baseline gate knew five ways of phrasing a ratio and not the one in the most-read sentence on every page, which is how City carried “~65% ratio vs the 70% wall” against a computed 57.1%; it now reads that shape too. And tools/check-parity.js checks that CI runs every gate the local suite runs — twice a gate had been wired into one and not the other, and both times it was caught by eye rather than by anything.

30 Aug 2026

Ten answer blocks disagreed with their own pages — and the rule that lets that happen is now written down CORRECTION

The answer block is the first paragraph on every club page and the one a search engine quotes. It states four things that are all derivable — the ratio, the headroom or overshoot, what the club has banked from sales, what it has committed on signings — and only the ratio had a gate. Ten of the twenty disagreed with their own data. Brighton said £91.9m banked against £156.9m of completed sales; Manchester United £89m committed against £154m; Sunderland £0m against £32.6m; Forest was wrong on all three. Every answer block is now written from the deal tables and the ratio inputs rather than typed, and a gate holds them there.

One of the ten was two days old and mine. Manchester City’s said “£338m banked from sales”, which came from reading a total that includes advanced deals into a sentence that says banked. It is £288m. Advanced business is committed, not banked, and the gate now applies that distinction rather than trusting whoever writes the sentence to remember it.

Chelsea, Fulham and Ipswich stated no headroom at all, because they are over their line and the sentence had been written for clubs that are under it. They now say by how much: −£23.3m, −£19.2m and −£17.7m per year.

And the underlying rule is now recorded in the repo rather than relied on. A club page is twelve sections plus the head, the same quantity is stated in several of them, and every significant error here has had one shape: a figure corrected where somebody noticed it and left standing everywhere else. tools/echoes.js reports which sections state a given figure before it is edited, and the gates that exist because of this rule are listed alongside it. Anything derivable gets derived; anything typed gets a gate.

30 Aug 2026

No gate had ever read a headcount CORRECTION

Ten gates run on every build and not one of them counted players. They read percentages, deal statuses, transfer rows, bar widths and card images — so a sentence saying “nineteen senior players, six places unused” could sit beside a card correctly showing 22 and 3, indefinitely, with everything green.

There is now a gate that recounts from the squad table, using the page’s own registration rule rather than a second copy of it: a player is on the list unless he is loaned out or under 21 on the season’s cut-off, and the cut-off is read from the page rather than assumed. It checks the registered total, the homegrown and non-homegrown split, the free places and the under-21 count, in both digits and words.

It missed one of its own test cases on the first run. “Six more players are under 21” begins a sentence, so the word is capitalised, and a lowercase-only pattern walked straight past it — found only by planting each stale figure back and checking the build failed. Four claim types, four confirmed failures, then green. A check you have not watched fail is a guess about what it catches.

30 Aug 2026

The hero stat cards were three-across on a phone, and four of them left an orphan LAYOUT

Reported on Villa: three columns on a 430px screen squeezed the longest card into a ribbon, and because that page carries four cards rather than three, the fourth dropped alone onto a second row beside two empty cells. Below 760px the grid is now two columns, which gives Villa a clean 2×2.

The other nineteen pages carry three cards, so two columns would have left an orphan there instead. A lone last card now spans the full row rather than sitting beside a hole — so three reads as two-then-one and four reads as two-and-two, without a special case for either.

Desktop had the same orphan and nobody had mentioned it. Four cards in a fixed three-column grid is unbalanced at every width, not just on a phone. The grid fits its own content now, so Villa gets four across on a wide screen and the three-card pages are unchanged. Measured at 390, 430 and 1400px rather than eyeballed.

And the card that caused it got shorter. Villa’s List A churn description had just been lengthened to fix an arrival count, which is what made it tower over its neighbour. The names moved out — they are on the Ins & Outs tab — and every figure in it stayed.

30 Aug 2026

A stale ratio phrased one way slipped a gate built for another CORRECTION

The prose-baseline gate catches “roughly N% of football revenue”. It did not catch “sit at roughly N%”, which is how the glossary phrases the same claim — so a stale ratio could sit in a definition indefinitely while the identical statement in the FAQ was checked on every build. Found on Villa, where the glossary was two revisions behind the page.

Extending the rule found the same fault on three more pages nobody had asked about. Arsenal’s glossary said 64% against 66.1% computed; Fulham’s said 90% against 94.0%; Ipswich’s said the ratio “sits at roughly 85% — on the line” when it is 94.6%, about ten points over. Ipswich’s sentence also quoted a “~£106m gross window” that the deal table puts at ~£147m. That one was wrong twice and read as reassurance both times.

A gate that matches one phrasing of a claim is a gate against that phrasing, not against the claim. Both forms are checked now, and the extension was tested by planting the old figure back and confirming the build fails.

30 Aug 2026

Both loan bars read as full when only one quota was used CORRECTION

Reported by a reader looking at Villa on a phone, and right. The card showed two full amber bars, so both ceilings looked hit — when the line under the second one said 6 of 6 international slots still free. Only the domestic quota was used. The bar was hard-coded to 100% and had nothing to do with the sentence beneath it.

Every one of these bars was a literal width typed in beside the text it was meant to summarise. That is the same fault as the headline reading “1 + 6 Left” above a body saying none left, which already had a gate; the bar had simply never been looked at. They are derived now — “N of M remaining” means M−N used, and the width and the colour come from that, so the picture and the sentence cannot disagree. Amber only when nothing is left, which is the point at which a quota starts deciding what a club can do.

Writing the check found four more pages the report had not mentioned. Fulham, Ipswich, Tottenham and Coventry each had a quota line with no bar above it at all, so the international ceiling was invisible on those cards. And Chelsea’s international bar sat at 33% beside a sentence that stated no count whatsoever — nothing could have derived it and nobody could have checked it. That line now says 5 of 6 senior slots remaining and shows its working: Badiashile at Napoli is the one senior non-club-trained loan abroad, with Antwi and Murray-Campbell treated as academy and therefore exempt. Disagree with that classification if you like — the point is that it is now possible to.

The gate checks the source, not just the screen. Villa’s rendered card was fixed by the derivation the moment it was added, while the hard-coded 100% was still sitting in the file — correct in the browser, wrong in the thing a checker reads and the thing that renders before any script runs. Both are right now, and the gate compares the typed width against the stated numbers so a hand edit cannot quietly reintroduce it.

30 Aug 2026

Deep audit of the rules and the inputs: the wage figure had drifted from its own derivation on five clubs CORRECTION

The rule constants are unanimous across all twenty pages and all correct — the £105m PSR cap, the €60m earnings limit, the five-year amortisation cap and its 1 July 2023 start, the 4% Premier League levy, the 1 January 2005 under-21 cut-off, 17 non-homegrown of 25, two concurrent domestic loans and six international. Thirty-nine separate statements of the five-year cap; not one disagreed with another. That is the half of this audit with nothing to report, and it is worth reporting that it has nothing to report.

Every club’s cap now agrees with its European status. In Europe the UEFA line is 70%, outside it the Premier League’s is 85% — fifteen points of headroom turning on a single yes/no, asserted in three places at once and checked in none. All twenty agree: nine in Europe at 70%, eleven outside at 85%. A gate now enforces it, because a club’s European status is exactly what changes between seasons.

The real finding is the wage input. This site’s stated convention is that the wage figure IS the wage bridge’s own derivation on every accounts-basis club — that is what makes the league table comparable, and what makes the input track the window instead of sitting at a pre-window figure nobody updates. It had decayed on five clubs, because deals get booked by hand and the input gets nudged by hand with them, and a nudge drifts from the derivation the moment the arithmetic differs by a rounding. Tottenham were £22m adrift. All five are now set to the derivation and a gate holds them there. Promoted clubs are correctly exempt and the bridge explains why in its own text: a wage bill roughly doubles on going up, so last season’s accounts are the wrong anchor in both directions at once.

One club changes compliance status as a result. Bournemouth go from 69.8% to 71.2% — from just inside the 70% cap to about £3.4m/yr over it, in their first European season, on the tighter cap that European qualification brings. Tottenham move 64.6% to 68.3%, Forest 81.9% to 82.7%, Manchester City 57.7% to 57.1%, Villa 64.0% to 63.8%.

And two more pages were flooring their headroom at zero. Ipswich read “£0m of room” while sitting £17.8m/yr over the 85% line; Bournemouth would have done the same on crossing it. The same defect was fixed on Palace four days ago and not looked for elsewhere — which is the lesson, not the bug. Both now state the overshoot.

What the audit could not do. Every football site and reference database is blocked from this environment, so the transfer tables were reconciled internally — squad rows against deal rows, amortisation floors against inputs, both sides of every intra-league move — and checked externally only as far as search summaries allow. Internally they reconcile on all twenty clubs. That is a real guarantee about consistency and not a guarantee about completeness, and the £50m signing found missing yesterday is what the difference looks like.

30 Aug 2026

The share card is now checked like everything else — and two gates had never run in CI at all CORRECTION

Rebuilding the cards fixed today’s figures and fixed nothing about tomorrow’s. A generator someone has to remember to run is exactly what produced a card reading 60.2% four days out of date, so the question is not whether the cards are right now but whether they can go wrong again quietly. A gate now recomputes the card’s figures from the page and compares them against the token the builder stamped into the meta tag. Move any input — a wage, a fee, a sale — and the build fails until the card is rebuilt. It was tested by nudging Villa’s wage input and confirming the failure, and by stripping the token to confirm that fails too.

The builder and the gate read the figures through one shared module. Two copies of the same calculation drifting apart is the failure this site has hit more than any other, and it would be absurd to reintroduce it in the check designed to prevent it.

And checking the CI list against the local one turned up a real gap. Two gates — the one that catches stale ratio figures in prose, and the loan-quota headline check — existed, worked, and had never run in CI. They only ran when someone ran the full suite by hand, which means a direct push could have deployed stale numbers with a green tick. Both now run on every push, and the two lists are asserted to match. The prose-baseline gate is the one that has caught the most this week, and it was the one running least often.

30 Aug 2026

The share cards were showing a ratio four days and six deals out of date CORRECTION

The squad cost ratio is printed into the card image itself, which is fine until the ratio moves. Villa’s card said 60.2% against a page saying 64.0% — the figure from before the Goretzka wage correction, and before Jackson, Martínez, Suzuki, Ruggeri and the rest. Anyone sharing the link was posting a number this site had stopped believing on 27 August. Chelsea’s said 83% against 88.7%; Manchester City’s said ~65% against 57.7%.

There was no generator. The cards were made once, by hand, on 26 August and left, so nothing could have kept them current. There is one now: tools/build-og-cards.js reads every figure from the page it belongs to and rebuilds all twenty, and it runs like any other build step.

Cache-busting is the part that actually matters for sharing. X and Facebook cache a card image against its URL for days, so replacing the file in place does nothing for a link anyone has already posted. Each card’s meta tag now carries a version token derived from the figures on it, so the URL changes exactly when the picture changes and not otherwise.

The number is now coloured the way the page colours it — green three points clear of the limit, amber up to it, red past it. A card showing Ipswich at 94.6% against an 85% line in the same neutral cream as one showing Manchester United at 56.9% throws away the only thing a reader takes from a shared image.

And a gate now checks the alt text against the computed ratio, because that was stale too and in a way nobody would ever notice: six pages carried figures in the card’s alt attribute that no longer matched, including one that had never matched any published base. It was tested by planting the old 60.2% and confirming the build fails.

30 Aug 2026

Full pre-deadline audit of all 20 clubs — one £50m transfer was missing entirely SWEEP

Nico González, Manchester City to Newcastle, ~£50m, completed and announced. Medical taken, presented to supporters before the West Brom cup tie, No.6 shirt issued — and absent from both pages. It is the largest single omission this site has had to correct, and it moved two ratios materially: City 60.4% → 57.7% with headroom out to £100.2m, Newcastle 70.8% → 74.7% with headroom down to £46.8m against their 85% line. The fee is reported as reaching £50m after add-ons, so the guaranteed portion is lower and unpublished; £50m is carried on both sides because a counterpart has to agree, and it is flagged. The same number cannot be conservative for both clubs at once — it flatters City’s profit while overstating Newcastle’s charge — and that is stated rather than smoothed over.

Everything else checked out, which is the more useful result. Forty-odd names drawn from external reporting were tested against the pages one by one and every single one was already there. Where the reporting and this site disagreed, this site was right: one summary placed Detourbet, Monga and Rulli at Nottingham Forest when all three are Manchester City signings, and another had Bouaddi at Forest when City announced him.

Two numeric errors found by audit rather than by reading. Manchester City’s Kalvin Phillips loan credited £11.3m of relief when a loan frees the wage and none of the amortisation — the registration stays, and so does the charge. Corrected to £7.8m. Nottingham Forest’s Gustavo Sá loan freed nothing at all when Olympiacos pay his wages; corrected to £1.8m. Two more outgoing loans, at Leeds and Liverpool, carried no loan flag, so the amortisation book and the List A gate were treating them as permanent sales.

Eight new checks, and they were run against real data before being trusted. A completed permanent signing must have a squad row; a sold player must not still be in one; a destination reading “loan” must carry a loan flag; no duplicate squad rows; no fee without contract dates; no end date before the signing date; no signing dated in the future; no expired contract still in the squad. All eight are clean across all twenty clubs, and two were deliberately broken to confirm they fail. Three earlier checks this week passed on their first run because they were wrong, not because the data was right, so nothing goes in now without being made to fail first.

What this sweep cannot claim. Every football site, news aggregator and reference database is blocked from this environment, so external checking is search summaries only — and those summaries mixed up clubs twice in this pass alone. The internal consistency of these pages is now verified exhaustively and mechanically. Their completeness against the real world is verified as far as search allows, which is not the same thing, and the González miss is what that gap looks like.

30 Aug 2026

The stale-rumour gate could only see half the market — two more boards were selling players who had left CORRECTION

Yesterday’s gate checked live rumours against completed incomings at other clubs. That catches a player who moved between Premier League clubs and nothing else. Two whole classes of exit were invisible to it, and both had live cards sitting on boards.

A player sold abroad appears in no incoming table anywhere. Spurs sold Cristian Romero to Atlético Madrid and announced it on 15 August; Arsenal’s board went on offering him to the scenario modeller for a fortnight. The gate now reads completed outgoing rows as well, taking the destination from the row itself — which is derivable, and should have been there first time.

And a move between two non-Premier-League clubs is recorded on no page at all. Bayern sold João Palhinha to Benfica on 26 August — €14m plus up to €5m, contract to 2030 — and Newcastle’s card still read “door ajar again”. Nothing structural could ever have caught that, so there is now a small list at tools/gone.json for exactly this case, and the gate fails against it. Two names so far: Palhinha, and Leão to Galatasaray.

One false positive, worth recording because it nearly shipped. The first version read Jadon Sancho’s outgoing row — destination “Free agent” — as him having joined a club called Free agent, and would have killed two perfectly live cards. A released player has left a club and joined nobody: he is more signable, not less. Release destinations are now excluded, while a row naming an onward club after an arrow still counts. All three arms were then tested by un-flagging a closed card and checking the gate fired, because a check nobody has seen fail is not yet a check.

Cards closed: Romero (Arsenal), Palhinha (Newcastle), Cho (Hull, where Hull themselves ended the talks on 10 August). Each keeps its note as the record and leaves the modeller.

30 Aug 2026

Dead rumours were still tickable — three players could be “signed” on boards they had already left CORRECTION

The scenario modeller priced any card you ticked, including cards whose own tag said the player was gone. Newcastle’s board offered Nicolas Jackson after he had joined Villa; the tag read “DEAD — JOINED ASTON VILLA” and ticking it still moved the ratio. Liverpool’s offered Ezri Konsa, an Arsenal player since 20 August. Chelsea’s offered Ousmane Diomande, who is at Forest. This site has named that exact contradiction in its own changelog — “a completed deal and a live rumour for the same player” — and then kept shipping it, because nothing was looking for it.

Now something looks. A gate fails any live incoming rumour naming a player who has completed a move to another club, which is derivable from the transfer tables rather than from a tag somebody remembered to type. Only incoming cards are checked: an outgoing rumour naming a player another club has signed is the same move seen from the selling side, and that is correct. It found all three on its first run.

Dead cards now stay on the board and leave the model. They keep their note as the record of what a club looked at, greyed, with the tick removed and the impact line replaced by “no longer available”. Deleting them would lose the history; leaving them live was worse.

30 Aug 2026

Deadline-week sweep: four announced deals the tables had missed, and a gate that was crying wolf SWEEP

Four deals were sitting at “advanced” after their clubs had announced them. Bouaddi to Manchester City — announced on the club’s own site on 26 August, and carried here as unannounced for four days, with the prose quoting “~£95m/€110m… agreed in principle” when the real deal is £81.3m fixed plus £4.3m of add-ons on a contract to 2031. Badiashile to Napoli, announced 22 August. Disasi to Crystal Palace, announced 26 August by both clubs. And Emi Martínez to Chelsea, announced by Villa on 30 August. All four are now booked, with the ratios on five pages moving as a result.

The Disasi loan is the one with a consequence nobody was watching. Palace were sitting a whisker inside the 70% cap that their European qualification imposes. Taking a £120k/wk centre-back on loan added ~£9.0m/yr of grossed wages and put them over it — a loan, with no fee, no amortisation and no transfer to report, moving a compliance position that a £30m signing would have been scrutinised for. This page has argued all summer that loans are treated as free when they are not; this is the arithmetic saying it.

And the prose-baseline gate was flagging a correct sentence. It reads any “roughly N% of football revenue” as a claim about the club’s own ratio — but “capped at roughly 70% of football revenue” describes the LIMIT, and Palace’s page says exactly that, twice. A gate that fails on correct text is worse than one that stays quiet, because the next person learns to skim past it. It now ignores the phrase when cap or limit wording precedes it, and it still fails on a genuinely stale figure — checked by planting one before shipping.

28 Aug 2026

The league window table was wrong on 19 of its 20 rows — and an edit ate two deal rows without a single gate noticing CORRECTION

The “Who’s Selling to Survive” table is a derivation and had stopped being one. Its own caption defines it exactly — disclosed fees on officially completed 2026 deals, loans and frees excluded — so every figure in it can be recomputed from the transfer tables it summarises. Nineteen of the twenty rows disagreed with those tables. Six clubs were shown as having spent nothing at all, including Newcastle at £0 against £174.9m of completed incomings and Manchester City at £0 of sales against £238m. The rows were hand-maintained, the pages moved on, and nothing compared the two. All twenty are now derived from the pages, with the hand-written notes kept, and a gate recomputes them so the table cannot drift from the deals again.

The second fault is worse, because it was self-inflicted and invisible. Promoting Jackson spliced his row out of one array and into another by matching the next }, — and deal rows share source lines, so the edit swallowed whatever followed on the same line. Goretzka’s incoming row vanished from Villa and Kellyman’s outgoing row from Chelsea. All eight gates passed. A missing row breaks no parse, satisfies every invariant, and simply makes the totals smaller — and nothing on the page knew what they should have been.

Two things now catch it. A squad player signed inside the window must also appear in the incoming table, which is a real structural invariant: the squad row survives when the deal row dies, so it is the witness. That check found a third case immediately, one nobody had touched today — Forest’s Gustavo Sá has had a squad row since July, with a book value and an amortisation charge, and his incoming row was never written. A changelog entry from that sweep claims he was added “both halves of him”. One half was missing. And for outgoing rows, which leave no trace on the page once the player has gone, there is now tools/diff-rows.js: it reports every deal row added or removed against a git ref, to be read before committing rather than after.

20 Aug 2026

Two method changes: the five-year cap, and the wage input becomes the derivation METHOD

The ratio moves from 62.0% to 64.1% (wages 198→195, amortisation 155→171).

The five-year cap, finally applied. This site's glossary has always described the rule that fees must be amortised over a maximum of five years however long the contract — and the code did not do it, spreading every fee across the whole contract instead. An eight-year deal was therefore charged at five-eighths of its true annual cost. The cap now applies to contracts signed from 1 July 2023, when it took effect; earlier deals are left alone, which correctly grandfathers the January 2023 contracts that prompted the rule and avoids capping long spans that are really a record of extensions rather than of one contract.

And the wage input is now the derivation. The wage bridge has been showing a derived figure beside a hand-set input since it was built, and on most pages the two disagreed. The hand-set number was anchored to a pre-window figure and never tracked the window, which is why the inputs sat high at clubs that sold heavily and low at clubs that bought. The input is now the derivation on all fourteen accounts-basis clubs, so it updates itself as deals land and the same method produces every club's number. That is what makes the league table comparable, which was the point of building the bridge.

What has not changed is how good the number is. It still rests on two assumptions — 80% of staff cost being players and coaches, and a 1.45x gross-up — and the bridge still shows both. Agreement between input and derivation means they are consistent, not that they are right.

27 Aug 2026

A free transfer was costing the window totals nothing at all — £35.7m/yr across six pages CORRECTION

The cost-per-arrival calculation returned zero for any signing without a fee unless the row also carried a loan flag. So a free signing’s wages vanished from “cost added by this window” entirely. Goretzka was showing as costing Villa £0.0m. On the very page whose card argues that “the free one is the expensive one — a fee buys an asset that amortises and can be sold, a wage buys nothing and recurs”. The card was right and the arithmetic underneath it dropped the wage.

£35.7m/yr was missing across six pages: Villa £13.6m (Goretzka, Özcan, Guessand), Palace £8.1m (McNeil, Guessand), Liverpool £7.8m (Araújo), Everton £4.9m (Johnson), Coventry £1.1m, Fulham £0.2m. Villa’s window swing moves from +£12.4m/yr to +£26.0m/yr.

There were seven different versions of that one line across twenty pages, each special-casing frees and loans slightly differently, and the differences were exactly what caused this. They are now one formula — the one Hull already used: amortisation and the agent fee when there is a fee, and the wage on every arrival, fee or not.

And it exposes something this card cannot fix by itself. The List A gate carried a hand-typed margin of “Villa pass by ~£3.5m/yr” on the cost-based test. The page’s own sums now put the window at adding ~£26m/yr. That figure predates Jackson and Watkins, and the window totals count wages ungrossed while the ratio grosses them, so the two were never on one basis. The cost-based margin is now marked UNVERIFIED rather than passing — the fee-based balance above it is sound, that one is not, and saying so beats printing a number that cannot be reproduced.

27 Aug 2026

A headline that contradicted its own paragraph — and nine more stale ratios behind it CORRECTION

Villa’s loan-quota card said “1 + 6 Left” in green, directly above a paragraph reading “0 of 2 concurrent remaining” and “ROOM: none left domestically”. Wan-Bissaka’s loan on 18 August took the second slot. The body was updated; the big number at the top was not. So the figure a reader sees first said a slot was free while the text underneath called the same thing a binding constraint. The bar sat at 50% with nothing left, and the card was still green. Crystal Palace had the same shape — “2 + 6” above “1 of 2”, left over from before the Guessand loan.

The failure runs one way every time: the prose gets edited and the summary above it does not. tools/check-quotas.js now fails when a loan-quota headline disagrees with its own body, including when the room note says “none left” and the headline disagrees. Verified by sabotage — put the wrong number back and it fails on exactly that.

Then the baseline gate was widened and found nine more. It was matching “ratio is X%” and “X% → Y%” but not the Quick Answers phrasing, “roughly 63% of football revenue” — which is the plain-English answer a reader or a search engine is most likely to lift. Brentford were claiming 75% while computing 84.9%. Manchester City 65% against 57.3%. Newcastle 74% against 70.8%. Ten pages rebased from their own inputs.

Two gates, two days, and both found more than the bug that prompted them. That is the argument for writing the check rather than the fix: the fix closes one hole, the check tells you how many others there were.

27 Aug 2026

The baseline gate had a hole in it and was passing on what it could not see CORRECTION

The gate shipped this morning excluded the changelog by truncating each page at <section id="log">. The data arrays holding every rumour card sit in a script block after that point. So it was scanning 167KB of a 422KB page, never saw a single card’s projection, and reported green.

It now removes only that section and keeps the rest. On the first honest run it immediately found eleven stale figures across three pages — every Villa projection still quoting a baseline two changes old, and two on Chelsea. All recomputed.

A gate with a hole in it is worse than no gate, because no gate makes you check and a green one stops you looking. This one was written, tested against the case that prompted it, and shipped — and the case that prompted it happened to sit in the part of the file it could still see.

One rule came out of it. A live rumour card may state a projection, because the gate now keeps it honest against the current base. A completed deal may not: “60.2% → 63.4%” was true the day it was written and decays the moment anything else moves, and the effect is already in the headline. Those now state what the deal costs instead.

27 Aug 2026

A new gate: does the prose still quote the ratio the page computes? CORRECTION

Twelve of the twenty pages were asserting a squad cost ratio their own inputs no longer produced. Manchester City claimed 63.0% while computing 57.3%. Manchester United said 53.9% against 56.9%, Sunderland 60.9% against 63.2%, Coventry 69.7% against 71.0%. Every one has been rebased from the page’s own figures.

Most of it sat in the answer paragraph and its structured-data twin — the text search engines and AI crawlers read before anything else, which makes it the worst place on the page to be stale. The headroom figures beside them were rebased too.

Nothing was catching this. The status gate reads deal status; the invariants gate reads the arrays; neither reads a percentage in a sentence. It surfaced only because a single free transfer moved one club’s baseline and the knock-on was visible. tools/check-baselines.js now recomputes every page’s ratio from its inputs and fails on prose asserting a different one, and it runs with the rest on every change.

Two things it deliberately does not flag. A sentence reading “68.6% → 62.0%” where 62.0% is the current ratio is a completed move being described, not a stale claim, so a done deal can still say what it did. And the changelog is excluded entirely: a dated entry recording August’s number is the record, and rewriting it to match today would be the opposite of what this tab is for.

26 Aug 2026

The amortisation graph now splits the squad you had from the squad you bought FEATURE

One bar was hiding the more interesting number. The run-off now stacks two series — the squad that was already here in blue, and everyone signed this window in amber — with both totals and a combined figure above it, and a per-season split beside each bar.

It changes what the chart says about a club. A settled squad shows a thin amber band on a thick blue one; a rebuild inverts it. Coventry carry £14.0m already here against £28.9m signed this window, so two-thirds of their amortisation arrived in ten weeks, and their inherited book runs out entirely by 2028/29 while the new one still has three years to run. Liverpool are the other extreme at £143.6m against £18.4m. Same chart, opposite stories, and neither was visible when it was one bar.

Who counts as “this window” is taken from the signing date, not from the flag the squad rows carry. The two disagree: the date catches six players the flag had missed — Garnacho and Cissé here at Villa, Bentley at Coventry, Charles at Fulham, Sá and Diomande at Forest — and never disagrees the other way. A derived test cannot be forgotten the way a hand-set one can, which is the same reasoning that put the sell-ons and the outgoing amortisation on derivations.

Two rows of figures now sit above the chart and they will not always agree, so the panel says which is which rather than leaving a reader to spot it. The first row and the graph are the SQUAD, split by arrival date. The second row is the DEALS, including advanced ones whose players are not in the squad table yet. Where they differ the panel names the gap and what it is — agreed business that has not completed.

26 Aug 2026

Every deal now shows what it costs per year — and the agent fee was being charged five times over FEATURE + FIX

A fee only means something against the charge it creates. £47.5m is a headline; £9.9m a year for five years is the thing that reaches the squad cost ratio. Until now this page printed the fee on every row and the amortisation on none of them. Both tables now carry an AMORT £m/yr column, and a panel underneath gives the number those rows add up into: the squad’s total annual amortisation, what this window has added and freed, and how the charge runs off over the next five seasons as existing deals finish.

None of it is newly typed data, which is the point. Incoming charges come from the player’s own squad row where one exists — real contract dates, five-year cap applied where it bites — and from fee over five years where a deal is advanced and the player is not in the squad yet, flagged est when that happens. Outgoing charges are derived rather than stored: a row’s cost-freed figure is the ungrossed wage plus the amortisation, so subtracting the wage leaves the charge that stops. They cannot drift from the totals above them because they are computed from them.

Loans show a zero, and that is the correct answer rather than a missing one. A loan moves the wage and leaves the registration here, so the amortisation stays too — the point this site has made about loans since the wage bridge, now visible as a column entry instead of a paragraph.

And a bug the new column sat straight on top of. The cost-per-year calculation behind these tables charged the agent fee in full every single year instead of capitalising it and spreading it over five — the same error corrected in the scenario modeller last week and missed here. On a £47.5m signing it overstated the annual cost by £1.9m. Every SCR-cost figure in the Ins and Outs tables, and the window’s cost-added total, move down accordingly.

One thing the new column makes visible and this page is not hiding: the SCR cost figures in these tables count wages at face value, while the rumour cards, the scenario panel and the wage bridge gross them up 1.45x for employer NI, bonuses and image rights. The same signing can therefore read £17.1m in the table and £20.2m on its card. The grossed figure is this site’s convention and the table is the odd one out. It is stated in the panel rather than quietly reconciled, because restating it moves every published window total on all twenty pages and deserves its own pass.

26 Aug 2026

Marmoush agreed — and the obligation is mandatory, which this site’s convention was not built for AGREED + METHOD

Agreed 26 August: an initial loan with an OBLIGATION to buy, reported at £50m fixed plus £10m in add-ons with half the add-ons described as easily attainable, four years plus a 12-month option, medical to come. Spurs’ second signing from Manchester City in three days.

On this site’s standing convention a purchase obligation amortises from conversion, not from now — the treatment given to Villa’s Wan-Bissaka and Garnacho deals. So nothing is capitalised this season and the cost is the wage alone: 64.6% → 66.4%.

But that convention was built for CONDITIONAL obligations, and this one is reported as mandatory. An unconditional obligation is substantively a purchase, and the stricter reading capitalises the £50m now — which puts Spurs at 68.2% instead. That is 1.8 points and £10.9m of headroom riding on a distinction no reporting has spelled out. This page follows its own convention for consistency across twenty clubs and publishes the disagreement rather than picking quietly.

Either way it is deferral, not avoidance. ~£10.4m/yr lands from conversion and runs to 2031, on top of Savinho’s ~£15.5m. The wage is a tracker estimate carried across from City’s squad row; no salary has been reported. And another senior non-homegrown joins a list already projecting around 20 for 17 places.

25 Aug 2026

Savinho signed: club record, £75m + £10m, and six stale lines with it DONE

Announced 25 August by both clubs. £75m guaranteed plus £10m of add-ons, £5m of it reported effectively guaranteed, five years to 2031 with an option of a further year, No.17. De Zerbi’s promised “bomba”, and a club record.

The fee this page used was wrong and is now right. The squad row carried £65m, the most widely reported figure through July and August; the actual number is £75m. Amortisation runs over the contract rather than the five-year ceiling — 2031 is four years and ten months away — so about £15.5m/yr before the agent fee. The amortisation input has been lifted from £177m to £180m because the squad’s own total now exceeds it, which the invariants gate caught rather than a human.

Six other places on this page still called him unannounced — the hero panel, the ins-and-outs lede, a squad-list chip, the deferred-items callout, the squad-table caption and the changelog. Every one was found by the status gate built last week, not by re-reading. The ratio moves 64.1% → 64.6%.

25 Aug 2026

The “last updated” notice is gone — it had stopped telling the truth REMOVED

There were two of them. A line under the header reading “DEALS & FEES AS REPORTED [date] · BOOK VALUES & CALCS RECOMPUTE DAILY”, and a script that read that date and, once it was four days old, pushed an amber banner above the header warning that the page had last been checked N days ago.

The second one was firing on all twenty pages. The date it keyed off was hand-typed and ranged from 9 to 19 August across the site — while the deals underneath had in fact been swept on the 24th and 25th. So the site was leading with a warning about itself, generated from the one number on the page that nobody was maintaining. A staleness notice that is itself stale is worse than none: it tells readers to distrust figures that are current.

Both are removed, with their CSS. Nothing else changes — every ratio, book value and window total is unaffected, and the dated entries in this changelog remain the honest record of when each page was actually worked on.

23 Aug 2026

You can now change the numbers — and the card line beside them was still wrong FEATURE + FIX

Every fee on the rumour board is somebody’s estimate. Brugge “value him around €45m”. Al-Hilal’s bid reached this site in the wrong currency and had to be chased down. Marmoush’s fee is arithmetic off a reported two-player budget rather than a figure anyone published. Readers were being asked to take those guesses as given.

So the amounts are editable now. Every card carries a fee box, and incoming cards a wage box too. Type your own number and the card’s cost line and the scenario panel both follow it immediately. Reset puts the reported figure back — overrides are held separately and the underlying data is never overwritten, so there is always something true to return to. Outgoing cards expose the fee but not the wage, because an outgoing player’s relief is derived from his squad row rather than typed, and the fee is the part that actually moves the profit on the sale.

And a fix that should have landed with the modeller rebuild. The card’s own “ADDS £Xm/yr” line was still running the OLD formula — ungrossed wages, and the agent fee charged in full every year. The calculation underneath was corrected; the display beside it was not, so every card showed one number while the panel below computed another. On this site’s own worked example the card said £10.1m and the panel used £10.7m — the exact discrepancy that rebuild was written to explain, sitting in the markup the whole time. Both now call the same helper, and that is checked on all twenty pages: tick a card, and its figure and the panel’s agree.

22 Aug 2026

The 22 August sweep, and a modeller that was wrong three ways DATA + METHOD

Conor Gallagher has never been on this page at all. £34m from Atlético in January 2026 on a deal to 2031, and no squad row — so roughly £6.8m/yr of amortisation was missing from a ratio this page reports to one decimal place. The input has moved to meet the floor. Savinho settled at £75m plus £10m, ten million above the top of the range this page called its ceiling. And Vicario's loan was announced by Juventus on 18 August while the row still read “advanced, no club announcement yet”; the option is €8m with €2m of add-ons, not the flat £8.6m the note treated as the base — which means the base option books a small loss against his 2027 book value rather than the profit claimed.

The scenario modeller was wrong in three ways at once, on every page on this site. An incoming signing's wage was charged with no gross-up, while the wage bridge, the ratio inputs and every note here gross wages by 1.45x for employer NI and image rights — so every modelled signing was 45% cheaper on the wage line than the same player would be in the ratio directly above it. The agent fee was charged in full every year instead of being capitalised with the fee and amortised, so a £60m signing carried £3m/yr of agent cost rather than £0.6m. And sale profit never reached the denominator: nineteen pages let a sale relieve the numerator and stop, when the profit also lands in the denominator through the three-year average, and the twentieth added the whole window's profit when one window belongs at roughly a third.

Why none of it showed up. The first two faults pull in opposite directions and roughly cancel at a typical fee-to-wage ratio — for a £25m signing on £70k/wk the old code gave £10.09m/yr against a true £10.73m, close enough to look right. They do not cancel at the edges: a free transfer on big wages was understated by 45%, a big fee on modest wages overstated by about 9%. Two errors that hide each other are worse than one that does not.

Outgoing relief is now derived, not typed. The hand-set relief on all eighty outgoing rumour cards carried the same ungrossed wage — checked against the squad, the stated figures reproduced the ungrossed derivation almost exactly. Relief and profit now come from the squad row, on the same gross-up and the same five-year cap as everything else, with the typed figure kept as a fallback for the handful of names with no squad row. Profit is allowed to be negative, because some of these sales are losses and the page should say so.

20 Aug 2026

Amortisation input raised to the squad floor: £150m → £155m INPUT CORRECTION

Why it moved. The amortisation input is the club-wide charge, which must be at least the current squad's, since it also covers players who have left mid-season and academy registrations the squad table does not carry. On this page it had fallen below that floor, which cannot be right — the summer's signings went into the squad table and the input stayed where it was. It is now raised to the floor.

Read it as a floor, not a figure. The true club-wide charge is higher by whatever departed players and fringe registrations add. This is a conservative correction, and it moves the ratio the wrong way for the club, which is the direction an honest correction usually goes.

Smallest of the nine corrections, but worth noting that this page's own note says the FY25 charge was ~£110m and "this summer adds ~£59m/yr" — which totals nearer £169m than £155m. The floor is the safe correction; the page's own arithmetic suggests the real figure is higher.

19 Aug 2026

Correcting a sale-profit input I moved too far CORRECTION

What was wrong. When Romero's sale was recorded earlier today the sale-profit input was raised by the full ~£15m of booked profit. That input is a three-year average under UEFA's smoothing, not a single window's figure, so one window's profit flows into it at roughly a third. It has been corrected from £55m to £45m, and the ratio moves accordingly.

Also fixed: this page labelled the field "Player-sale profit" where the other nineteen say "3-yr avg sale profit". Same input, same smoothing, misleading label — which is very likely how the error was made in the first place.

19 Aug 2026

Romero to Atlético completed — the captain leaves the Rumour Mill for the transfer table HEADLINE MOVES

What happened. Announced by both clubs on 15 August and missed by this page until now: Cristian Romero has joined Atlético Madrid on a five-year deal for €35m guaranteed (~£30.4m) plus €5m in variables. He was carried here as a rumour at £38m — the figure Inter had discussed before failing to agree personal terms — so the fee landed about £8m short of the model.

What it does to the numbers. Book value was ~£15.5m against the £42.5m paid to Atalanta in 2021 and extended to 2029, so the sale books ~£15m of profit rather than the ~£22m modelled. On the cost side it frees ~£14m/yr — £165k/wk of wages plus ~£5.4m of amortisation — which is the larger half of the story. Wages, amortisation and player-sale profit have all been moved by this deal alone; the ratio falls from ~64.5% to ~60%.

And the constraint that actually mattered. Romero was one of the surplus non-homegrown bodies. The 25-man count goes from 20-for-17 to 19-for-17, so the squeeze eases by one without a single financial argument being involved — which is why the sale was tolerated in the first place. Two still need to go.

17 Aug 2026

Vicario to Juventus — and it is a loan, not the sale this page had modelled RESHAPED

Guglielmo Vicario. Agreed today: a season-long loan with a reported £8.6m option — not an obligation — to buy next summer. He is travelling for the medical; no club announcement yet, so it sits as ADVANCED.

Why the numbers change shape. This page carried him as a ~£17m sale booking ~£7m of profit. That was the right guess at the time and the wrong structure now: on a loan no fee arrives, no profit is booked, and the ~£2.5m/yr amortisation on his £17.2m 2023 fee stays on Spurs’ books. The gain is ~£80k/wk of wages off the bill — roughly £4.2m/yr — and nothing else. The option is worth less than it looks, too: by summer 2027 his book value will have amortised down to about £7.4m, so £8.6m would book barely £1m. Cost-shedding, not trading.

Context. Juventus came to him only after abandoning Emiliano Martínez — noted on the Villa page, where that rumour is now dead. Vicario lost his place to Kinský late last season and De Zerbi stayed with the Czech through pre-season; Dubravka’s free transfer now reads as the succession plan it always was.

15 Aug 2026

De Zerbi promises “another bomba” WATCH ITEM

The next signing. De Zerbi told Men in Blazers the market “is not finished for sure — we have completed 60% of our project… now we have another bomba.” No name has attached credibly yet; with ~£260m already committed this summer, whatever the bomba is will be tested against the ratio on this page the day it lands. All existing deals re-checked 15 Aug; no material changes.

09 Aug 2026

The captain joins the exit board — Romero & Vicario talks added · Savinho held at Advanced · Richarlison, Bergvall & Gakpo re-graded

Nothing completed, so no hero figure moves. A full external research pass (web search restored after the blocked 4–5 Aug sessions; direct fetches of transfermarkt/BBC/ESPN/Wikipedia still refused by the gateway, so everything below rests on search-indexed reporting) found no Spurs deal officially completed or announced between 5 Aug and this evening. Committed fees stay £294.5m, sales £64m, net −£230.5m, the estimated squad cost ratio ~65% vs the 85% green line, and the 3-year-smoothed player-sale profit assumption is untouched. What moved is the shape of the out-column.

Savinho — held at ADVANCED, wording tightened. The weekend's reporting (8–9 Aug) describes personal terms agreed and the clubs "closing in" on a full agreement, with Spurs wanting it finalised before 10 Aug and the FEE the last stumbling block — City's ask reported around £60m, other reports £65–68m. Notably, nothing this weekend re-corroborates the late-July "medical taken" claim, so that wording is withdrawn; "closing in with terms agreed" is still squarely the Advanced rung, and £65m (the most widely reported figure) remains the number in the totals. Still unannounced by either club.

New — Cristian Romero (Rumour Mill, out). The club captain: Inter negotiated a package with Spurs reported at up to £38m (€40m) but couldn't agree player terms; Atlético Madrid have now agreed a four-year contract with Romero and are preparing a bid in line with Inter's. Numbers discussed between clubs, but per Sky no formal offer received — so he enters the Rumour Mill, not the transfer table, modelled at £38m (~£22m profit over a ~£15.5m book, ~£14m/yr freed). His squad-list chip flips from "stays" to amber. New — Guglielmo Vicario (Rumour Mill, out). Juventus have an agreement in principle with his camp on personal terms and Spurs have green-lit talks, but the clubs are apart on valuation and no fee is agreed (~£17m is our estimate). Dúbravka's arrival suddenly reads like succession planning.

Re-graded. Richarlison: talks now OPEN with Juventus and Fenerbahçe at a reported €20–25m ask — his model fee drops £26m → £21m (~£10m profit); Juve treat him as Plan B behind Kolo Muani, so it stays a rumour. Bergvall: Brighton are preparing a club-record bid close to the ~£60m valuation — the first suitor willing to meet it — with Fulham and Villa joining Forest in the queue; model fee rises £50m → £60m (~£55m profit). Gakpo, corrected: the 5 Aug "Liverpool clear-out list" claim is not supported by the latest reporting — he is NOT on an exit list, but IS described as Spurs' leading attacking target with talks expected to enter key stages; the deal hinges on Liverpool's price. Sarr: Aston Villa reported in at ~£30m alongside the Brentford-offer story. Solanke: Nottingham Forest interest reported 7 Aug, with one journalist claiming he will leave — the negative-profit warning stands.

What it means, bean-counted. Four of the five live outgoing threads (Vicario, Richarlison, Sarr, Solanke — all bar Bergvall) would each free a non-homegrown slot from the 19-for-17 squeeze that Romero’s sale has already eased by one, which is precisely why a club with £115m+/yr of ratio headroom is entertaining them: the constraint being traded against is the list, not the money. Cross-club stages flagged for reconciliation: Savinho (Man City, adv £65m), Bergvall (Brighton preparing ~£60m, rumour), Gakpo (Liverpool, rumour), Schade (Brentford, rumour), Sarr (Villa/Brentford, rumour), Solanke (Forest, rumour). Unverifiable and therefore omitted: a single-source Osimhen mention, and a lone report giving Dúbravka's origin as Burnley rather than the free agency carried here since launch.

05 Aug 2026

Savinho promoted from rumour to ADVANCED · Sancho correction · Thompson fee reconciled

The day's movement. Savinho (Manchester City, £65m) moves off the Rumour Mill and into Ins & Outs at Advanced — reported agreed with a medical taken in late July, and still unannounced by either club as of this evening. That is exactly the rung the ladder exists for: it is not a rumour any more, and it is not done either. It stays out of the "done" column until a club says so. This also identifies De Zerbi's promised "bomba", so the winger-shortlist framing has been retired across the page.

Consequences, followed through. Committed fees rise from £229.5m to £294.5m and the window's net balance from −£169.5m to −£230.5m, both counting advanced deals as the tables always have. His ~£13m/yr of amortisation flows into the squad-cost model automatically from the squad array, lifting the estimated ratio from ~63% to ~65% against the 85% green line and cutting annual headroom from ~£131m to ~£118m — still the most comfortable big-revenue position in the league, and still ~20 points inside the line. New amortisation from this window rises from ~£46m/yr to ~£59m/yr. The registration arithmetic is where it actually bites: Savinho is a senior non-homegrown winger, so the audit goes from 19 non-HG for 17 slots to 20. An exit was already needed; now it is needed twice over. His squad row is flagged ADVANCED · UNANNOUNCED and his contract end is an assumption, not a reported term.

Corrected — the "João Pedro" check. Jadon Sancho was listed here as a £20m Manchester United player. He is not one. His United contract expired on 30 June 2026 and he left as a free agent after a season on loan at Aston Villa, so there is no fee and no selling club. The rumour now models him at £0 fee with wages only — which sharpens rather than softens the point it was making. Tynan Thompson's fee is reconciled from "undisclosed/tribunal" to ~£4m plus add-ons, completed 20 Jul, matching Manchester United's own record; window sales rise £60m → £64m and booked profit by ~£4m.

Added to the Rumour Mill: Kevin Schade (Brentford, ~£52m ask — but Saudi, Arsenal and Inter are also in, and Brentford's stated intention is to extend him) and Pape Matar Sarr as an outgoing, reported 29 Jul as being offered to Brentford by Spurs rather than chased — no bid, no talks, but the selling club started it, which is the tell. Cody Gakpo updated: Liverpool have him on the clear-out list with Spurs named, but no bid from anyone and a valuation gap of roughly £40m vs £65m.

Cross-club flags for central reconciliation. Savinho is a Manchester City deal and their page has carried it at advanced since late July while flagging this page as the stale side — now agreed, at the same £65m and the same status. Two mismatches remain and are not resolved here because only this file may be edited: (1) Newcastle book the Tonali sale at £100m, the add-on-inclusive headline, while this page uses the £92.5m guaranteed fee as the amortisation basis — both defensible, but the league-wide net-spend tables cannot use both; (2) the shared five-year and window net-spend data in /shared-league-data.js still shows Spurs at £229.5m in / £60m out, so the League tab now understates this window by £65m of buys and £4m of sales until that shared file is rebuilt centrally.

Scope, stated honestly. As on 4 Aug, no external source was reachable: the session's web-search quota was exhausted before the first query and every transfer-data domain — transfermarkt, BBC, Sky, the club site — is refused at the network gateway with a 403. Everything above is therefore derived from the site's own counterpart pages, seventeen of which were refreshed today, and which only see business involving other Premier League clubs. Treat this window as cross-checked for intra-PL moves and unverified for anything involving a club outside the Premier League. Nothing was invented to fill the gap; see the open questions logged with this entry.

04 Aug 2026

Methodology: squad-cost amortisation now derives from the squad contracts

The headroom model's amortisation input used to be a hand-maintained estimate, while the Squad tab computed the same thing bottom-up from every player's fee and contract dates. The two had drifted apart — by up to £29m across the league, which is several points of squad cost ratio on pages whose whole purpose is showing how close a club sits to a compliance line. The hero model now takes its amortisation straight from the squad contracts, so the headline ratio and the squad table can no longer disagree, and the figure updates itself whenever the squad data changes. The field is still editable: type over it and the what-if model responds as before. Wages remain a stated estimate — clubs publish total staff costs, not the players-plus-head-coach slice the rule needs, so that split is still this tracker's assumption and is labelled as one.

04 Aug 2026

Transfer record rebuilt from a full window list — Brennan Johnson's £35m sale restored

Added: Brennan Johnson to Crystal Palace, £35m, announced 3 January 2026 — missing from this page entirely. He was still sitting in the 2026/27 squad table, in the book-value and amortisation totals, on the 25-man list as a retained homegrown forward and in the 25/26 list with no exit flag, while Palace's page has carried him as a completed club-record signing all along. He now appears in the 2025/26 outgoings, is removed from the current squad, and is flagged gone on last season's list.

Consequences followed through: squad book value and annual amortisation both fall (his ~£27m book and ~£7m/yr charge come out of the live totals automatically, now that he is off the squad array); the forwards flow reads 3 out / 4 retained instead of 2 / 5; the homegrown audit drops from ~5 senior HG players to ~4 (Maddison, Solanke, Spence, Gray) while the non-homegrown count stays 19 against 17 slots — Johnson occupied a homegrown place, so his exit tightens the list rather than loosening it. FY26 picks up roughly £4m of profit on disposal, not £35m: ~£31m of the £47.5m 2023 fee was still unamortised in January. That is too small to move the ≈£85m PSR headroom estimate, so it is left unchanged and simply annotated. Nothing in the summer 2026 window moves — this was January business: net spend stays −£169.5m (£229.5m in, £60m out), the squad cost ratio stays ~65%, and the five-year net-spend table is a Feb-2026 third-party compilation that already contained the sale.

Corrected: nothing else. Every summer 2026 deal already on the page — Tonali £92.5m, Fernandes £85m, van Hecke £52m, Senesi, Robertson and Dúbravka free; Vušković £46m+£4m, Véliz ~£8m, Devine ~£6m, Thompson undisclosed, Drăgușin's Fiorentina loan and Bissouma's release — checks out on fee, date and status, and no window arrival or departure was found to be missing. Andy Robertson's free from Liverpool was flagged by the cross-check as a status mismatch; it is correctly done here (contract expired 30 June, registered 1 July) and Liverpool's page has since been corrected to agree, so no change was needed.

Audit scope, stated honestly: this pass was meant to rebuild the window from an external source list (Transfermarkt or an official round-up) rather than trusting what was already on the page. That was not possible today — the search quota for this session was exhausted and every transfer-data domain returned 403 through the proxy — so the rebuild fell back to the site's own 20-page counterpart cross-check, which only sees moves between Premier League clubs. Treat the window as verified for intra-PL business and unverified for arrivals from or departures to clubs outside the Premier League; the Johnson entry rests on Crystal Palace's page rather than on an outside source, and its fee and date are reproduced from there.

27 Jul 2026

Page launched

The Bean Counter's Tottenham Hotspur tracker goes live at bean-counter.co.uk/tottenham. Launch data set: the full summer 2026 window as reported to date — Tonali (£92.5m club record, from Newcastle), Fernandes (£85m, West Ham), van Hecke (£52m, Brighton), Robertson, Senesi and Dúbravka free; Vušković to Brighton (£46m + £4m, 20% sell-on retained), Véliz to Bahia (~£8m), Devine to Preston (~£6m), Dragusin to Fiorentina on loan with conditional obligation, Bissouma released. FY25 accounts logged (record £565.3m revenue, club-record £121m pre-tax loss, £256m wages, £831m net debt). PL SCR model built on the 85% non-European thresholds; final PSR cycle estimated as a pass on stadium-depreciation deductions; homegrown squad-list audit counts ~19 non-HG seniors for 17 slots. Rumour Mill seeded with the Bergvall bids (Newcastle £46m and Forest £38m rejected), the winger shortlist for De Zerbi's promised "bomba" (Savinho, Gakpo, Sancho among five reported names), and the Richarlison and Solanke questions.

Glossary

Every rule in this tracker, in plain English — each with a real Spurs example. For the group chat member who just asked "what's SCR?"

PSR (Profit & Sustainability Rules)
The Premier League's rule capping losses at £105m over a rolling three-year period (£35m/yr), after 'good' spending on academy, infrastructure, community and women's football is deducted. Spurs' ~£70m/yr of stadium depreciation is deductible — the reason a club-record £121m loss still leaves an estimated ~£85m of PSR headroom. One final assessment in January 2027, then the rule retires.
PL Squad Cost Ratio (PL SCR)
From 2026/27, the PL's replacement for PSR: squad cost — player and head-coach wages, transfer amortisation and agent fees — capped at 85% of revenue plus net player-trading profit (70% for clubs in Europe). Spurs sit around 65% on this tracker's estimates, the most comfortable big-revenue position in the league.
Green & Red Thresholds
The SCR's two enforcement tiers: over green (85%/70%) brings financial penalties from 2027/28; over red (115%/100%) risks sporting sanctions. Using the buffer between them ratchets next season's red threshold down, earned back at 10% per compliant season.
SSR (Sustainability & Systemic Resilience)
The PL's new liquidity and solvency tests running alongside SCR: positive liquidity after an £85m stress test, phased positive-equity requirements, tested each 7 July. The rule that formally watches Spurs' £831m net debt — the league's largest, but long-dated and fixed-rate against the stadium.
Squad Cost Ratio (UEFA SCR)
UEFA's 70% version of the rule, tested on a calendar-year basis — the rule that fined Villa, Chelsea, Newcastle and Forest in July 2026. Not applicable to Spurs in 2026/27 (no European qualification); Spurs' clean record on it is a genuine asset if the rebuild delivers Europe.
Football Earnings Rule (FER)
UEFA's successor to break-even: no more than ~€60m of losses over three years, counting only football earnings — intra-group asset sales excluded. Also not applicable to Spurs this season, and never breached by them.
Homegrown Player
A player registered with an English or Welsh club for three seasons (36 months) before their 21st birthday — nationality irrelevant. A PL 25-man squad allows a maximum of 17 non-homegrown players. Robertson (Scottish-trained) doesn't count as homegrown; Maddison, Solanke, Spence and Gray do — Brennan Johnson did too, until his January move to Crystal Palace.
25-Man Squad List
The PL's registration list, submitted after each window. Spurs' binding constraint in 2026/27: roughly 20 non-homegrown seniors for 17 slots on our estimate — the arithmetic behind the Bergvall bids and the Richarlison question.
U21 Exemption
Players born on or after 1 January 2005 (for 2026/27) don't need a squad-list place. Bergvall and Tel qualify; Archie Gray, Odobert and Kinský have aged out.
Amortisation
Spreading a transfer fee as a cost over the contract length. Tonali's £92.5m on a five-year deal costs ~£18.5m/yr in the books — which is why fees are judged per-year while sales count at once.
Five-Year Amortisation Cap
UEFA and PL rule that fees must be amortised over a maximum of five years even on longer contracts — closing the eight-year-contract loophole Chelsea made famous.
Book Value
What's left of a player's fee still to be amortised. Sale profit = fee minus book value. Bergvall's £8.5m fee is mostly amortised into a small book — why a £50m sale would be ~90% pure profit.
Pure Profit
Shorthand for selling a £0-book-value player (academy graduate or free transfer): the entire fee lands as profit. Alfie Devine's ~£6m to Preston is textbook — small money, 100% margin.
Sell-On Clause
A percentage of any future sale owed to a selling club. Spurs kept 20% (plus matching rights) on Vušković's next transfer — if Brighton's record buy becomes a Brighton-style record sale, Spurs get paid twice.
Matching Rights
A contractual right to match any future bid for a sold player before he moves elsewhere — Spurs hold them on Vušković. Rare, and a sign a club sold for the books, not for footballing conviction.
PL 4% Transfer Levy
A 4% surcharge on transfer fees paid by Premier League clubs, funding player pension and education schemes. It capitalises into the registration cost and amortises with the fee — Tonali's £92.5m really costs ~£96.2m.
FIFA Solidarity Contribution
Up to 5% of an international transfer fee distributed to the clubs that trained the player between ages 12 and 23. Rides inside the transfer cost for compliance purposes.
Loan With Obligation
A loan that converts to a permanent transfer when conditions trigger — the seller books the fee later, the buyer delays the cost. Dragusin's Fiorentina move is one: if the conditions hit, a ~£17m sale lands in a future Spurs account.
Senior Loan Quotas
Limits on loan signings: domestically, max 2 concurrent (4 per season) from English clubs and never two from the same club; internationally, max 6 senior loans (over-21, non-club-trained) with U21 and academy players exempt. Spurs currently use none inbound — last season's Palhinha and Kolo Muani loans expired.
Headroom
The gap between current squad cost and the green line — the practical transfer budget. Spurs' is ~£115–120m/yr of running cost on our estimates: the number that explains the whole window.
Calendar vs Season Test
UEFA tests its ratio over the calendar year; the PL tests the season (assessment March 2027). Only the PL clock applies to Spurs in 2026/27 — one of the quiet simplifications of missing Europe.