Coventry City crest
The Bean Counter
Coventry City · Financial Compliance · 2026/27

The goal is to significantly reduce the club's annual operating loss from 2026-27 onwards… it is a massive challenge.

— Doug King · owner & executive chairman · with the FY2024/25 accounts
Coventry City official crest

The Bean Counter · Coventry City

2026/27 PRE-SEASON
Sky Blues · Back After 25 Years
Football has become a game of bean counting — so here's the abacus. PL Squad Cost Ratio · SSR liquidity tests · transfer spend · book values · promotion economics tracker

State of Play

Coventry City's estimated squad cost ratio is 72.6% against the Premier League's 85% limit for clubs outside Europe, leaving roughly £18.1m/yr of cost headroom. The summer 2026 window stands at £4.4m banked from sales against £130.7m 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 · 2026/27
/ 85%
85% green line · red line 115% (off scale)
One ratio, one clock — the PL tests season 2026/27 (PSR is retired). UEFA's 70% version doesn't apply: Coventry aren't in Europe.
Net Window Spend
Completed (~£90m incl. record Yirenkyi, announced 7 Aug) + agreed-pending-medical (Hamer ~£6m) · no disclosed sales — promotion shopping, King-funded
Squad Churn
·
Title-winning squad → first PL 25-man list: 5 completed signings including record man Yirenkyi, plus Hamer agreed 8 Aug + academy grads; releases & dev loans out
Sanctions Live
NONE
Clean record since 2013's SISU-era administration (−20 pts, embargo). Nothing pending.

The Clock — What's Counting Down

DAYS TO SAUDI WINDOW CLOSE
6 SEP
DAYS TO PL 25-MAN LIST
~2 SEP · SQUAD LIST DUE
DAYS TO PL SCR CHECKPOINT
OCT 2026
DAYS TO SSR PROMOTED-CLUB TEST
31 OCT 2026

The Six Regulations — Pass / Fail / Room Left

PL SCR · 85%
Big Headroom
EST: vs the 85% green line (red at 115%) · season basis, first assessment 1 Mar 2027.
ROOM: of squad cost/yr before the green line — promotion multiplies the denominator ~4× overnight. The ratio is NOT Coventry's constraint; cash is.
PL SSR
First Test 31 Oct
TESTS: liquidity after an £85m stress test (relegation modelled) + positive-equity ratios. Newly promoted clubs are tested by 31 October, not July.
COVENTRY: externally debt-free since the King takeover, losses funded by equity (£15m share issue, loans converted) — but the club still runs an operating loss and doesn't own its stadium. Amber until the first test is passed.
EFL P&S (LEGACY)
Cycle Closed · Est. Pass
EST USAGE: ~£31m of the £39m 3-yr Championship loss limit (FY24 +£8.7m · FY25 −£21.6m · FY26 est −£18m) — before allowable deductions (academy, women's, infrastructure), which add margin.
STATUS: the 2023/24–2025/26 cycle ended 30 June 2026 with no charge, no embargo, nothing referred. FY26 accounts (y/e 31 May) will confirm.
PL 25-Man Squad List
Quota Comfortable
RULE: max 25 over-21 players, of whom no more than 17 non-homegrown. Coventry's projected list has ~11 homegrown seniors (Eccles club-trained; Wilson, Rudoni, Simms, Thomas, Woolfenden, Kitching, Dasilva, Grimes, Mason-Clark, Thomas-Asante — including Rushworth, now signed) — the quota is nowhere near binding.
DUE: ~2 Sep 2026, after the window closes; resubmitted after January.
UEFA Rules
Not Applicable
No European football = no UEFA SCR (70%), no FER, no List A. Those regimes only attach if Coventry qualify for Europe — at which point the domestic green line also drops from 85% to 70%.
Worth knowing now: success is the thing that tightens the rules.
Loan Quotas (In · Senior)
2 + 6 Left
DOMESTIC (English clubs): 2 of 2 concurrent slots free (4 per season) — last season's loan signings have all ended or converted · never more than 1 from the same club · max 1 GK between PL clubs.
INTERNATIONAL (FIFA): 6 of 6 senior slots free. Buying Rushworth outright rather than re-loaning him keeps the domestic slots open for deadline-day patches — the reported loan interest in Chelsea's Mudryk (Rumour Mill, nothing agreed) would spend one of them.

Quick Answers — Coventry's Finances in Plain English

Are Coventry City in trouble with FFP in 2026?

No. The 2023/24–2025/26 EFL P&S cycle closed on 30 June with an estimated aggregate loss of ~£31m against the £39m Championship limit (before deductions), no charges and nothing pending. In the Premier League's new regime, the estimated squad cost ratio sits in the high 50s per cent against an 85% limit — even after ~£90m of summer signings.

What rules apply now PSR is gone?

From 2026/27 the PL replaced PSR with the Squad Cost Ratio — 85% of revenue plus net player-trading profit for clubs not in Europe (70% for the nine in Europe) — plus the SSR liquidity and solvency tests. As a promoted club, Coventry's first SSR test is due by 31 October 2026. UEFA's rules don't apply.

How much have Coventry spent this summer?

About £99m has completed across six permanent deals — Taiwo Awoniyi arrived from Nottingham Forest for £9m on 17 August — alongside Loum Tchaouna (~£20m, a club record at the time), Aurèle Amenda (~£15.6m), Frank Onyeka, whose promotion-triggered obligation completed on 29 June for an undisclosed fee reported at ~£9m, Carl Rushworth, signed from Brighton in early August for an undisclosed fee understood to be ~£22.5m rising to ~£30m, and Caleb Yirenkyi, announced on 7 August from FC Nordsjælland at a reported ~£23.1m fixed plus ~£2.6m in add-ons (€27m + €3m) — the third club record of the summer and the biggest sale in Danish Superliga history. A sixth is agreed but not signed: on the evening of 8 August Coventry agreed a fee of ~£6m plus add-ons with Sheffield United for the return of Gustavo Hamer, and the club announced him on 11 August. That takes committed spend to roughly £96m — against no disclosed sales.

Can Coventry afford it?

Under the ratio, easily — promotion lifts revenue from ~£34m to an estimated £140m+, and even after ~£90m of completed signings this tracker estimates ~£38m/yr of squad-cost headroom to the 85% line. The real constraints are cash flow (fees are paid in cash, revenue arrives over the season) and the SSR tests — which is where Doug King's equity funding matters.

Why do people mention 2013?

Under SISU's ownership the club entered administration in 2013 (−10 points, plus another −10 when no CVA was agreed), was embargoed for late accounts, and twice played "home" games in other cities. Those are the only sanctions on the record — all pre-2023. Under King the club is externally debt-free with a clean compliance file.

What's the biggest financial risk now?

Relegation economics. The step-up in wages and fees is being priced against PL income; the SSR stress test explicitly models going straight back down. The mitigation: contracts reportedly structured with relegation clauses, modest fee levels by PL standards, and an owner who funds via equity rather than debt.

The whole thing in two sentences: promotion multiplied the denominator before the numerator — Coventry's squad cost was priced for the Championship, so the new 85% rule is passed at a canter and the summer's £2m of sales against ~£90m of completed buys — ~£96m once the agreed Hamer deal signs — (cost swing +£60.9m/yr) is deliberate, equity-funded catch-up spending. The tests that matter are cash ones: the SSR on 31 October, and the relegation stress case underneath everything.

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; five permanent arrivals are officially completed — the club-record Yirenkyi deal announced 7 August among them — and a sixth, the Gustavo Hamer return, is signed: fee agreed with Sheffield United on the evening of 8 August, announced by the club on 11 August. Rows are marked at the rung they are actually on: Done means announced by the club, Advanced means agreed/medical stage, In talks means negotiating. Coventry's first Premier League window since 2001. Deals and fees as reported 9 Aug 2026.

Summer 2026 — Out

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

Summer 2026 — In

PlayerFromFee £mWage £k/wkSCR cost £m/yrStatus
Fees Out (sales)
No disclosed sales — outgoings are releases & development loans
Fees Committed (buys)
Five completed permanent deals (~£90m) plus the agreed Hamer fee (~£6m plus add-ons, medical 9 Aug)
Net Window Balance
Negative = money spent. Funded by PL revenue + owner equity, not sales
Annual Cost Freed (outs)
Wages + stopped amortisation leaving the SCR numerator
Annual Cost Added (ins)
Fee÷5 amortisation (incl. 4% PL levy) + 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 (wages + amortisation + agent fees) · Profit on any sale would land in the denominator (revenue + net player-trading profit) · the PL's 4% transfer levy capitalises into every fee. Wages are estimates.
Buys lead this window by design — the mirror image of a selling club. A squad assembled on Championship fees (total book value ~£30m) is being upgraded with PL money before a ball is kicked: Tchaouna's ~£20m nearly tripled the club transfer record that had stood since Haji Wright's £7.7m in 2023, Amenda's ~£15.6m six days later became the second-biggest fee in club history, the ~£22.5m paid to Brighton for Rushworth in early August reset the record inside four weeks — and on 7 August it fell again, this time officially: 20-year-old Ghana midfielder Caleb Yirenkyi from FC Nordsjælland at a reported ~£23.1m fixed (~£25.7m with add-ons), the third club record in four weeks and the biggest sale in Danish Superliga history. Then, on the evening of the 8th, the sentimental one: a fee of ~£6m plus add-ons agreed with Sheffield United for Gustavo Hamer, back for less than half the £15m he left for in 2023, announced by the club on 11 August. The window's real bet isn't ratio room (there's lots) — it's that ~£90m of completed King-backed cash spend, rising to ~£96m once Hamer signs, survives the relegation stress case.

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

PlayerFromFee £mWindow

2025/26 Season — Out

PlayerToFee £mWindow
The title was won on a near-zero net spend: Lampard's 2025 summer additions were a loan (Rushworth), a free (Brau) and a deadline-day defender (Woolfenden, undisclosed from Ipswich), while Sheaf (£6.5m to Wrexham) and Binks (£2.6m to Brøndby) went the other way. The one splurge — Onyeka's February loan — carried a promotion-triggered obligation that converted on the title being sealed and completed on 29 June. Recruitment on brains, promotion on 95 points and 97 goals.

Spending Headroom

"Room" means three different things for a promoted club: the 85% squad cost ratio (huge, thanks to the revenue jump), the cash position (fees are cash out now, PL money arrives across the season), and the SSR solvency tests (31 October for promoted clubs). The model below is adjustable — the defaults are my estimates, so put your own numbers in.

The window ledger — cash committed so far

Sales banked
Nothing disclosed — Bassette & Perry out on development loans, Allen & Collins released
Committed on signings
Tchaouna, Amenda, Onyeka, Rushworth and Yirenkyi completed (~£90m) + Hamer agreed 8 Aug (~£6m plus add-ons, medical 9 Aug)
Net window balance
All spend, no sales — the classic promoted-club shape. Add-ons and the 4% PL levy sit on top in cash terms
Committed but conditional: the Onyeka fee was this promotion's hidden invoice — a loan-with-obligation agreed in February that converted on promotion and completed on 29 June. Neither club disclosed the number; Brentford's own reporting puts it at ~£9m, with some outlets carrying €7m (~£6.1m), so treat it as a range. On Rushworth, the deal completed in early August for an undisclosed fee understood to be ~£22.5m initial rising to ~£30m in add-ons — so the headline number is the floor, not the ceiling. July reporting that Brighton were also seeking a buy-back clause and a sell-on percentage was never confirmed in the final package, and this tracker does not treat those clauses as fact. Caleb Yirenkyi is now the reverse case: announced on 7 August (medical passed the day before), so his reported ~£23.1m fixed is on the books and only the ~£2.6m of add-ons (€27m + €3m) remains contingent. The most recent deal is Gustavo Hamer: a fee of ~£6m plus add-ons agreed with Sheffield United on the evening of 8 August, announced by the club on 11 August — the cash ledger above carries the fixed element only, and nothing here treats it as signed. Bean counters read clauses, not headlines — but only the ones that are actually reported.

The Promoted Three — 2026/27's Step-Up, Compared

Three clubs came up; the finances of the leap are very different. Latest-filed accounts (Championship era, ~ estimates) vs the ~£140m+ PL revenue that now lands.

ClubLast-filed revenueWagesW/RHow they came upThe financial story
Coventry City£34.2m (FY25)£26.5m78%CHAMPIONS · 95 pts, 97 goalsExternally debt-free, equity-funded, no parachute history — but the smallest wage base of the three and a rented stadium. ~£90m spent to close the gap, ~£96m once the agreed Hamer deal signs.
Ipswich Town~£145m* (FY25)~£115m*~79%RUNNERS-UP · straight back up*FY25 was a PL season — parachute-cushioned, PL-priced squad largely retained. The smallest step-up, the biggest wage carry — and spending like it: ~£62m out on Emersonn (£24m club record), Fatawu (£20m) and Diop.
Hull City~£30m*~£28m*~93%PLAY-OFFS*Championship accounts, near-100% wage ratio — the steepest climb in the division and the SSR's hardest case. Buying cheap: Butland £3m and Zambrano the only fees, with Targett, Morita and Alzate arriving free.
The pattern: promotion roughly quadruples revenue (equal share + facility fees + merit money + commercial uplift), which is why all three suddenly have enormous ratio headroom — and why the SSR exists to check the cash underneath it. Coventry's differentiator is the balance sheet: no external debt, owner equity, no parachute dependency.

Annual constraint — squad cost ratio model

Squad cost = player & head-coach wages + transfer amortisation + agent fees. Denominator = football revenue + net player-trading profit (PL basis, season clock). Edit any figure:

PL SCR (not in Europe) · green 85% · red 115%
green 85%
Same numbers at the 70% Europe cap (context)
green 70%

What-if: add a signing

Added annual squad cost
amortisation (incl. 4% PL levy) + wages + est. agent fee
PL ratio after signing
vs the 85% green line
Window net balance after fee
Cash committed this window — beyond ~£100m is uncharted territory for a promoted club
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 allows roughly — far more than any sane promoted-club budget. Which is the point: the 85% rule was written for established clubs; for Coventry the binding constraints are cash, wage-structure discipline (one £100k/wk contract resets every dressing-room negotiation) and the relegation stress case.
Caveats: the revenue projection assumes ~£115–125m of PL central payments (equal share, facility fees, bottom-half merit assumption), ~£12m matchday at a near-capacity CBS Arena and modest commercial growth on FY25's £34.2m total. The wages figure is the SCR-relevant slice (players + head coach, including promotion-uplift clauses) — not the total staff bill — and is an estimate until PL-era contracts settle. Coventry rent the CBS Arena from Frasers Group, so no stadium-revenue upside lands directly. Non-Europe clubs may also add a capped owner-equity top-up (~£33m over 3 years, max £15m/season) to the calculation — not modelled here. 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: window cash balance, PL squad cost ratio vs the 85% line, and what the same numbers would look like at the 70% Europe cap. Uses the same base assumptions as the Headroom tab, so tweaks there flow through here.

Incoming rumours

Outgoing rumours

Window net balance
Δ annual squad cost
PL SCR (85%)
At 70% Europe cap
Profit booked (sales)
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 deepens the window's cash outflow. An outgoing deal does the opposite — wages and remaining amortisation leave the numerator, and the profit (fee − book value) lands in the denominator as player-trading profit. Coventry's quirk: because the squad was assembled on Championship fees, almost every senior player is close to pure profit if sold — Rudoni, O'Hare and Wright carry a combined book value under £4m against £50m+ of market value. The rumour maths always looks great for Coventry; the football maths is the hard part.

Squad · Book Value & Amortisation

Senior squad after this summer's confirmed exits, including Rushworth (completed early August) and Caleb Yirenkyi, announced on 7 August — his medical was passed on the 6th, so his reported ~£23.1m fixed fee is now capitalised in this table and in the blue bars of the runway below. Gustavo Hamer is not in this table — his fee was agreed with Sheffield United on 8 August but the deal is subject to a medical, and nothing is capitalised here until the club announces it; he appears instead as the amber overlay on the amortisation runway. 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 — the standard treatment). Wages are estimates triangulated from salary databases and contract reporting; PL-era deals are provisional until the databases catch up. 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
💰 highlighted rows = est. profit if sold ≥£10m — where market value towers over book value. This is most of the squad: a Championship-title side assembled for ~£60m gross now carries PL market values against largely-amortised fees (Rudoni's ~£3.5m 2024 fee is over half written down; Brau and Dasilva arrived free; Wright's 2023 record £7.7m is mostly amortised). These are the bean counter's favourite players and the football department's succession-planning headache. Market values are Transfermarkt-style estimates. Not listed individually: academy/development players (Kai Andrews, Callum Perry on loan at Cambridge, and the U21 crop) — collectively immaterial to amortisation but pure profit if ever sold. Free transfers & academy players carry £0 book value (that's why selling them is pure 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. Amortisation shown on remaining contract; the PL caps 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 — tiny by PL standards
Annual Amortisation
Current squad only. Club-wide FY25 charge was ~£6m (est) — the league's incumbents run £100m+
Est. Squad Wages
Estimated senior playing squad only. Total club FY25 wage bill: £26.5m (incl. staff) — rising sharply on PL terms
The promoted-club balance sheet, in one paragraph: Coventry's entire squad book value (~£110m after this window's five completed signings) is still modest by PL standards, and roughly four-fifths of it arrived in the last month. That asymmetry cuts both ways. Upside: almost any sale books close to 100% profit, and the 73% ratio can't realistically be threatened. Downside: low book value means no cushion of "asset" on the balance sheet — the squad's £150m+ of market value exists only if the team stays up, and the accounts can't recognise a penny of it. The wage structure is the real management challenge: pre-promotion contracts (£10–30k/wk) now sit alongside £40–55k/wk PL arrivals, and promotion-uplift clauses reportedly triggered across the squad on 17 April. Every renewal from here is priced against the new money.

Amortisation Runway — What's Already Committed

Transfer-fee amortisation locked into future seasons from today's contracts (straight-line on remaining book value), including the completed Rushworth and Yirenkyi deals. The amber overlay is the agreed-but-unsigned Hamer deal — shown separately because it is not on the books until the medical is passed and the club announces it. This is spending that's already eaten before Coventry buy anyone else.

Assumes current contracts run to term (sales remove their bars; extensions re-spread them). Rushworth's ~£22.5m and Yirenkyi's ~£23.1m are both inside the blue bars — Rushworth completed in early August, Yirenkyi was announced on 7 August on a contract to June 2031. Hamer's agreed ~£6m sits in the amber overlay on a modelled 3-year deal: fee agreed 8 August, announced by the club on 11 August, so it is committed-in-principle rather than capitalised, and the contract length is this tracker's assumption. Add-ons (Rushworth towards ~£30m, Yirenkyi a further ~£2.6m, Hamer's undisclosed extras) would raise these bars if triggered.

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 Taiwo Awoniyi does not qualify despite being registered by Liverpool at 18: he was loaned abroad throughout, and the test counts seasons actually served here.

Promotion arrived with the quota already solved. 25 of the 25 places are used and the last one is genuinely free: 13 homegrown and 12 non-homegrown leaves six of the ceiling unspent, because a Championship squad is mostly a squad of players who came through English academies. That is the quiet advantage a promoted club carries into its first season, and it will erode with every foreign signing. Taiwo Awoniyi is the cautionary case: registered by Liverpool at 18 and still not homegrown, because he was loaned abroad throughout and the test counts seasons actually served here.

PL Squad List — 25-Man Rules, 2026/27

No UEFA List A here — Coventry aren't in Europe. What applies instead is the Premier League's squad list: max 25 players over 21, no more than 17 non-homegrown (homegrown = 3 years registered with an English/Welsh club before the age of 21), with under-21s (born on/after 1 Jan 2005) unlimited and listed separately. Due ~2 September, refreshed after January.

Squad List Transition · Championship Champions → First PL List

Each position: who's gone since the title was sealed, who stays, and who's arrived — with deal status. Only confirmed/advanced deals are classed in/out; loose links stay in the Rumour Mill.

Goalkeepers

Out · 1
Brad CollinsRELEASED
Retained · 2
Oliver DovinSTAYS
Ben WilsonSTAYS · HOMEGROWN
In · 1
Carl RushworthSIGNED EARLY AUG · ~£22.5m CLUB RECORD · HOMEGROWN
NET: the title-winning keeper's loan ended on 30 June and he went back to Brighton — then in early August Coventry bought him outright for an undisclosed fee understood to be ~£22.5m rising to ~£30m, a club record that beat Tchaouna's inside four weeks. Homegrown (Brighton academy), so quota-friendly as well as popular.

Defenders

Out · 2
Callum PerryCAMBRIDGE LOAN · U21 ANYWAY
Joel LatibeaudiereRELEASED
Retained · 6
Milan van EwijkSTAYS
Bobby ThomasSTAYS · HOMEGROWN
Luke WoolfendenSTAYS · HOMEGROWN
Liam KitchingSTAYS · HOMEGROWN
Miguel Ángel BrauSTAYS
Jay DasilvaSTAYS · HOMEGROWN
In · 1
Aurèle AmendaSIGNED 17 JUL · ~£15.6m · NON-HG
NET: Amenda is the PL-grade upgrade at centre-back; the unconfirmed Tomori link (Rumour Mill — Newcastle now reported ahead) would be the second. Four homegrown defenders keep the quota trivial.

Midfielders

Out · 1
Jamie AllenRELEASED
Retained · 4
Jack RudoniSTAYS · HOMEGROWN
Victor TorpSTAYS
Matt GrimesSTAYS · HOMEGROWN
Josh EcclesSTAYS · CLUB-TRAINED
In · 2 + 1 pending
Frank OnyekaPERMANENT 29 JUN · ~£9m REPORTED · NON-HG
Caleb YirenkyiSIGNED 7 AUG · ~£23.1m CLUB RECORD · U21 — NO SLOT NEEDED
Gustavo HamerAGREED 8 AUG · ~£6m + ADD-ONS · MEDICAL 9 AUG · NOT YET SIGNED
NET: the engine room that won the title stays intact, with Onyeka's five Premier League seasons at Brentford converted from loan to permanent by promotion itself. Yirenkyi — announced on 7 August, a 20-year-old Ghana international out of the Right to Dream pipeline who can play defensive midfield, central midfield or centre-back — is U21-eligible, so the club-record fee costs the squad list precisely nothing. Hamer is signed: fee settled with Sheffield United on 8 August, announced by the club on 11 August. If completed he would take a non-homegrown over-21 slot — of which Coventry have eight to spare.

Forwards

Out · 1
Norman BassetteWESTERLO LOAN · DEVELOPMENT
Retained · 6
Haji WrightSTAYS · 17 CHAMPIONSHIP GOALS · NEW DEAL TALKS
Ellis SimmsSTAYS · HOMEGROWN · 13 GOALS
Brandon Thomas-AsanteSTAYS · HOMEGROWN · 13 GOALS
Ephron Mason-ClarkSTAYS · HOMEGROWN · 10 GOALS
Tatsuhiro SakamotoSTAYS
Kai AndrewsU21 · NO LIST SPOT NEEDED
In · 1
Loum TchaounaSIGNED 11 JUL · ~£20m CLUB RECORD · NON-HG
NET: the Championship's 97-goal attack survives contact with the window, upgraded by Tchaouna. The unconfirmed Nebel and Amoako Jnr links (Rumour Mill) would each take a non-homegrown spot — still no quota pressure.
Projected list: ~21 over-21 players of a possible 25 (Rushworth now signed and included), of whom only ~9 are non-homegrown against an allowance of 17 — Dovin, van Ewijk, Amenda, Brau, Torp, Onyeka, Sakamoto, Tchaouna and Wright. Yirenkyi, signed on 7 August at 20 (born 2005 or later), is an U21 free hit — no list slot needed at all until he turns 22. Hamer, if his agreed move completes, would be a ~22nd over-21 player and a ~10th non-homegrown — still no quota pressure. U21s (Andrews, Perry and the academy crop) are unlimited and don't count. Coventry's registration risk is the opposite of a UEFA-squeezed club's: empty slots, not blocked ones.
The rule that actually shapes this squad: nothing blocks Coventry from registering signings — there is no transfer-balance gate, no UEFA settlement, no homegrown crunch. The 25-man list only bites promoted clubs when panic Januarys stuff it with non-homegrown loanees (see several past promoted sides). The discipline being shown — buying young, buying homegrown where possible (Rushworth), keeping the title squad's spine — is exactly the shape that avoids that trap.

Sanctions & Scars — The Full Record

The P&S Track — Annual Pre-Tax Results vs the Limit's Pace

+£10m £0 −£10m −£20m −£30m EFL P&S PACE · £13m/yr AVG (£39m/3yr LIMIT) FY2023FY2024FY2025FY2026 est −£4.7m +£8.7m · Gyökeres/Hamer sales −£21.6m · the promotion push est −£18m · pending accounts
Club financial years end 31 May. FY26 is this tracker's estimate (accounts due early 2027). Three-year aggregate FY24–26 ≈ −£31m vs the £39m Championship limit — inside it even before allowable deductions (academy, women's, community, infrastructure). Individual years may exceed £13m; only the 3-year sum is tested.
March 2013

Administration — the SISU era's lowest ledger line

A SISU-related creditor placed the club's operating company into administration amid the Ricoh Arena rent dispute (~£1.3m unpaid). The Football League deducted 10 points, and a transfer embargo was already in place for late filing of accounts. An appeal was lodged, then withdrawn.

Summer 2013

No CVA — another −10, and exile to Northampton

With no company voluntary arrangement agreed with creditors, a further 10-point deduction was applied for 2013/14 — a season the club began playing "home" fixtures 34 miles away at Sixfields. Twenty points and a home ground lost without a ball being kicked: the full pre-modern sanction set.

2017–2021

League Two, and the second exile

Relegation to the fourth tier in 2017 — weeks after winning the Checkatrade Trophy at Wembley — then promotion straight back via the 2018 League Two play-off final, also at Wembley, and the League One title in 2019/20. In between came two more seasons lodging at Birmingham City's St Andrew's in 2019–21 during the next rent dispute. Not sanctions — but the financial scar tissue that explains why this fanbase reads balance sheets.

January 2023

The King takeover — debts cleared, slate wiped

Doug King's purchase from SISU (85%, later 100%) was approved by the EFL, with roughly £60m of legacy debt cleared and the club recapitalised through equity. Since then: no embargoes, no charges, no deductions, accounts filed on time, and losses funded by share issues (including a £15m issue with loans converted to equity) rather than borrowings.

30 June 2026

The P&S cycle closes clean

The 2023/24–2025/26 EFL cycle ended with an estimated aggregate loss of ~£31m against the £39m limit — no referral, no business plan, no embargo. Promotion means the FY26 accounts will be reviewed under the PL's transition arrangements, but nothing is outstanding.

Now → 2026/27

The watchlist, honestly stated

Nothing pending. What this tracker watches instead: the SSR promoted-club test (31 October 2026), cash-flow timing on the ~£90m of window spend completed after the club-record Yirenkyi announcement — heading for ~£96m once the agreed Hamer deal signs — and the January temptation to stuff the squad list if the start goes badly. The record since 2023 suggests discipline; the record before 2013 is why we check.

Last Accounts — FY2024/25 (y/e 31 May 2025)

The season of Lampard's arrival and the run to the play-off semi-finals — the last full Championship accounts before the title year. Headline: a £21.6m pre-tax loss, knowingly funded by the owner as the price of the promotion push. It worked.

Revenue
£34.2m
+£5m on FY24 — match receipts, broadcast & commercial all up on the play-off run
Pre-tax result
−£21.6m
vs +£8.7m in FY24 (a year flattered by the Gyökeres & Hamer sale profits)
Wage bill
£26.5m
+13% (from £23.4m) · ~78% of revenue — mid-pack for a Championship promotion chaser
Exceptional items
~£2.4m
Compensation for sacking Mark Robins (Nov 2024) + hiring Frank Lampard — labelled exceptional by the club
Player amortisation
~£6m est
A Championship-scale charge — the league's incumbents run £100m+

Revenue mix (est. split)

Commercial & other
~£14m
Matchday
~£11m
Broadcasting (EFL + solidarity)
~£9m
What changes in 2026/27 — the revenue cliff, climbed upward: Premier League central payments alone (equal share + facility fees + merit money) are worth an estimated £115–125m — three-and-a-half times the club's entire FY25 revenue — before a sell-out CBS Arena season and PL-priced sponsorships. The catch in the fine print: Coventry do not own their stadium (the CBS Arena belongs to Frasers Group; King's earlier ~£25m bid didn't come off), so matchday economics stay rent-shaped, and there's no stadium asset on the balance sheet for the SSR equity tests. The bean-counter's read: the P&L transforms overnight; the balance sheet is still a promoted club's.

How the £21.6m loss happened

Revenue+£34.2m
Wages & salaries−£26.5m
Other operating costs & depreciation ~ est−£20.9m
Player amortisation ~ est−£6.0m
Exceptional — manager change costs−£2.4m
Player trading & other ~ est+£0.0m
Pre-tax loss−£21.6m
The whole story in one line: an owner who cleared ~£60m of SISU-era debt chose to fund a ~£21.6m loss as a promotion bet, converting loans to equity along the way (a £15m share issue) — and King's stated plan, published with these accounts, was to "significantly reduce" the operating loss from 2026/27. Promotion just did that for him. The FY26 accounts (y/e 31 May 2026, due early 2027) will show the title season: our estimate is a ~£18m loss, with promotion bonuses offsetting the first slice of PL money.

Rules & Compliance Status

Every regime that applies to Coventry, the limit in pounds, and where the club stands. "FFP" itself no longer exists as a single rule — it's the old umbrella name. Domestically, PSR retired on promotion day: from 2026/27 the Premier League runs SCR + SSR. UEFA's versions (FER, 70% SCR, List A) only attach to clubs in Europe — which Coventry are not.

COMPLIANT NOT YET TESTED / WATCH NOT COMPLIANT

Compliance calendar

22 Aug 2026SEASON OPENS · FIRST PL GAME SINCE 2001
1 Sep 2026 · 7pmWINDOW CLOSES
~2 Sep 2026PL 25-MAN SQUAD LIST DUE
Oct 2026PL SCR MONITORING CHECKPOINT
31 Oct 2026SSR PROMOTED-CLUB TEST
Feb 2027SQUAD LIST REFRESH (POST-JANUARY)
~Feb 2027FY26 ACCOUNTS (y/e 31 MAY 26) DUE
1 Mar 2027PL SCR ASSESSMENT
7 Jul 2027FIRST FULL SSR CYCLE
Premier League · live from 2026/27
Big headroom

SCR — Squad Cost Ratio (PL)

CLUBS NOT IN EUROPE (incl. Coventry): green 85% · red 115% · +~£33m/3yr owner-equity top-up (max £15m/season) — CLUBS IN EUROPE: 70% / 100%
BasisSeason / financial year (2026/27). Squad cost = player + head-coach wages, transfer amortisation/impairment, agent fees. Denominator = football revenue + net player-trading profit. Approved by clubs 14–6 in November 2025, replacing PSR.
What countsLoan players' wages count in full; the PL's 4% transfer levy capitalises into fees; amortisation capped at 5 years. Over green = levy (from 2027/28); over red = risk of sporting sanctions. Intra-group asset-sale tricks are explicitly closed.
CoventryEstimated ~58% on this tracker's model after ~£90m of completed signings — promotion lifts the denominator to ~£145m while the squad cost, though rising fast, still lags behind. Roughly £38–40m/yr of cost headroom to the green line: no promoted club has ever been less constrained by a spending rule. That's the design — the rule scales with revenue.
DeadlineMonitoring checkpoint October 2026; formal assessment 1 March 2027, after the January window. Levies only bite from 2027/28 — this season is transitional.
Premier League · the one that matters here
First test 31 Oct

SSR — Sustainability & Systemic Resilience

TESTS: liquidity headroom ≥ £0 after an £85m stress test (relegation modelled) · positive equity · ratio ≤90% (26/27) → 85% → 80%
BasisTested 7 July each year — but newly promoted clubs by 31 October, covering the current and following season. Not a spending cap: solvency tests. 40% of squad market value counts as a liquid asset; owner equity injections count in the club's favour.
What countsCash, committed facilities, receivables vs liabilities — including transfer instalments on this summer's ~£90m of completed deals, and on the agreed Hamer fee once it signs. The stress test explicitly models the revenue cliff of going straight back down.
CoventryThe strengths: externally debt-free since the 2023 takeover, equity-funded (£15m share issue; loans converted), fees paid at sensible levels. The exposures: an operating loss, a rented stadium (no asset to count), and instalment obligations on ~£90m of new fees — though the squad book value the rule part-counts has grown with the spending (40% of ~£110m). Amber purely because the first test hasn't happened; no reported concern.
DeadlinePromoted-club submission by 31 October 2026; first full annual cycle 7 July 2027.
EFL · legacy — cycle ended 30 June 2026
Est. compliant

P&S — EFL Profitability & Sustainability

LIMIT: £39m max adjusted loss over 3 Championship years (£13m/yr avg) — after deductions for academy, women's, community & infrastructure
BasisClub financial years (Coventry's y/e 31 May) — FY24 + FY25 + FY26. This is the test the promotion push was managed against, and it shaped the recruitment style: loans, frees and obligations rather than fees.
CoventryEstimated aggregate: +£8.7m − £21.6m − ~£18m ≈ −£31m before deductions, comfortably inside £39m — and the deductible categories (category-1-adjacent academy, women's programme) add margin. No charge, referral or embargo at any point in the cycle.
DeadlineFY26 accounts due ~February 2027 confirm the arithmetic. On promotion, jurisdiction transitions to the Premier League's new regime.
Premier League · registration rules
Quota comfortable

25-Man Squad List & Homegrown Quota

MAX 25 over-21 players · max 17 NON-homegrown · U21s (born ≥ 1 Jan 2005) unlimited · homegrown = 3 years at an English/Welsh club before turning 21
CoventryProjected ~21 of 25 slots used, only ~9 non-homegrown of 17 allowed. Eccles is club-trained; Wilson, Rudoni, Simms, Thomas, Woolfenden, Kitching, Dasilva, Grimes, Mason-Clark, Thomas-Asante and Rushworth all qualify as homegrown. Full board on the Squad List tab.
Loan quotasDomestic: max 2 concurrent loans in from English clubs (4/season), never 2 from the same club, max 1 GK between PL clubs. All slots currently free.
DeadlineList due ~2 September 2026; refreshed after the January window.
UEFA · not applicable in 2026/27
Dormant

UEFA FER + SCR + List A

WOULD APPLY IF IN EUROPE: 70% squad cost ratio (calendar-year basis) · Football Earnings Rule ~£52m/3yr · UEFA List A with club-trained quotas
CoventryNo European qualification, so none of it attaches. Included here because it's the ceiling on ambition: qualify for Europe and the domestic green line drops from 85% to 70% and UEFA's calendar-year clock starts. On current estimates Coventry would fail the 70% test (~73% ratio) — comfortable against the 85% line they are actually judged by, but this summer’s spending has taken them past the European one, so the rule that punishes overachievers would punish this one.
WatchVilla, Chelsea and Newcastle's 2026 UEFA fines are this rulebook in action — see the League tab for who carries what.
PL FMV protocols · UEFA Annex G.3.5
No exposure

Fair-Value & Swap-Deal Rules

TEST: related transactions and player exchanges are re-valued at fair market value; UEFA treats opposite-direction deals within 45 days as one exchange
What countsThe PL runs fair-market-value assessment protocols on registrations and sponsorships (Handbook, App 19); UEFA's 45-day rule slashed swap-deal profits league-wide (the Rogers/Garnacho structuring saga is the current exhibit).
CoventryNo related-party sponsors, no intra-group asset sales, no swap deals on the books — the cleanest possible file. The only clause-reading that might be required is on Rushworth: July reporting suggested Brighton wanted a buy-back and a sell-on percentage, but neither was confirmed when the deal completed in early August, so this tracker records both as unconfirmed. Either way it would be future-value plumbing, not a compliance issue.
Terminology · where "FFP" went

FFP → what it means now

"Financial Fair Play" (2010) was rebranded by UEFA in 2022 as Financial Sustainability Regulations: solvency + stability (FER) + cost control (SCR). Domestically, the PL's version was PSR (2013), replaced from 2026/27 by SCR + SSR; in the EFL it's still P&S. So when pundits ask about Coventry and "FFP", the precise answer is: a clean EFL P&S record, enormous PL SCR headroom, and one SSR test to pass in October.
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. Free transfers (Brau, Dasilva) and academy products (Eccles) are ~100% profit if sold; Rudoni's ~£3.5m 2024 fee is over half written down, so a £20m+ sale would book ~£18m. Buying works the other way: Tchaouna at ~£20m adds only ~£4.2m/yr of cost (levy included). That asymmetry is why a promoted club's squad is a compliance goldmine — and why keeping it is a football decision, not a financial one.

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 get 85% / 115%. Notes updated 9 Aug — officially announced deals and appointments only; pursuits, agreed-but-unsigned deals and links stay in the Rumour Mill and the Ins & Outs ladder. 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 (£19.4m in Jul 2026, 2/3 suspended) with the trend endorsed — the £117m British-record Rogers sale 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.
AFC 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.
Brighton & Hove AlbionCONFERENCE70%~222~165~74%FY25 costs rose sharply on amortisation; historically balanced by elite player trading profits. Sold Coventry keeper Rushworth for an undisclosed ~£22.5m in early Aug — briefly the Sky Blues' record, pure profit on an academy product.
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%.
Newcastle United85%~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%~526~222~42%Lowest wage ratio among the big-revenue clubs — the league's most comfortable bean-counting position.
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. Sold Onyeka to Coventry on 29 Jun (undisclosed, reported ~£9m); club-record ~£41m Sangaré in on 1 Aug.
Leeds United85%~150*~110*~73%*FY25 = promotion season. Second PL season consolidating.
COVENTRY CITYPROMOTED · CHAMPIONS85%34*27*78%The subject of this tracker: champions on 95 pts, clean P&S record, ~£90m completed across five permanent buys — the ~£23.1m club-record Yirenkyi signing announced 7 Aug topping Rushworth's ~£22.5m — with a ~£6m Hamer return agreed with Sheffield United on 8 Aug, medical pending. King-funded and externally debt-free. See every other tab.
Ipswich TownPROMOTED85%~145*~115*~79%*FY25 reflects their last PL season. Straight back up at the first attempt — and buying: Emersonn £24m club record, Fatawu £20m, Diop £8.5m.
Hull CityPROMOTED · PLAY-OFFS85%~30*~28*~93%*Championship accounts. The biggest financial step-up in the division — SSR liquidity tests bite hardest here. In: Butland (£3m) and Zambrano, plus frees Targett, Morita and Alzate.
The tier divide is the story of 2026/27: nine clubs in Europe live at 70/100 while eleven — including Coventry — live at 85/115. UEFA settlement baggage (Chelsea, Newcastle, Villa) travels with the club regardless. Note where the squeeze actually lives: Bournemouth and Palace dragged down to 70% by success, and Hull at a ~93% Championship wage ratio staring at the SSR. Coventry sit in the strangest spot on the grid — the second-smallest last-filed revenue in the league, and arguably the most spending headroom in it, because the ratio is relative and the denominator just quadrupled.
Sources: Deloitte Annual Review (league totals), club accounts via Swiss Ramble/Maguire/BlueCityBrain analyses, UEFA CFCB statements. ~ 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. Coventry's two views tell the promotion story from both ends: roughly £30m of net spend across five Championship YEARS — then ~£90m completed in eight PL WEEKS, ~£22.5m of it on a goalkeeper and ~£23.1m on a 20-year-old, with Hamer's agreed ~£6m not yet counted here (this table takes officially completed deals only; the shared board may lag the Yirenkyi announcement until its next rebuild). That is what the revenue cliff does to a transfer policy: same owner, same discipline, a denominator four times the size.

Can a Promoted Club Still Survive — and Climb?

The question underneath every number on this page. The honest answer: the trapdoor is real, but the new rules are kinder to a well-run promoted club than the old ones were.

Why the gap is brutal — because it's structural

The 85% rule is a percentage of revenue — it doesn't cap spending, it caps spending relative to income. Coventry's 85% of ~£145m buys a ~£123m squad cost; Arsenal's 70% of ~£617m buys ~£432m. The gap is locked in by design, and it's why 15 of the last 21 promoted clubs went straight back down within two seasons. Worse for the naive: the old survival playbook — borrow big, gamble the wage bill, sort the accounts later — is now illegal three different ways (SCR, SSR liquidity, positive-equity tests). You cannot buy your way to safety on credit any more.

The cracks in the trapdoor

1 · The ratio finally scales. Under PSR, a promoted club got the same £105m loss allowance as a giant; under SCR, Coventry's allowance grew 4× overnight with revenue — the first PL cost rule that doesn't structurally punish the small. 2 · Equity counts. The SSR rewards exactly what King does: fund with shares, not debt. The £15m/season equity top-up is a promoted club's rule. 3 · The trading engine is pre-loaded. A title squad on ~£30m of book value means every sale is nearly pure profit — one forced summer could fund two rebuilds. 4 · Precedents exist. Brighton, Brentford and Bournemouth all stayed up on brains, then compounded. Coventry's 95-point squad, near-zero net spend title and clean balance sheet is the same opening position — with a World Cup-season calendar quirk (the window stays open to 1 Sep, more than a week after the season starts on 22 Aug) as the first stress test.

The bean counter's verdict: survival is a cash-flow problem before it's a football one, and Coventry have bought themselves the right shape: no external debt, sensible fees, wages still under half the SCR allowance, and an owner writing equity cheques rather than IOUs. The 2026/27 season will be decided by goal difference, not by any spreadsheet on this page — but if it goes wrong, this is the rare promoted club built to survive relegation financially and go again. That, in the post-PSR era, is what "well run" means.

Changelog

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

3 Sept 2026

Stephen Mfuni arrives on loan from Manchester City OFFICIAL

Lampard’s eleventh addition since promotion, and the cheapest kind there is. A season loan for the Manchester City defender, announced 30 August. No fee, so no amortisation arrives — the whole cost is the wage share, estimated at £12k/wk and grossed to about £1.0m/yr.

That is the case for a loan at a promoted club in one line: a permanent signing of the same player puts a fee on the balance sheet for five years; this puts a salary on it for one. He is homegrown and under 21, so no registration place either. The ratio goes to 72.6% against the 85% limit.

He was on neither page until now. Why these were missing, and it is structural. Every gate on this site is built around deals with fees — guaranteed-fee checks, counterpart-fee checks, solidarity classification, book values. A fee-less loan trips none of them, so a page can be missing several and still read green. Nothing here was wrong; things were absent, which is the harder failure to see.

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

The only sale of the window was missing, so the outs table showed no income at all CORRECTION

Jahnoah Markelo left for Shabab Al Ahli for £4.4m and it was not on this page — which meant a club that had committed £130m appeared to have banked nothing whatsoever.

A foreign sale, so 5% comes off for FIFA solidarity and Coventry keep about £4.18m. He arrived from FC Twente in 2025, leaving roughly £1.9m still to write off, so the booked profit is about £2.3m — the fee is reported, the book value is inferred from a one-year-old deal, and the profit is the softest of the three figures.

Sales banked £0 → £4.4m, window profit £0 → £2m, the swing +£62.9m → +£60.9m/yr, and the ratio 72.4% → 71.9% with headroom £19.1m against the 85% limit. It is still the smallest sales total in the division, which is the shape of the window: buy heavily on promotion, sell almost nothing.

The solidarity gate did its job on the way in. Shabab Al Ahli was in neither club list, so rather than quietly taxing the fee 5% by default it refused the build and asked to be told which the club was. A classifier that guesses is a classifier that is wrong silently.

2 Sept 2026

Ethan Pinnock’s arrival was on neither page DATA

Announced by both clubs on 26 August: £5m guaranteed plus £1m in add-ons from Brentford, a three-year deal with an option of a further year, Coventry’s ninth signing of the summer and their second centre-back. It was missing here and missing from Brentford’s outs, which is how a transfer disappears entirely rather than half-appearing.

Ratio 71.0% → 72.4%, headroom £18.3m against the 85% limit that applies outside Europe. The squad list is now full at 25, 13 homegrown and 12 non-homegrown — Pinnock arrived in English football long before this deal but not before he was 21, so he brings no qualifier with him.

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

Promotion arrives with the quota already solved NEW

The Premier League’s own squad rule arrives on this page. Until today it carried UEFA’s List A and nothing about the domestic quota — a different rule with different arithmetic: 25 senior places, no more than 17 non-homegrown, under-21s outside the list altogether, and players out on loan not registered at all.

Where this squad stands: 25 of the 25 places used, 13 homegrown and 12 non-homegrown, with 2 under-21s playing free of the list. They can name a full 25, which on this tracker is the minority position.

Homegrown is a registration test, not a passport test, which is why every player now carries a stated basis rather than a bare flag: three entire seasons, or 36 months, at any club affiliated to the FA or the FAW before the end of the season in which he turns 21. Nationality is not the question and repeatedly gives the wrong answer.

Why it was missing until now. The section was built for one club eleven months ago and the commit that shipped it said the other nineteen would follow. They did not, because an absent feature breaks no gate and nothing was watching for absence. Every count here derives from the squad table, and the same headcount gate that holds every other page holds this one.

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 nothing: every sale with a fee this window went to an English club, and the mechanism only triggers when a transfer crosses between associations.

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. The cost swing in the overview read +£0m/yr against a computed +£55m/yr. And the ratio quoted in prose was ~58% against a computed ~71%. 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

Amortisation input raised to the squad floor: £23m → £41m 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.

This one was the furthest out, by a distance. £23m was a figure from before promotion was paid for. Coventry have since committed roughly £99m across six permanent deals — Chérif, Tchaouna, Amenda, Yirenkyi, Onyeka, Awoniyi — and every one of them amortises. The ratio moves about twelve points as a result, from ~57% to ~70%, which is the difference between a comfortable first season and a tight one.

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

Chérif’s sell-on exposure moves into the module that tracks them DATA

Fenerbahçe retain a percentage of any future sale of Sidiki Chérif, and reporting on 21 August has Coventry agreeing a substantial sell-on in the deal. The incoming note already carried the fact; it was not in the SELLONS module, which is where this site keeps such exposures so they show up in the totals rather than only in prose.

No percentage has been published, so it is recorded as an unquantified exposure and not modelled — the same treatment as the reported Lille clause on Brighton’s Baleba sale. Nothing else on the page changes.

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

Dan Bentley signed on a free, announced 21 August, and was on none of this page. Two years to 2028, back-up to Rushworth. No fee means no amortisation, so his entire cost is a wage that nobody has reported — it is carried as an estimate and labelled as one. Paul Nebel was recorded twice, once as an ins-table row at ‘talks’ and once as a £20m rumour card, with no reporting behind either in a fortnight. The table row has gone; the card stays.

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.

19 Aug 2026

Chérif signed and Hamer completed — and the contract lengths are the soft part SWEEP

Sidiki Chérif, announced 19 August. The largest outlay of Coventry’s window, at a fee the sources genuinely disagree on: £20.5m per Sky against €24.5m and €25m headlines elsewhere, plus a separate €20m + €3m survival-bonus structure that sums to neither. The Sky sterling figure is used as guaranteed and the add-ons are left unmodelled. Fenerbahçe had only triggered their own obligation to buy him from Angers in February and retain a slice of any future sale.

Gustavo Hamer, completed. Promoted from ADVANCED. The club call the fee undisclosed; £6m and €7m both circulate, so it stays an estimate. The contract is described only as “long-term” with no end year published anywhere — the three-year spread here is an assumption, and on a £6m fee the gap between three years and five is about £0.8m/yr of squad cost. Flagged rather than smoothed over.

19 Aug 2026

Awoniyi signs — Coventry buy Premier League experience rather than potential NEW DEAL

What happened. Taiwo Awoniyi joined from Nottingham Forest on 17 August for a reported £9m, wearing No.9, in time for the opener at Arsenal. One outlet carries €19.9m, which reads like an add-ons-inclusive figure; the guaranteed £9m is what this page books.

What it does to the numbers. On a three-year deal the fee is ~£3m/yr of amortisation. The wage is the bigger line: ~£60k/wk carried over from Forest is around £4.5m/yr grossed up, and at Coventry’s scale that puts him at or near the top of the payroll. Together roughly £7.5m on the numerator.

The shape of the buy. Every other fee this summer went on a player aged 19 to 23. This one is 29, with 103 Forest appearances and four Premier League seasons — a deliberately different kind of purchase, and the only one on the list whose resale value is assumed to be near zero. For a promoted club the argument for it is survival, not the balance sheet, and the balance sheet is where it will show up.

15 Aug 2026

Tomori turns Coventry down as Liverpool enter RUMOUR DOWNGRADED

Fikayo Tomori. The reunion pitch has been declined — Tomori is reported to have turned down Coventry, and Liverpool have made contact with Champions League football on the table (Newcastle also credited). Milan remain sellers at €15–20m with a year left, but Coventry look out of the race unless the market collapses back to them.

09 Aug 2026

Yirenkyi announced, Hamer agreed — the record falls officially, and the sentimental one is a medical away

Promoted · done: Caleb Yirenkyi moved from advanced to completed — the medical was passed on 6 August and the club announced the signing on 7 August on a contract to June 2031 (subject to international clearance). The reported ~£23.1m fixed fee (€27m; ~£2.6m of add-ons contingent) is the club record, officially, and the biggest sale in Danish Superliga history. Consequences followed through: he is in the squad table, his amortisation moved from the amber overlay into the blue on-the-books runway bars, completed window spend rose from ~£67m to ~£90m, and the SCR wages assumption nudged from £45m to £47m for his estimated contract. At 20 he is an U21 free hit on the squad list — no registration slot needed.

Promoted · advanced: Gustavo Hamer moved from in talks to advanced — after two rejected bids, a fee of ~£6m plus add-ons was agreed with Sheffield United on the evening of 8 August, with a announced by the club on 11 August and an announcement expected Sunday or Monday. He is counted in the window balance (committed spend ~£96m) and sits in the amber runway overlay on an assumed 3-year deal, but stays out of the squad table and 25-man projection until the club confirms. His Rumour Mill card is retired — this is a deal now, not a rumour. Net annual squad-cost swing from the window is now ~£37m/yr; the headline ratio on this tracker's model reads ~58% against the 85% line (headroom ~£38–40m/yr) — updated from the stale "mid-40s" wording across the page.

Held back: Fikayo Tomori remains a rumour — reports still conflict, with the latest strand naming Newcastle as favourites and Juventus circling while an older one claims a €17m Coventry agreement; nothing corroborated by a reporter of record. Verified unchanged: Rushworth, Tchaouna, Amenda and Onyeka; outgoings still Allen, Collins and Latibeaudiere released, Bassette and Perry on development loans, no sales; Nebel, Mudryk, Amoako Jnr, Dennis, O'Hare and Wright links unchanged. Noted, unverified: a weekend live-blog headline referenced an "£8.5m deal off" — this tracker could not establish which deal that was from a reporter of record, so nothing on the page reflects it.

05 Aug 2026

Yirenkyi agreed — a third club record in four weeks, one medical short of real

Added · advanced: Caleb Yirenkyi (FC Nordsjælland → Coventry). Agreement reached today on a reported ~£23.1m fixed fee plus ~£2.6m in add-ons (€27m + €3m; several outlets round the package to ~£26m, and it would be a record sale for the Danish Superliga). The deal is reported as subject to a medical and contract signature, so it is logged Advanced, not done — he is deliberately kept out of the squad table and the 25-man list, and his amortisation sits in the amber "agreed, not signed" overlay on the runway chart rather than the blue on-the-books bars. Consequences that do flow: committed window spend rises from ~£67m to ~£90m in the net-balance panels, and the annual squad-cost swing from this window rises to ~£33m/yr. The 20-year-old is U21-eligible, so even a club-record fee costs the squad list nothing. Note for the league table: the shared net-spend board counts officially completed deals only, so Coventry's line there stays at the completed number until the announcement.

Added · talks: Gustavo Hamer (Sheffield United). A first bid has been made and rejected, the clubs are apart on valuation, and the player — sold for £15m in 2023, now in the last year of his contract — is reported as keen. Real, concrete, and nowhere near agreed: logged In talks with no fee counted, and mirrored into the Rumour Mill with an explicitly estimated fee so the scenario model can price it. Mykhailo Mudryk (Chelsea) added to the Rumour Mill as loan interest only — Chelsea will not decide until after pre-season, may not want to arm a domestic rival, and Strasbourg is the alternative. Loan wages count in the SCR numerator in full, which is the only reason it moves any number at all.

Held back: Fikayo Tomori stays a rumour. One outlet reports a €17m agreement with personal terms settled and a medical booked; others have him rejecting Coventry, asking for more time, and Liverpool contacting Milan. With reports that contradictory and nothing from a reporter of record, promoting him to 'advanced' would be guessing, so the card now states the conflict instead. Verified unchanged: Rushworth's completion (announced, undisclosed, understood ~£22.5m rising to ~£30m), Onyeka, Tchaouna and Amenda; outgoings still Allen, Collins and Latibeaudiere released, Bassette and Perry on development loans, no sales. Nebel, Amoako Jnr, Dennis, Barkley, O'Hare and Wright all remain links rather than deals — Amoako's card now flags that Coventry have just done business with his club.

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

Rushworth signing confirmed; window rebuilt from a full source list

Corrected: Carl Rushworth moved from advanced to completed — the permanent transfer from Brighton was officially announced in early August, not merely agreed. The fee is undisclosed and understood to be ~£22.5m initial rising to ~£30m, a new club record that beat Tchaouna's inside four weeks. Consequences followed through: he is now in the squad table and the projected 25-man list (as a homegrown keeper), his amortisation moved from the amber "committed-in-principle" overlay into the blue on-the-books bars of the glide chart, and completed window spend rose from ~£45m to ~£67m across the overview, headroom, net-spend and league-table panels. The reported Brighton buy-back and sell-on clauses were never confirmed in the final package and remain flagged as unconfirmed.

Added: Kaine Kesler-Hayden (Aston Villa, ~£3.5m) to the 2025/26 records. He completed on 1 July 2025 — the previous window — so he is logged under last season's ins and is explicitly not counted as current business. A cross-page check had flagged him as a missing Aston Villa counterpart for this window; the sources show the date, so the entry belongs to 2025, not 2026.

Verified unchanged: Onyeka (Brentford, permanent 29 Jun, undisclosed ~£9m), Tchaouna (Burnley, 11 Jul, ~£20m) and Amenda (Eintracht Frankfurt, mid-Jul, ~£15.6m/€18m) all confirmed against club and national reporting. Outgoings re-checked in full: Allen, Collins and Latibeaudiere released on contract expiry, Bassette (Westerlo) and Perry (Cambridge United) on development loans — no sales, and no further departures found. Ross Barkley remains a negotiation only and stays in the Rumour Mill rather than the ledger.

27 Jul 2026

Page launched

The Bean Counter's Coventry City tracker goes live at bean-counter.co.uk/coventry. Launch data set: the summer 2026 window as reported to date (Tchaouna ~£20m club record, Amenda ~£15.6m, Onyeka's promotion-triggered ~£6.1m obligation; Rushworth ~£25m classed advanced with Brighton seeking buy-back and sell-on clauses); FY2024/25 accounts (£34.2m revenue, £26.5m wages, −£21.6m pre-tax); the estimated 2023/24–25/26 EFL P&S cycle position (~£31m of £39m); squad book values recomputed daily on straight-line amortisation; the PL's new SCR (85%) and SSR regimes replacing PSR from this season; the 25-man squad list projection; the sanctions history back to 2013; and the Rumour Mill (Nebel, Tomori, Amoako Jnr, Dennis, O'Hare, Wright). All estimates flagged as estimates.

Glossary

Every rule on this page, in plain English — each with a real Coventry example where one exists. For the group chat member who just asked "what's SCR?"

PSR (Profit & Sustainability Rules)
The Premier League's now-retired rule capping losses at £105m over a rolling three-year period (£35m/yr, reduced by £22m for each season of the period spent in the Championship). It was replaced by the squad cost and sustainability rules from 2026/27 — so Coventry, arriving this season, will never actually be tested under it.
EFL P&S (Profitability & Sustainability)
The Championship's version: max £39m of adjusted losses over three years (£13m/yr average), after deductions for academy, women's, community and infrastructure spending. Coventry's 2023/24–25/26 cycle closed on an estimated ~£31m aggregate loss — inside the limit, no charge, no embargo.
Squad Cost Ratio (PL SCR)
The Premier League's new rule limiting squad spending — player and head-coach wages, transfer amortisation and agent fees — to 85% of football revenue plus net player-trading profit for clubs not in Europe (70% for the nine in Europe), tested each season. Coventry's estimated ratio is in the high 50s even after ~£90m of signings: promotion quadrupled the denominator before the numerator caught up.
SSR (Sustainability & Systemic Resilience)
The PL's liquidity and solvency tests running alongside the squad cost rules — proving clubs can actually pay their bills, including under an £85m stress test that models relegation. Bites hardest on promoted clubs making the revenue leap, which is why Coventry's first test comes early: by 31 October 2026.
Squad Cost Ratio (UEFA SCR)
UEFA's version: 70% of revenue plus transfer profit, tested on a calendar-year basis — but only for clubs in European competition. Dormant for Coventry; it's the rule generating the Villa/Chelsea/Newcastle fines you read about.
Football Earnings Rule (FER)
UEFA's successor to break-even: clubs may lose no more than ~€60m over three years, counting only football earnings — player-sale profits count, intra-group asset sales don't. Also dormant for Coventry until they qualify for Europe.
25-Man Squad List
The Premier League's registered senior squad: max 25 over-21 players, no more than 17 non-homegrown, under-21s unlimited. Due ~2 September. Coventry project ~21 used slots and only ~9 non-homegrown — no quota pressure.
Homegrown Player
A player registered with an English or Welsh club for three years before their 21st birthday, regardless of nationality. Simms (Everton academy), Rudoni (AFC Wimbledon/Huddersfield) and Rushworth (Brighton academy) all qualify; Sakamoto, Torp, Amenda and Onyeka don't.
Amortisation
Spreading a transfer fee as a cost over the contract length. Tchaouna's ~£20m on a five-year deal costs ~£4.2m/yr in the books (levy included) — 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. Coventry's title squad carries barely £30m of pre-window book value against £150m+ of market value — the healthiest possible version of that gap.
Pure Profit
Shorthand for selling a £0-book-value player (academy graduate or free transfer): the entire fee lands as profit. Brau and Dasilva arrived free; Eccles is club-trained — any sale of the three is essentially 100% profit.
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 — Tchaouna's ~£20m really costs ~£20.8m.
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 — relevant on the Amenda and Tchaouna deals.
Sell-On Clause
A percentage of any future sale owed to a selling club — the modern selling club's way of keeping a share of your upside. July reporting suggested Brighton wanted one in the Rushworth package; it was not confirmed when the deal completed in early August, so this tracker treats it as unconfirmed.
Buy-Back Clause
A pre-agreed price at which the selling club can repurchase the player later. Paired with a sell-on it would cap both directions of any upside — which is why the unconfirmed reports of both in the completed Rushworth deal would matter more than the headline fee. Clauses are where deals are really won and lost.
Loan With Obligation
A loan that converts to a permanent transfer automatically when conditions are met. Onyeka's February loan carried a promotion trigger: Coventry went up on 17 April, and the purchase completed on 29 June for an undisclosed fee reported at ~£9m.
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 with U21 and club-trained players exempt. Coventry currently use none.
Parachute Payments
Stepped-down PL broadcast money paid to relegated clubs for up to three seasons. Coventry, 25 years out of the top flight, came up without any — which makes the clean, equity-funded climb rarer than it looks.
Equity Funding vs Owner Loans
Two ways an owner covers losses: buying shares (permanent capital, counts favourably under SSR) or lending (debt the club owes back). King has converted loans into shares — including a £15m issue — leaving Coventry externally debt-free.
Headroom
The gap between current squad cost and the ratio line — the theoretical budget. Coventry's is ~£38–40m/yr of running cost to the 85% line even after the summer's spending — still among the widest in the league relative to squad cost, which is precisely why the binding constraint is cash, not the ratio.
Relegation Clause
A contract provision cutting wages automatically on relegation — standard practice for well-run promoted clubs, and the single biggest determinant of whether going down is a setback or a catastrophe.