Brentford crest
The Bean Counter
Brentford · Financial Compliance · 2026/27

Managing a sports team has become more like being a treasurer or a bean counter rather than looking at what your team needs. It's more about creating paper profits, not real profits. It becomes a financial game, not a sporting game.

— Nassef Sawiris · Financial Times · June 2024
Brentford official crest

The Bean Counter · Brentford

2026/27 PRE-SEASON
Sic Vos Non Vobis
Football has become a game of bean counting — so here's the abacus. PSR · the new 85% Squad Cost Ratio · window balance · book values · the sell-high machine

State of Play

Brentford's estimated squad cost ratio is 87.3% against the Premier League's 85% limit for clubs outside Europe, putting them roughly £5.2m/yr OVER the line. The summer 2026 window stands at £14.0m banked from sales against £110.2m committed on signings — the £35m for El Hadji Malick Diouf is what tipped it. Every figure here is this tracker's own estimate, built from published accounts and media reporting, as reported 3 Sept 2026.

PL Squad Cost Ratio · Estimated
/ 85%
85% green line · 115% red line
One line, one clock: the Premier League tests season 2026/27. No UEFA clock — 9th place missed Europe on goal difference, so the softer 85% domestic tier applies (clubs in Europe get 70%).
Net Window Balance
Sangaré (club record), Schuster + Anthony in; only Onyeka sold
25-Man Squad List
·
Projected senior list: ~23 of 25 slots, 8 homegrown (quota: min 8) — two free slots and U21s exempt on top
PSR Headroom
£150m+ EST
est. distance from the £105m loss limit in the final cycle — never charged, never close

The Clock — What's Counting Down

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

The Six Regulations — Pass / Fail / Room Left

PL PSR
Expected Pass
EST USAGE: ~£0 of the £105m 3-yr loss allowance — FY24 −£7.9m and FY25 −£20.5m are swamped by FY26's estimated £120m+ of player-sale profits (Mbeumo, Wissa, Nørgaard, Flekken), before deductions.
ROOM: est £150m+ · accounts due 31 Dec 2026, final-ever assessment Jan 2027, then the rule retires.
PL SCR
On Track · Untested
PROJECTED: vs the 85% green line (red at 115%) · season basis · first season of the rule.
ROOM: of cost/yr · checkpoint Oct 2026, assessment 1 Mar 2027 · note: the club-record Sangaré fee pushed the estimate up several points, and on these numbers the Bees would sit well ABOVE the 70% line that applies to clubs in Europe — qualification would tighten the cap by 15 points.
SSR
Expected Pass
TESTS: liquidity after an £85m stress scenario + positive-equity ratios. Benham's group investment stands at £104.4m (equity + loans, incl. £22.8m stadium loans); Lubner & Vaughn added minority capital in 2025; the FY25 accounts also show £42.4m of bank facilities (Macquarie, OLB) funding squad investment without drawing on owner cash.
ROOM: first full tests 7 Jul 2027 · no indication of an issue.
25-Man Squad List
23 / 25 · 8 HG
USED: of the 25 senior slots · HOMEGROWN: vs the minimum 8 (max 17 non-HG).
ROOM: 2 free senior slots + unlimited U21s (Milambo, Schuster; Yarmoliuk's May-2004 birthday just misses the cutoff so he takes a slot) · Sangaré takes the slot Jordan Henderson's exit freed · list due ~2 Sep. All classifications are this tracker's estimates.
Loan Quotas (In · Senior)
2 + 6 Left
DOMESTIC (English clubs): 2 of 2 concurrent slots free — no senior loans in · season cap of 4 untouched · never more than 1 from the same club at a time.
INTERNATIONAL (FIFA): 6 of 6 SENIOR remaining — counts only over-21, non-club-trained players · outbound loans (Donovan → Sheff Utd, Cox → Barnet) sit under the separate loans-out rules.
ROOM: the whole loan toolkit is available — historically Brentford barely use it, preferring owned assets that can be sold at a profit.
UEFA FER / SCR
Not Applicable
No UEFA licence needed in 2026/27 — the Bees finished 9th, level on points with 8th-placed Brighton but out on goal difference, one place short of a first-ever European campaign.
IF IT EVER APPLIES: the 70% UEFA squad cost ratio and the ~£52m Football Earnings Rule would bind immediately — and on current estimates (~75% after the Sangaré fee) the ratio would need real trimming. Success has a compliance price.

Quick Answers — Brentford's Finances in Plain English

Are Brentford in trouble with FFP in 2026?

No — the opposite. Brentford have never been charged under PSR, FFP or any financial regulation, and on this tracker's estimates the final PSR cycle (2023/24–2025/26) ends roughly £150m inside the £105m loss limit, carried by an estimated £120m+ of player-sale profits banked in 2025/26.

What is Brentford's squad cost ratio?

Roughly 75% on this tracker's estimates after the club-record Sangaré signing — squad cost of ~£169m/yr against ~£225m of revenue plus player-trading profit — vs the 85% green line that applies to clubs not in Europe from 2026/27. The same number would be well OVER the 70% line if Brentford qualified for UEFA competition.

What did the last accounts show?

FY2024/25: club-record revenue of £173.1m (broadcasting £139.5m), wages of £130.8m (76% of revenue), player amortisation of £47.8m, a £40.0m operating loss before player trading, £27.2m of player-sale profit, and a pre-tax loss of £20.5m. Squad investment, funded by the trading model.

Can Brentford spend this summer?

They already have. ~£75m committed (Sangaré ~£41m — a new club record — Schuster ~£17.2m, Anthony ~£17m, Wilson free) against ~£9m banked for Frank Onyeka, leaving an estimated £22m/yr of squad-cost headroom under the 85% line, or roughly £110m of further fee capacity on a 5-year amortisation basis. The binding constraint is still the club's own discipline — but this summer it has bent further than at any point in the Premier League era.

Will Brentford have to sell Igor Thiago?

Have to? No — there's no PSR gun to the head, and in February 2026 he signed a new deal to 2031 with a club option for a further year. But the model sells when the price peaks: Raya, Toney, Mbeumo (£71m) and Wissa (£55m) all went at the top. Re-spread over the new contract his £30m fee still carries ~£21m of book value, so an £80m sale would book roughly £59m of profit. Reported asking price €70–90m; player's camp say he isn't seeking a move; club stance: not for sale.

What changes in 2026/27?

Three things: PSR retires after a final January 2027 assessment; the 85% Squad Cost Ratio and SSR liquidity tests take over; and the front-of-shirt gambling ban begins — Indeed replaces Hollywoodbets as main shirt sponsor, an upgrade of an existing training-wear partnership.

The whole thing in two sentences: Brentford are the club the new rules were designed to reward — never charged, est £150m+ of PSR headroom, and a trading engine that banked an estimated £120m+ of sale profits last season alone. What's changed this summer is the direction of travel: ~£75m committed on four signings including a club-record fee for Mamadou Sangaré, and almost nothing sold — so the questions are how long a ~£131m wage bill on ~£173m of revenue stays comfortable without sales, and whether the buffer built up by the Mbeumo/Wissa summer is now being deliberately spent.

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; Brentford rarely disclose officially, so treat every number as reported-not-confirmed.

Summer 2026 — Out

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

Summer 2026 — In

PlayerFromFee £mWage £k/wkSCR cost £m/yrStatus
Fees Out (sales)
Onyeka to Coventry only — fee undisclosed, reported ~£9m
Fees Committed (buys)
Sangaré ~£41m + Schuster ~£17.2m + Anthony ~£17m (all reported)
Net Window Balance
The deepest deficit of Brentford's Premier League era
Annual Cost Freed (outs)
Wages + stopped amortisation leaving the SCR numerator
Annual Cost Added (ins)
Fee÷5 amortisation + wages + ~10% agent fee
Net SCR Swing
Change to the annual squad-cost numerator from this window
How the columns map to the rules: SCR cost / Cost freed hits the numerator of the Premier League's new 85% squad cost ratio · Profit feeds the final PSR calculation AND the SCR denominator · Fee moves the window balance. Wages are estimates throughout.
A window entirely against type. Last summer the Bees banked ~£144m selling Mbeumo, Wissa, Nørgaard and Flekken; this summer the traffic is almost all inbound: Schuster (the Salzburg CB, ~£17.2m), Anthony from relegated Burnley, Callum Wilson on a free for the No.9 depth Keith Andrews wanted — and then, on 1 August, a club-record fee for Lens' Mali international Mamadou Sangaré, the 2025/26 Ligue 1 Team of the Year holding midfielder. Against that, only Frank Onyeka's permanent move to Coventry has brought a fee in, and Jordan Henderson's contract was torn up by mutual agreement before he joined Chelsea on a free. The sale everyone is watching — Igor Thiago — lives in the Rumour Mill, not here: he signed a new deal to 2031 in February and the club insist he stays. Underneath the headline deals the loan traffic is the usual development churn: Donovan to Sheffield United, Cox to Barnet and B-team midfielder Krauhaus to Falkirk go out; American teenager Aidan Stokes comes into Brentford B on loan with a buy option, and Jayden Meghoma is back from a 44-game season at Rangers. None of it moves a fee, but it is the part of the window the net-spend tables always miss.
Where it stands on Sunday evening, 9 August: nothing has completed since Sangaré on 1 August, so every total on this page is unchanged — the fourth flat day running, recorded as such. The weekend's actual football went well: Rennes 2–4 Brentford on Saturday, the penultimate friendly, with the four goals scored by exactly the players this page tracks hardest — Thiago (heading in a Jensen corner on his return), Pinnock, Ouattara and Wilson. The Stankovic pursuit stays closed (the €40m written offer rejected on 5 August by Inter, the player and his family). Live and unresolved: Ousmane Diabaté, the 18-year-old Guinea international at Gençlerbirliği, still counting towards nothing — and since moved out of the table above into the Rumour Mill, under the 30 Aug rule that nothing below a medical belongs in a table of deals — negotiations are reported to be continuing over the ~£3m (€3.5m) plus bonuses that may now be enough, with the rights split (the club holds only 50%, SOAR Academy 40%, his representative 10%) complicating the paperwork. El Hadji Malick Diouf, the West Ham left-back, remains a rejected late-July bid with a "not for sale" attached. Going the other way, the siege of Igor Thiago widened over the weekend: after Manchester United and Chelsea's 7 August enquiries were rebuffed, Tottenham have now registered interest through intermediaries too, Bayern Munich are reported to be monitoring, and the club's stance has hardened in the sourcing to "no circumstances" under which offers would be entertained at anything — the ~£77–80m (€90m) valuation stands. Celtic's hoped-for second loan for 20-year-old centre-back Benjamin Arthur is still reported to hinge on Brentford signing defensive cover first. All of it is reported, none of it is agreed.

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

PlayerFromFee £mWindow

2025/26 Season — Out

PlayerToFee £mWindow
The 2025 window was the model at full throttle: ~£144m of fees in (Mbeumo's £71m to Manchester United the club record sale), ~£91m reinvested (Ouattara £42.5m the club record buy), and the captain, top scorer, second scorer and first-choice keeper all replaced in one summer — followed by a joint-record 9th-place finish. Sell high, buy the curve, go again.

Spending Headroom

"Room" means two things for Brentford in 2026/27: the new PL squad cost ratio (85% green line for clubs not in Europe, tested on the season) and the club's own discipline — which has historically bound far tighter than any rulebook. PSR still gets one final look (January 2027) but is a formality on these numbers. The model below is adjustable — the defaults are my estimates, so put your own numbers in.

The window so far — cash view

Sales banked
Onyeka to Coventry (undisclosed, reported ~£9m); Trevitt, Laidlaw and Henderson all left for nothing
Committed on signings
Sangaré, Schuster, Anthony (Wilson arrived free)
Net window balance
Fees in minus fees out. A deficit this size is unprecedented here: the Bees have been net sellers in most windows since promotion
Committed but deferred: the quiet liabilities. Kelleher's move carries up to £5.5m of add-ons on top of the £12.5m base; Anthony was reported as an initial ~£15m rising towards £20m with add-ons, the Schuster and Sangaré deals are reported with add-on structures too, and Kayode's obligation converted last summer. Add-ons land as extra capitalised cost when triggered — the bean counter's rule is to model them as ~70% likely. None of it threatens anything; all of it nibbles at future headroom.

The Fined Four — July 2026's CFCB Round (The World Brentford Avoided)

Four English clubs were fined in UEFA's July 2026 decisions. Brentford were not among them — no European football, no UEFA jurisdiction, and no history of charges anywhere. Shown here as context for what 9th place (agonisingly) spared the Bees: UEFA's 70% cap would replace the 85% domestic tier the moment they qualify.

Club2026 FineSuspendedBreachSettlementExit Route
Aston Villa£19.4m£12.9mSCR 2025 ("significant") · 2nd straight4-yr to 2028/29 · £9.5m paid 2025 · trend formally ENDORSED£144m of player-sale profits incl. a £117m British-record sale
Chelsea£2.6mSCR · repeat4-yr · £26.7m paid, up to £51m conditionalAcademy sales (pure profit) + intra-group hotel sales the PL accepted
Newcastle£2.6m + £8.6mBOTH SCR and FER — the doubleObligations continue despite missing EuropeIsak to Liverpool for £125m — one sale to rule the FY25 accounts
Nottingham Forest£2.2mSCRAnderson to City for £116m weeks later — fine dwarfed 53:1 by one transfer
The pattern across all four: every exit route runs through selling players — which is the loop Brentford run voluntarily, before any regulator asks. The difference between the fined and the Bees isn't the mechanism; it's who's driving.
How the 85% test actually works: squad cost (player + head-coach wages, transfer amortisation, agent fees) must stay within 85% of revenue plus net player-trading profit, tested over the season. Clubs get a multi-year buffer of an extra 30 percentage points — using it triggers a levy and RATCHETS future limits down until it's earned back — and only breaches beyond that risk sporting sanctions. Levies bite from 2027/28; 2026/27 is the shakedown season.

Annual constraint — squad cost ratio model

Squad cost = player & coach wages + transfer amortisation + agent fees. Denominator = football revenue + player-trading profit (smoothed — I use a 3-yr average, flattered by 2025/26's exceptional sales). Edit any figure:

PL SCR (not in Europe) · green 85% · red 115%
green line 85%
Same numbers vs the 70% Europe line (hypothetical)
limit 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 balance after fee
Net spend position — informational, no hard gate applies
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 Bees carry . The practical ceiling used to be the model rather than the maths — but the ceiling just moved: Mamadou Sangaré's reported ~£41m (€48m) is the club record the club itself calls a record, and Ouattara's 2025 deal at "up to £42.5m" only reached that number with add-ons.
Caveats: revenue projection assumes no Europe, a similar 9th-ish broadcast finish, record season-ticket demand at the 17,250-seat Gtech and the Indeed front-of-shirt upgrade on FY25's £173.1m. The wages figure is the SCR-relevant slice (players + head coach, est ~£100m), not the £130.8m total staff bill from the FY25 accounts. Amortisation has been lifted to £60m to absorb the Sangaré, Schuster and Anthony fees. The £45m sale-profit average leans heavily on 2025/26's exceptional ~£120m+ (est) — if the club genuinely sells nobody for two more windows, that average falls fast and the ratio drifts UP even with flat costs: the denominator is the trading engine, and this summer it has been running in reverse. The PL's precise adjustments (which income qualifies, averaging mechanics, add-on timing) mean the true ratio will differ — treat this as a planning tool, not a compliance calculation.

Rumour Mill

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

Everything on this tab is short of a medical. That is the line: a deal that has reached one sits in the Ins & Outs table, and everything below it — an offer, an agreement in principle, personal terms with no fee agreed, a bid lodged — is here, counting towards nothing until it moves. Tick any combination of live rumours (fees and wages are my estimates of reported figures) and the panel at the bottom recalculates the effect on the numbers that matter: window balance, the PL 85% squad cost ratio, the hypothetical 70% Europe line, and profit booked for the final PSR cycle. Uses the same base assumptions as the Headroom tab, so tweaks there flow through here. Brentford rumours are thinner than most clubs' — the recruitment department leaks almost nothing, so treat everything below as reported interest, not agreed deals. Re-audited 9 Aug 2026: no promotions and no removals — the only movement is on the Thiago note, which gains Tottenham's weekend interest registered through intermediaries, Bayern Munich's reported monitoring, and a club stance hardened to "no circumstances"; every other entry re-checked and unchanged. Previous audit, 8 Aug 2026: no promotions and no removals — every entry below is still live as reported; the Thiago note gains the 7 August enquiries from Manchester United and Chelsea (both told no), and the Schade note gains the £60m price-tag reporting and Roma's credited-but-priced-out interest. Previous audit, 5 Aug 2026: Matteo Cancellieri removed — Brentford are no longer in that race at all (Lazio have him transfer-listed, West Ham and Celtic are the clubs actually in talks, and his exit was temporarily frozen on 1 August). Aleksandar Stankovic is not listed despite being the day's biggest Brentford story: the €40m written offer was refused by Inter and by the player, so it is a closed pursuit, not a live one. Earlier removals stand — Daizen Maeda joined Ipswich Town, André Luiz joined Olympiacos in January, Andreas Christensen extended at Barcelona. One genuine negotiation, Ousmane Diabaté, was promoted out of this tab into the Ins & Outs table at “In talks” — and came back on 30 Aug, when the threshold for that table was set at a medical. A negotiation, however genuine, is not a deal.

Incoming rumours

Outgoing rumours

Window balance
Δ annual squad cost
PL SCR (85%)
vs 70% Euro line
Profit booked (PSR)
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 deficit. An outgoing deal does the opposite twice over — wages + remaining amortisation out of the numerator, and the profit (fee − book value) into the PSR result and the SCR denominator. That's why one Thiago-sized sale funds roughly four Schuster-sized signings in compliance terms — and why the Bees can afford to say no until the price is silly. It's also why they usually say yes eventually. With ~£75m committed and only Onyeka's fee banked, the arithmetic now leans harder on a big sale arriving before 1 September than at any point in the club's Premier League era.

Squad · Book Value & Amortisation

Senior squad for 2026/27. Book value is computed live: straight-line amortisation of the reported fee from signing date to current contract end (extensions re-spread the remaining value — this is the standard treatment). Brentford rarely disclose fees, so most carry the ~ estimate flag; wages are third-party estimates (Capology-style databases), not official. Tap a column to sort.

Player Pos Fee £m Signed Contract End Yrs Left Amort £m/yr Book Value £m Mkt Val £m Profit If Sold £m Est Wage £k/wk
💰 highlighted rows = est. profit if sold ≥£20m — where market value towers over book value. This is the entire Brentford business model in one column: Thiago's £30m fee, re-spread over his new contract to 2031, still sits far below a market value that doubled in a year; Yarmoliuk cost £1.6m from Dnipro-1 at 18; Collins, Kayode and Kelleher were all bought below the curve. These are the bean counter's favourite players — and history says one of them gets sold roughly every summer. Market values are Transfermarkt-style estimates, except Thiago (£80m), which uses the fee bracket being reported in live interest. Not listed individually: B-team and loaned-out youngsters (Donovan at Sheffield United, Cox at Barnet, plus the academy crop) — collectively immaterial to the amortisation picture but pure profit if ever sold. Kaye Furo (18yo striker, reported ~£8m from Club Brugge in January 2026 on a 5½-year deal to 2031, PL debut in May) was added to this table on 8 Aug after an audit found him missing — U21-exempt, so he takes no squad-list slot. Free transfers & academy players carry £0 book value (that's why selling them is pure PSR profit). Undisclosed fees estimated where flagged ~. Add-ons are treated differently on the two sides of the ledger, and this page says so rather than quietly netting it out: both an incoming and an outgoing fee are modelled at the guaranteed amount, with add-ons counted only when they trigger. This caption used to claim the opposite for incoming deals — that they were modelled all-in — and that was a description of a rule this site does not follow: every incoming row bar two was already on the guaranteed basis, and the two exceptions, Suzuki and Ruggeri, were brought into line on 2 September. Contingent money is not capitalised until it is owed, which is the conservative reading and the one the corrections here have consistently enforced. Contract ends use reported extension dates (Igor Thiago re-signed to 2031 + option in Feb 2026; Hákon Valdimarsson to 2030 + two-year option in Apr 2026; Michael Kayode signed a six-year deal to 2032 on 3 Jul 2026; Ajer re-signed to 2030 in Jan 2026; Dasilva, Henry and Jensen had one-year options triggered to 2027). Jordan Henderson is no longer listed — his contract was terminated by mutual agreement on 29 Jul 2026 and he joined Chelsea as a free agent. 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
Annual Amortisation
Current squad only. Club-wide FY25 charge was £47.8m
Est. Squad Wages
Estimated senior squad only. Total club FY25 wage bill: £130.8m (incl. staff, bonuses)
The trading engine, by the numbers: since 2023 the Bees have sold Raya (£27m), Toney (£40m), Mbeumo (£71m), Wissa (£55m), Nørgaard (£10m) and Flekken (£8.5m) — roughly £210m of fees, most of it near-pure profit because the fees paid were tiny (Mbeumo £5.8m, Wissa £8.5m, Toney £5m, Raya £3m). That profit funds the wage bill's growth (£114.4m → £130.8m in FY25) and the record buys (Ouattara up to £42.5m in 2025, Sangaré's reported ~£41m club record in 2026), and it's the reason a 17,250-capacity club lives comfortably among clubs with triple the matchday income. The flip side: the FY25 accounts show what a non-selling year looks like — a £40m operating loss before player trading. The engine cannot idle forever.

Amortisation Runway — What's Already Committed

Transfer-fee amortisation locked into future seasons from today's contracts (straight-line on remaining book value). This is spending that's already eaten before Brentford buy anyone else — note how small it is by Premier League standards: the whole runway is about one season of a big-six club's charge.

Assumes current contracts run to term (sales remove their bars; extensions re-spread them). All figures are this tracker's estimates from reported fees.

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 Sepp van den Berg qualifies — Dutch, but three entire seasons at Liverpool and Preston from 17 — while Aaron Hickey does not: Hearts is a Scottish FA club, Bologna is not English, and Brentford came a year too late.

Brentford are the only club on this tracker with real room, and it is not an accident. 22 of the 25 places are used, with three unused and all three fillable: at 10 homegrown and 12 non-homegrown they sit six under the seventeen ceiling. Nobody else here is close to that. The recruitment does it: Kelleher, Collins, van den Berg, Yarmoliuk and Fábio Carvalho all qualify without being English — an Irishman, another Irishman, a Dutchman, a Ukrainian and a Portuguese-born Londoner — because each was signed young enough to serve three seasons here before the window shut. That is a buying policy that happens to be a registration policy. Four players are under 21 and play outside the list.

PL Squad List — 25-Man & Homegrown

No UEFA List A this season — 9th place missed Europe on goal difference — so this tab tracks the list that DOES apply: the Premier League's 25-man squad list, due ~2 September. Max 25 senior players, of whom no more than 17 may be non-homegrown (i.e. at least 8 HG slots if you name a full 25); under-21s (born on/after 1 Jan 2005 for 2026/27) are exempt and unlimited. All classifications below are this tracker's estimates until the official list is published.

List Transition · 2025/26 → 2026/27

Each position: who's gone since last season's list, who stays, and who arrives — with homegrown status flagged. Projected: ~23 senior names, 8 homegrown, 2 slots spare.

Goalkeepers

Out · 0
Nobody
Retained · 2
Caoimhín KelleherSTAYS · HOMEGROWN (Liverpool academy)
Hákon ValdimarssonSTAYS · NON-HG
In · 0 seniors
Aidan StokesB-TEAM LOAN (NY RED BULLS) · NO SLOT NEEDED
NET: settled. Kelleher counting as homegrown is a quiet quota win — an Ireland international who qualifies via seven Liverpool years. Stokes is a Brentford B loan with a buy option and never touches the senior list.

Defenders

Out · 2
Ethan PinnockGONE · COVENTRY CITY · £5m
Academy releases ×5EXPIRY · never list players
Retained · 7
Michael KayodeNEW 6-YR DEAL TO 2032 · NON-HG
Nathan CollinsCAPTAIN · HG (Stoke) — est
Sepp van den BergSTAYS · NON-HG
Kristoffer AjerRE-SIGNED TO 2030 · NON-HG
Rico HenryFINAL YEAR (option triggered) · HG
Aaron HickeySTAYS · NON-HG (Hearts ≠ HG)
Keane Lewis-PotterSTAYS · HG (Hull)
In · 2
Jannik Schuster~£17.2m · U21 — NO SLOT NEEDED
Jayden MeghomaLOAN RETURN (RANGERS) · U21 — NO SLOT NEEDED
NET: the Schuster signing is quota-free — born 2007, he's U21-exempt until 2028/29. Classic Brentford: buy the age profile that doesn't count. Meghoma's return from a 44-game season at Rangers is a free reinforcement at left-back on the same logic — no fee, no slot.

Midfielders

Out · 3 seniors
Jordan HendersonCHELSEA · CONTRACT TERMINATED 29 JUL, FREE
Frank OnyekaCOVENTRY CITY · PERMANENT, UNDISCLOSED
Ryan TrevittWIGAN · CONTRACT EXPIRY
Ben KrauhausFALKIRK · B-TEAM SEASON LOAN, 13 JUL
Retained · 6
Yehor YarmoliukTO 2031 · NON-HG · born May 2004 — misses U21 cutoff, takes a slot
Vitaly JaneltSTAYS · NON-HG
Mathias JensenFINAL YEAR (option triggered) · NON-HG
Josh DasilvaFINAL YEAR (option triggered) · HG
Mikkel DamsgaardSTAYS · NON-HG
Fábio CarvalhoSTAYS · NON-HG
In · 2 (1 slot)
Mamadou SangaréCLUB RECORD ~£41m FROM LENS · SENIOR SLOT · NON-HG
Antoni MilamboU21 — NO SLOT NEEDED (born 2005)
NET: Henderson's mid-contract exit freed the senior slot Sangaré now fills, and cost the list one homegrown name — offset by Anthony and Wilson arriving up front. Three midfielders remain in their final contract year (Jensen, Dasilva, Janelt), the club's classic decision point.

Forwards

Out · 2
Romelle DonovanSHEFF UTD · SEASON LOAN (was U21 anyway)
Ethan LaidlawFALKIRK · PERMANENT
Retained · 4
Igor Thiago22-GOAL SEASON · NEW DEAL TO 2031 · NON-HG
Kevin SchadeSTAYS · NON-HG
Dango OuattaraRECORD BUY · NON-HG
Gustavo NunesSQUAD-DEPTH CALL · NON-HG
In · 2
Jaidon Anthony~£17m FROM BURNLEY · HG (Arsenal/Bournemouth academies)
Callum WilsonFREE · 1-YR DEAL · HG
NET: both arrivals are homegrown — Anthony and Wilson hold the HG count at a projected 8 even after Henderson's departure, exactly the quota-comfortable number. Not a coincidence.
Homegrown = registered with an English/Welsh club for three seasons (or 36 months) before the 21st birthday — nationality irrelevant, which is how Irishmen Kelleher and Collins qualify while Scotland-trained Hickey doesn't. U21 exemption for 2026/27 = born on or after 1 Jan 2005: Milambo, Schuster and the B-team crop are free; Yarmoliuk (May 2004) just misses it. HG statuses here are my best classification from career histories — the official list in September is the truth.
Why this list is never Brentford's problem: the model buys players young (U21-exempt on arrival) and from British selling clubs when senior (homegrown by training). Even after a club-record senior signing and Henderson's exit the projected list still uses 23 of 25 slots with the minimum 8 HG met and two slots genuinely spare — meaning a late window signing needs no exit to be registered. Compare the clubs that spend deadline day doing squad-list Tetris; the Bees did theirs at the recruitment stage, years early.

Sanction Tracker — The Clean Sheet

The PSR Track Record

+£40m £0 −£40m −£105m · PSR 3-YR LIMIT FY2023FY2024FY2025FY2026 est +£9m −£7.9m −£20.5m ≈+£40m · sale profits
Annual pre-tax results (FY26 is this tracker's estimate — accounts not yet published). The final PSR test aggregates FY24+FY25+FY26: est ≈ +£12m BEFORE allowable deductions for academy, community, women's football and depreciation — versus a limit of −£105m. The red line has never been within sight of the amber one.
2014 – 2021 · EFL era

Compliant through the climb

Matthew Benham funded the rise from League One to the Premier League largely via loans later converted to equity, staying inside the EFL's P&S limits (£39m/3yr in the Championship) in the era when Derby, Reading and Birmingham were charged. The two-club data model (Brentford + FC Midtjylland) and the famous decision to close the academy in 2016 (reopened as the B-team pathway) were cost-control before cost-control was mandatory.

May 2023

The Toney ban — a player sanction, not a club one

Ivan Toney banned 8 months by the FA for 232 betting-rule breaches. The club itself was not charged with anything — but the finance angle was real: the club's most saleable asset was unsellable during the ban, and he ultimately left for Al-Ahli in August 2024 for ~£40m, below the £60m+ talked about pre-ban. The cost of the ban, in bean-counting terms: perhaps £20m of foregone profit.

2021/22 – 2025/26 · Premier League era

Five PSR cycles, zero charges, zero points deducted

While Everton and Nottingham Forest took deductions and Manchester City's 115+ charges rumbled on, Brentford's name never appeared in a single PSR proceeding. Worst annual result: FY25's −£20.5m, incurred deliberately to fund squad investment — and covered the following year by ~£144m of player sales. The £8.8m property deal and £10.2m of other operating income in FY25 helped at the margin; the trading engine did the rest.

Jul 2025 – Jul 2026

Ownership restructure — watch this space, not this rulebook

Benham moved his shares into a holding company (Best Intentions Analytics) and sold minority stakes to Gary Lubner and Sir Matthew Vaughn in July 2025, having earlier explored a full sale at a £400m+ valuation. Not a sanction matter — but ownership transitions are where financial discipline historically wobbles, so the tracker logs it here.

Now → Jan 2027 and beyond

What could actually bite

Three live exposures, all modest: (1) the final PSR assessment in January 2027 — a formality on the estimates above; (2) the new 85% SCR from this season — est ~75% after a ~£75m summer outlay, and the denominator depends on continuing to sell well; (3) SSR liquidity tests from July 2027 — comfortable while owner support and sale proceeds flow. The honest summary: Brentford's sanction risk is about the model stopping, not the rules changing.

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

The season of Thomas Frank's farewell and a 10th-place finish. Headline: a club-record £173.1m of revenue. Reality: a £20.5m pre-tax loss, taken deliberately — wages and amortisation jumped as the club invested in the squad that would finish 9th the following year.

Revenue (club record)
£173.1m
+4% on FY24's £166.5m
Pre-tax result
−£20.5m
vs −£7.9m in FY24 — the loss nearly tripled
Player trading profit
+£27.2m
vs +£25.2m in FY24 — the engine's steady hum
Operating loss (pre-trading)
−£40.0m
vs −£29.2m in FY24 — the cost of squad investment
Wage bill
£130.8m
+14% (from £114.4m) · ~76% of revenue
Player amortisation
£47.8m
+34% (from £35.6m) — a third higher in one year

Revenue mix

Broadcasting
£139.5m
Commercial (est)
~£19.5m
Matchday (est)
~£14m
Other op. income
£10.2m
Confirmed for 2026/27 — the new shirt money: Indeed becomes front-of-shirt sponsor, upgraded from training-wear and recruitment partner, replacing Hollywoodbets — because the Premier League's front-of-shirt gambling ban starts this season. The bean-counter's read: Brentford solved the ban the Brentford way — no sportswashing controversy, no desperate scramble, just promoting an existing partner (terms undisclosed, so the net revenue effect is unknowable from outside; gambling front deals at this level were reportedly worth high-single-figure £m/yr, and replacement non-gambling deals typically pay less). At 81% of revenue, the broadcasting dependence is the league's highest tier — which is precisely why the club's real commercial strategy is the transfer market.

How −£40m became −£20.5m

Operating loss before player trading−£40.0m
Profit on player sales+£27.2m
Property transaction → one-off+£8.8m
Net interest & other items → balancing est−£16.5m
Pre-tax loss−£20.5m
The whole story in one line: a planned loss in a low-selling year, banked against the ~£144m of sales already executed in the months after this balance-sheet date — FY26's accounts (due at Companies House ~spring 2027) should swing heavily into profit. Frank Onyeka's permanent sale to Coventry completed on 29 June 2026, one day inside FY26, adding a last slice of pure profit to that cycle. Ownership footnote: Benham's total group investment stands at £104.4m (equity + loans, incl. £22.8m for the stadium project); in July 2025 Gary Lubner and Sir Matthew Vaughn took minority stakes in the new holding company, Best Intentions Analytics. Matchday/commercial split is estimated — the club discloses broadcasting (£139.5m) but not the full segmental breakdown in its public summary.

Rules & Compliance Status

Every regime that applies to Brentford, the limit in pounds, and where the club stands. "FFP" itself no longer exists as a single rule — it's the old umbrella name, now split into UEFA's FER + SCR (not applicable to the Bees this season) and the Premier League's PSR (retiring) plus SCR + SSR (arriving).

COMPLIANT CLOSE / WATCH NOT COMPLIANT

Compliance calendar

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

PSR — Profitability & Sustainability

LIMIT: £105m max pre-tax loss over rolling 3 years (£15m if not equity-funded)
BasisClub financial years (Brentford's y/e 30 June) — aggregate of FY24 + FY25 + FY26.
What countsAggregate 3-yr pre-tax result, with deductions for infrastructure, academy, community & women's football costs.
BrentfordFY24 −£7.9m + FY25 −£20.5m + FY26 est ≈ +£40m (the Mbeumo/Wissa/Nørgaard/Flekken sale profits) ≈ +£12m aggregate before deductions — roughly £150m inside the limit once deductions are added. Never charged in five PL seasons. The estimate is mine; the FY26 accounts aren't published yet.
DeadlineAccounts submitted by 31 Dec 2026 → final-ever PSR assessment January 2027. After that the rule is retired.
Premier League · live from 2026/27
On track · untested

SCR — Squad Cost Ratio (PL)

CLUBS NOT IN EUROPE (incl. Brentford): green 85% · red 115% — CLUBS IN EUROPE: green 70% · red 100%
BasisSeason / financial year (2026/27, i.e. y/e 30 June 2027). Approved by clubs 14–6 in the November 2025 vote that also rejected hard anchoring/salary caps.
What countsPlayer + head-coach wages, transfer amortisation/impairment and agent fees, vs revenue + net player-trading profit. A multi-year buffer of an extra 30 points exists — using it triggers a levy and ratchets future limits down until earned back at 10%/season; beyond the buffer, sporting sanctions. Levies only bite from 2027/28. The intra-group asset-sale loophole some clubs used under PSR is explicitly closed.
BrentfordEst ~75% on this tracker's model after the club-record Sangaré fee (~£169m cost vs ~£225m denominator) — still inside 85% with ~£22m/yr of room, but several points tighter than a fortnight ago. Two honest caveats: the denominator leans on a sale-profit average flattered by 2025/26, and European qualification would drop the green line to 70% — which the current number would breach comfortably. Success is the compliance risk. For calibration, theesk's published analysis put Brentford's indicative FY24/25 ratio at 89% on total staff costs, or ~73% on a football-only staff-cost basis.
DeadlineMonitoring checkpoint October 2026; formal assessment 1 March 2027, after the January window.
Premier League · live from 2026/27
Expected pass

SSR — Sustainability & Systemic Resilience

TESTS: liquidity headroom ≥ £0 after an £85m stress test · positive equity ratio ≤90% (26/27) → 85% (27/28) → 80% (28/29+)
BasisTested 7 July each year (newly promoted clubs: 31 October), covering the current and following season.
What countsNot a spending cap — solvency tests. The liquidity calculation counts 40% of squad market value as a liquid asset (helpful when your squad's market value towers over its book value, as Brentford's does); the £85m stress test models relegation. Owner equity injections count in a club's favour.
BrentfordBenham's £104.4m of group funding, the 2025 minority investment from Lubner & Vaughn, and a squad worth multiples of its £100m-ish book value all point one way. The one structural note: at ~£173m revenue, a relegation stress is a bigger proportional shock than at a £600m club — SSR is why the club keeps cash discipline even in profit years.
DeadlineFirst full tests 7 July 2027 for 2026/27, with in-season submissions from the start of the season.
UEFA · not applicable 2026/27
No licence needed

UEFA FER & SCR — dormant

IF EVER IN EUROPE: squad cost ≤ 70% (calendar-year basis) · max ~£52m (€60m) football-earnings loss over 3 years
BasisUEFA's rules bind only clubs in UEFA competition. Brentford have never played in Europe — 2025/26's 9th place, level on points with 8th, was the closest in club history.
What would countThe 70% squad cost ratio on a calendar-year clock, plus the Football Earnings Rule (which excludes intra-group asset sales — irrelevant here, Brentford have never used that lever). Player-sale profits count in both — the Bees' model is unusually UEFA-proof.
BrentfordOn current estimates the ratio (~75% after the Sangaré fee) sits well above the 70% Europe line — so a qualification season would now demand a genuine sale, not just cost trimming. Still a nice problem, and fully priced into how the club plans.
DeadlineNone. Dormant unless the top eight beckons next May.
Premier League squad registration
2 slots spare

25-Man Squad List & Homegrown Quota

LIMIT: 25 senior players max · no more than 17 non-homegrown · U21s (born ≥ 1 Jan 2005) exempt
BasisSubmitted after each window (~2 Sep, then early Feb). Homegrown = 3 seasons at an English/Welsh club before turning 21, regardless of nationality.
BrentfordProjected ~23 of 25 used with 8 homegrown (Kelleher, Collins est, Pinnock, Henry, Lewis-Potter, Dasilva, Anthony, Wilson) after Jordan Henderson's exit removed a ninth. Sangaré takes the senior slot Henderson vacated; Schuster and Milambo are U21-exempt. Full board on the Squad List tab.
DeadlineList due ~2 September 2026, refreshed after the January window.
UEFA Annex G.3.5 + PL FMV protocols
League-wide context

Swap-Deal / Player-Exchange Rule

TEST: opposite-direction transfers between the same two clubs = an EXCHANGE if (a) concluded within 45 DAYS of each other AND (b) with similar payment obligations · recognised value = the LOWER of the fee and residual book value
What countsSubstance over form — deals weeks apart can be linked (Newcastle's Anderson sale was tied to the Vlachodimos purchase, wiping £30m+ off their UEFA trading profit). The PL runs its own fair-market-value assessment protocols for player registrations (Handbook, App 19), which DO apply to Brentford.
BrentfordNo exposure — the club has never engineered a swap, and its sales (Mbeumo, Wissa) went to clubs it wasn't buying from. Included because the rule polices the market the Bees sell into: inflated-swap crackdowns keep the big clubs paying real cash for players, which is exactly how the model gets paid.
ConsequenceAmber for the league, green for Brentford. If a buying club ever proposed player-plus-cash for (say) Thiago, the 45-day maths would be the club's problem to check — valuing the incoming player at fair market value or watching the booked profit shrink.
Terminology · where "FFP" went

FFP → what it means now

"Financial Fair Play" (2010) was rebranded by UEFA in 2022 as Financial Sustainability Regulations: solvency (no overdue payables) + stability (FER) + cost control (SCR). Domestically, the PL's version was PSR (2013), now replaced by SCR + SSR from 2026/27. So when pundits ask if Brentford have an "FFP problem", the precise answer is: no rule of any acronym has ever charged them — the club's constraint is its own spreadsheet.
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. Buy Mbeumo for £5.8m in 2019, amortise him to ~£0, sell for £71m in 2025: ~£71m of instant profit. Buy Ouattara for £42.5m on a five-year deal: only ~£8.5m/yr of cost. That asymmetry — sales count at once, buys count in instalments — is why a club with the league's second-smallest stadium can run a £130m wage bill and still pass every test ever set for it.

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 and links stay in the Rumour Mill. Figures marked ~ are estimates from league-wide analyses rather than confirmed line items — FY25 league totals: £6.8bn revenue, £4.4bn wages, £2.0bn amortisation, £948m aggregate pre-tax losses.

ClubEurope 26/27Green capRev £mWages £mW/RCompliance notes
ArsenalCL · CHAMPIONS70%~617~328~53%Comfortable on both ratios; CL runners-up 25/26. Amortisation £170m+ the main cost line.
Manchester CityCL70%~715408~57%New era: Maresca replaces Guardiola. Broke the British record for Forest’s Anderson (£116m, fixed fee) — absorbed inside 70% by a £715m revenue base.
Manchester UnitedCL70%~666~313~47%Carrick made permanent manager; ~£85m midfield rebuild (Santos £50m, Tielemans £35m from Villa). £196m amortisation, but a £666m denominator makes 70% easy.
Aston VillaCL · EL HOLDERS70%37827372%Mid-UEFA-settlement, fined twice (£19.4m Jul 2026, two-thirds suspended); 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.
Brighton & Hove AlbionCONFERENCE70%~222~165~74%FY25 costs rose sharply on amortisation; historically balanced by elite player trading profits.
Chelsea85%~541~360~67%Xabi Alonso era. UEFA settlement (£26.7m paid, up to £51m conditional), fined again Jul 2026 — then broke their record for Rogers (£117m) days after loaning Garnacho to Villa, walking the swap-rule tightrope. League-high £212m amortisation; missing Europe eases the cap to 85%. Added Jordan Henderson on a free (2-yr deal) after Brentford terminated his contract.
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%17313176%The subject of this tracker: the sustainability model club — never charged under any regime, 9th in 25/26 (level on points with 8th-placed Brighton, out on goal difference), est ~75% SCR after a club-record ~£41m for Lens' Mamadou Sangaré on 1 Aug. See every other tab.
Leeds United85%~150*~110*~73%*FY25 = promotion season. Second PL season consolidating.
Coventry CityPROMOTED · CHAMPIONS85%~45*~35*~78%*Championship-era accounts. PL broadcast money transforms the denominator overnight — big headroom if they spend sensibly. In: Frank Onyeka made permanent from Brentford (29 Jun, undisclosed) after his title-winning loan.
Ipswich TownPROMOTED85%~145*~115*~79%*FY25 reflects their last PL season. Straight back up at the first attempt. In: Daizen Maeda from Celtic (£8m rising to £10m) — the forward Brentford had been linked with.
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, ex-Villa Targett, Zambrano & Morita.
The tier divide is the story of 2026/27: nine clubs in Europe live at 70/100 while eleven — Brentford included — live at 85/115. Missing Europe by a goal handed the Bees 15 extra points of domestic spending headroom, the league's strangest consolation prize. And note the squeeze cases at both ends: Bournemouth and Palace dragged down to 70% by success, Fulham and the promoted clubs for whom even 85% of a small revenue is a hard ceiling. Brentford's ~76% wages-to-revenue looks high in this table — the trading profit that fixes it lives in a different line of the accounts.
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. Want this full treatment (transfers, book values, squad list, headroom) for another club?

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: fees on officially completed 2026 deals; where a club declines to disclose but a figure is widely reported (Brentford's Sangaré and Onyeka, for instance) the reported number is used, otherwise undisclosed counts £0; loans & frees excluded; the Garnacho £42.5m is next season's Chelsea spend. LAST 5 YEARS: net spend 2021/22–2025/26, Transfermarkt basis (€ converted), ~ = estimated. The two views tell one story from opposite ends: over five years Brentford rank 6th-lowest in net spend (~£80m) while never finishing below 16th — and the Bees are one of only a handful of clubs whose selling is strategic rather than forced. Highlighted row = Brentford.

Can Anyone Still Catch the Big Six?

The question underneath every number in this tracker. The honest answer: the old door is bricked up — but there's a turnstile, and Brentford (with Brighton) wrote the manual for queueing at it.

Why it feels closed — because it mostly is

The ratio rules are a percentage of revenue — so they don't cap spending, they cap spending relative to income. City's 70% of ~£715m buys a ~£500m squad; Brentford's 85% of a ~£225m denominator buys ~£190m. The gap is locked in by design. And the earnings rules kill the only ladder anyone ever actually climbed: Abramovich's Chelsea, early City, even Newcastle's takeover surge all spent ahead of revenue — exactly what's now illegal. The clubs at the top climbed the ladder, then wrote rules that pulled it up. Worse, the compliance machinery itself transfers talent upward: the fined clubs' exit routes all ran through selling their best players to richer ones — and Brentford's voluntary version sent Mbeumo to Old Trafford and Wissa to Tyneside. The selling clubs feed the rich, charged or not.

The cracks in the door

1 · Grow the denominator. Every £1 of new revenue is 85p of new squad allowance at Brentford's tier — which is why the Indeed deal, record Gtech season-ticket demand and (one day) a European run matter as much as any signing. 2 · The trading engine. Net transfer profit counts IN the denominator — selling well literally raises your cap. Brentford have run this loop for a decade: ~£210m of sales since 2023 from ~£25m of fees paid, and the rules now reward it explicitly. 3 · Efficiency is legal. Yarmoliuk £1.6m, Kelleher below market, Schuster at 19 — the five-year table above shows a top-nine team built on the league's 6th-lowest net spend, though the ~£41m club record for Sangaré shows the Bees will now pay full price when the data insists. 4 · The rich can now fail permanently. £650m for one top-four finish used to be survivable — just spend again. Under squad-cost rules, mistakes consume finite headroom even for giants. Bad buying is finally fatal at every level — and nobody buys better per pound than the Bees.

The bean counter's verdict: catching the Big Six in one leap is dead — the rules exist to prevent precisely that. What remains is a slower, harder arc: gatecrash Europe on efficiency, monetise it, sell your stars for compliance fuel, and let revenue compound. Brentford are running the arc's first half perfectly — a goal difference from Europe on the league's 6th-lowest net spend, with a squad worth multiples of its book value — but the second half needs the 17,250-seat Gtech's revenue ceiling raised, and that's a stadium-and-decade problem, not a window problem. The door isn't closed. It's just been redesigned so that only the well-run can fit through — and nobody is better-run per pound. The bit nobody says out loud: the new rules are Brentford's model, made mandatory for everyone else.

Changelog

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

3 Sept 2026

Twenty-six sold players were sitting in “Retained” columns across fifteen clubs SITE-WIDE CORRECTION

Villa’s board was not the exception. It was the one somebody happened to be looking at. After Emiliano Martínez was found under “Retained” four days after his sale to Chelsea, the same pattern was checked across the other nineteen pages. Every club page carries these position boards — three columns each, who left, who stayed, who arrived — and at roughly forty-five chips a page that is about nine hundred hand-written claims, none of which any gate on this site could read, because they name players in free HTML rather than through a data array.

Twenty-six of them said a player had stayed when the club’s own deal table said he had been sold. The list is not marginal. Rodri sat under Manchester City’s “Retained · 6” tagged “REAL MADRID TALKS”; he had gone to Barcelona for £51m. Tijjani Reijnders (£52m, Al Qadsiah) and Nico González (£50m, Newcastle) were beside him. Carlos Baleba was retained at Brighton after a £65m move to Manchester United. Liam Delap was retained at Chelsea after £45m to Forest. Everton had five in one page — Ndiaye, McNeil, Beto, Iroegbunam and Patterson. Arsenal had Gabriel Jesus, Ipswich three, Hull two, Palace two, and so on across fifteen clubs.

Each one is now in the column it belongs in, with the destination and fee taken from the deal table rather than retyped. Column counts were recomputed from the chips actually present, so the headings match their own contents for the first time in a while. “Out · 0 — Nobody” placeholders were removed where a real departure now fills the column.

Worth recording how nearly this went wrong, because it is the second time today. The first script moved the chips and reported twenty-two successes. It had in fact deleted all twenty-two players: the insertion point never matched, the removal did, and the counts were recomputed afterwards so every column looked internally consistent. Nothing in the output said anything was missing. It was caught by reading one board back rather than by trusting the tally, and reverted. The rewrite asserts the set of names in a board before and after the edit and refuses to write when they differ — which then immediately caught a second, smaller error, and later a third: the pattern used to find a column was swallowing the last chip’s closing tag, so the final name in every column was invisible, which is why four clubs looked clean on the first pass and were not.

And a gate, the twenty-fifth. tools/check-flowboards.js asserts two things about every chip on every board: a name in a retained column must not be a completed permanent sale in that page’s OUT26, and a name in a retained column must exist in that page’s data at all. It says nothing about incoming or outgoing columns, where naming a target from another club is correct, and it exempts chips whose own tag places them outside the squad table — a third-choice keeper in contract talks, a U21 needing no registration. Its first run reported seventy-one problems, of which twenty-four were its own fault: typographic apostrophes it could not match to straight ones, and editorial labels like “Third keeper slot” that are not players. Tested against the pre-fix pages, where it finds exactly twenty-six.

The reason this sat unseen is worth stating plainly. The deal arrays are gated. The ratio inputs are gated. The squad table is gated. The answer block, the league tables and the share cards are all derived. These boards were the one substantial thing on every club page that was neither derived nor checked — prose in the shape of a table, in a heavily-read tab — and they had been drifting for as long as they have existed. It took a reader with the live page open to find the first one.

3 Sept 2026

Olakigbe’s loan to WSG Tirol added OFFICIAL

Michael Olakigbe goes to the Austrian Bundesliga for the season. He is one of the B-team group whose option year Brentford triggered rather than let lapse — the club rating him and then sending him where he will play weekly. Nil fee, nil book value, no amortisation effect. No relief is assumed on any of them. Nobody publishes what share of a loaned-out player’s wage the borrowing club carries, and where a loan goes down the pyramid the parent usually keeps paying most of it. Every wage here is an estimate and flagged as one.

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

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

Diouf — a £35m signing sitting in the Ins table and simultaneously live on the board as a £35m target.

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

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

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

2 Sept 2026

Brentford are owed £3m–£3.5m of the Watkins fee, and the model had nowhere to put it DATA

They sold Ollie Watkins to Aston Villa in 2020 and kept a share of any onward sale. Villa sold him to Al-Hilal for £50m on 30 August, and Tanswell puts Brentford’s share at £3m–£3.5m — modelled at the £3.25m midpoint with the range stated.

There is no book value to net off. His fee was written down and gone years ago, so the whole sum is profit, and a third of it reaches the denominator on the three-year average. The trading input goes £47m → £48m and the ratio 87.7% → 87.3%, with the overshoot easing from £6.1m to £5.2m/yr. It helps and it does not rescue: Brentford are still over the 85% limit.

This site had no way to record money coming in, and had already said so. In August, when Villa’s 10% of a possible Iroegbunam sale had nowhere to live, the note read: “the model needs a field for a receivable and a second clause shape, and that is better built before the money moves than after.” It was not built. The money has now moved. SELLON_IN is that field, one window late, and it feeds the profit the denominator uses rather than sitting in prose.

And the gate that should have checked it did not. The trading-bridge invariant kept its own copy of how booked profit is summed, so the receivable changed the page and not the check, and £3.25m passed green. That is the second time the same trap has sprung here — the first was a £15m sell-on in August. The gate no longer re-implements the page’s arithmetic; it calls the page’s own function, so whatever is added to that function next is counted without anybody remembering to update the checker.

2 Sept 2026

A £35m signing was missing, and it takes Brentford through the line MAJOR CORRECTION

El Hadji Malick Diouf was announced by the club on 28 August — £35m guaranteed plus £5m in add-ons for the 21-year-old Senegal left-back, five years with a club option — and this page did not have him. He sat on the Rumour Mill while Brentford were announcing him.

It answers the question the Konák entry left open, and not in Brentford’s favour. That entry read 84.9% as at the 85% limit rather than under it, with £250,000 of headroom and an unpriced Guagua above it. £35m over the five-year cap is about £7.3m/yr of amortisation with the levy. The ratio goes 84.9% → 87.7% and the headroom from +£0.25m to −£6.1m/yr. Brentford are over the line.

Ethan Pinnock’s sale was missing too, from this page and from Coventry’s: £5m guaranteed plus £1m, announced 26 August, ending seven years and 216 appearances. Nil book value, so the whole guaranteed fee is profit, and the wage relief helps — but nowhere near enough to offset a £35m arrival in the same week.

Committed spend goes £75.2m → £110.2m, sales £9m → £14m. Squad 10 homegrown and 12 non-homegrown. The £250,000 of headroom this page had been quoting for a fortnight was real arithmetic on incomplete data, which is the more dangerous kind of wrong: every figure in the calculation was right and one row was absent.

2 Sept 2026

Brentford’s four loaned-out players get squad rows — and the £250,000 question stays open DATA

The Konák entry below said this was not one club’s problem, and that Brentford accounted for four of the twenty-three loaned-out players across the league with no squad row. Those four now have rows: Darwin Guagua (Mérida AD), Benjamin Arthur (Portsmouth), Ben Krauhaus (Falkirk) and Matthew Cox (Barnet). The squad table goes to 32 rows.

It does not answer the headroom question, and saying so is the point. All four fees are undisclosed, so all four are recorded at £0 with the estimate flag rather than at an invented number. The amortisation floor is £74.2m against an input of £74m — where it already was. The ratio holds at 84.9% against 85%, and the headroom is still £250,000. What has changed is that the gap is now visible in the squad table instead of being invisible outside it.

Guagua remains the open question and now has a row to be open on. Signed from Independiente del Valle on 14 August on a five-year deal with a club option, and loaned straight to Mérida in the Spanish third tier subject to a work visa. A South American teenager bought by a Premier League club is not free, and almost any fee at all costs more than £250,000 a year of headroom. Read the 84.9% as at the limit rather than under it.

The other three are cheaper by nature but not certainly free: Arthur came from Peterborough United’s academy in 2023, Krauhaus from Bromley in January 2024 after a League Two title, Cox from AFC Wimbledon in July 2021. Each would have carried a compensation fee rather than a transfer fee, none of them published.

1 Sept 2026

Konak was on the books and amortising nowhere — and Brentford have £250,000 of room CORRECTION

A player out on loan is still yours. His registration sits on your balance sheet and keeps writing down, and only a sale stops it. Yunus Emre Konak went to Lincoln City on 18 August with no squad row on this page, so his book value was amortising against nothing at all.

The row’s own note gave it away. It already argued that his new contract “resets the amortisation schedule on his book value and pushes the cost further out” — reasoning in detail about a charge the page was not carrying. That is the tell worth remembering: prose describing a number nobody is calculating.

He cost €4m from Sivasspor in January 2024, not Trabzonspor as the reporting around his loan has it, on a deal to 2029 that was replaced in August by a five-year one to 2031. That renewal halves the answer. Naively it is £3.4m over five years, £0.68m/yr; correctly, the £1.7m still unwritten spreads over the new term at £0.34m/yr. The difference decides whether Brentford breach, which is why it was worth getting right rather than taking the conservative number and moving on.

The model could not say it. fee is what a player cost and the dates are when he arrived; both are published facts, and overloading either to make the charge come out right would have misstated something real to fix something internal. So squad rows now take an optional book — the amount still to write off where a renewal has re-based it. Absent everywhere else, because on the day a player signs his fee is his book value.

Where it leaves them: 84.9% against 85%. Konak’s £0.34m fits inside the tolerance, so the headline does not move — but the headroom is £0.25m, and the amortisation input sits exactly on what the squad alone requires with nothing above it for anyone unlisted. Darwin Guagua is the open question. Signed from Independiente del Valle in August and loaned straight to Mérida, fee undisclosed. No figure is invented here, so he carries none — but a South American teenager bought by a Premier League club is not free, and almost any fee at all costs more than £250,000 a year of headroom. Read the 84.9% as at the limit rather than under it.

This is not one club’s problem. Twenty-three loaned-out players across thirteen clubs have no squad row, so none of them carries book value anywhere on this site. Most are academy players who genuinely cost nothing and the right entry is a zero, stated rather than assumed. The rest are Konaks. That count was typed here when this entry was written, and it was wrong twice over. It said thirty-eight across eighteen. The real figure was never checked against a definition, and it swept in players whose loan in had expired — men who were never the club’s asset and could not have had a squad row. The number is now produced by the audit tool under a stated rule — a row in the outs table marked as a loan, excluding expired loans in, with no matching name in the squad table — so it goes stale on the next run rather than sitting here being quoted. Villa closed their five on 1 September and Konak was closed here, but Brentford still account for four of the twenty-three — Guagua, Arthur, Krauhaus and Cox — which is the most of any club and the reason the £250,000 of headroom above should be read as provisional.

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

Ousmane Diabaté leaves the Ins table for the Rumour Mill, where he was before 5 August. Brentford’s bid was rejected and his registration rights are split three ways — 50% club, 40% academy, 10% his representative — so there is not even a single counterparty to agree with yet.

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

The only squad here with real room, and the recruitment is what built it 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: 22 of the 25 places used, 10 homegrown and 12 non-homegrown, with 4 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. Nothing on this page stated either figure wrongly — the gross-up moved its table columns and nothing else. Palace’s was the clearest case: it read “still negative” where the page computed a positive swing, so the sentence was not stale but inverted.

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

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

30 Aug 2026

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

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

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

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

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

30 Aug 2026

No gate had ever read a headcount CORRECTION

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

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

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

30 Aug 2026

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

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

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

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

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

30 Aug 2026

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

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

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

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

30 Aug 2026

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

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

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

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

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

30 Aug 2026

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

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

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

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

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

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

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

30 Aug 2026

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

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

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

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

30 Aug 2026

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

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

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

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

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

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

30 Aug 2026

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

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

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

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

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

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

30 Aug 2026

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

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

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

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

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

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

30 Aug 2026

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

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

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

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

30 Aug 2026

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

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

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

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

28 Aug 2026

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

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

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

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

20 Aug 2026

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

The ratio moves from 79.1% to 84.9% (wages 99→108, amortisation 70→74).

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

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

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

27 Aug 2026

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

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

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

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

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

27 Aug 2026

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

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

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

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

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

27 Aug 2026

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

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

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

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

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

27 Aug 2026

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

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

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

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

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

26 Aug 2026

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

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

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

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

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

26 Aug 2026

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

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

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

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

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

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

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 scenario modeller is rebuilt on the site-wide conventions METHOD

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

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

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

20 Aug 2026

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

19 Aug 2026

Four deals added, three of them the loans this site keeps under-recording SWEEP

Darwin Guagua, announced 15 August, fee undisclosed, straight into Brentford B and straight back out on loan to Mérida AD — a club in Brentford’s own ownership group. That is a related-party loan, so its wage relief should be read as nominal rather than real: cost does not necessarily leave a group when it moves inside it.

Yunus Emre Konak to Lincoln City, 18 August. The loan is the lesser half. He signed a new five-year contract to 2031 immediately beforehand, replacing one that ran to 2029 — which resets his amortisation schedule and pushes cost further out in a way a loan alone never does.

Benjamin Arthur to Portsmouth, 12 August, season loan, no option or obligation. Brentford turned down a Celtic approach first.

15 Aug 2026

Quiet 48 hours — re-checked, nothing material RE-CHECK

All deals re-checked on 15 August: the club-record Sangaré signing, the Henderson exit to Chelsea and the Donovan loan to Sheffield United stand as recorded, and no new fee, status or structure changes have been reported since.

09 Aug 2026

Fourth flat day, four goals at Rennes, and Tottenham join the Thiago queue NO COMPLETED DEALS

Nothing has completed since Sangaré on 1 August — no Brentford transfer was done on 8 or 9 August, so every headline number is unchanged: ~£75m committed against ~£9m banked, a net window balance of −£66m, an estimated squad cost ratio of ~75% against the 85% line with ~£22m/yr of room, and a projected 25-man list of 23 with 8 homegrown. The window has 23 days left; the league season starts in 13. Because no in or out completed, the 3-year smoothed sale-profit average (£45m, per the UEFA Art. 93-style smoothing this tracker uses) and the SCR wages input are untouched, and the amortisation figure continues to derive automatically from the squad contracts.

The football: Rennes 2–4 Brentford. Saturday's penultimate friendly at Roazhon Park, referenced in yesterday's entry, was won 4–2 — and the scorers were the tracker's cast list: Igor Thiago (19', heading in a Mathias Jensen corner on his return), Ethan Pinnock (28', from a Janelt delivery), Dango Ouattara (47') and Callum Wilson (49', slid in by Ouattara — his first Brentford goal). One friendly left before Premier League kick-off on 22 August. No financial line moves, but a 22-goal striker scoring on his return is not nothing for the valuation conversation below.

The Thiago siege widens — status unchanged. Over the weekend Tottenham registered interest through intermediaries, joining Manchester United and Chelsea's rebuffed 7 August enquiries, and Bayern Munich are reported to be monitoring; the club's stance hardened in the sourcing to "no circumstances" under which offers would be entertained this summer, with the ~£77–80m (€90m) valuation standing and the player described as fully committed. An enquiry is still not a bid and a bid is still not a deal, so he stays in the Rumour Mill — the entry and its interest list are updated, nothing is promoted.

Everything else re-checked and flat. Ousmane Diabaté stays at "In talks" in the Ins & Outs table — negotiations with Gençlerbirliği continued through the weekend with no agreement reported, so he still counts towards nothing. Diouf (rejected bid, "not for sale"), Sancho (wages the blocker), Schade (£60m tag reporting, Roma priced out), Jensen (Lazio link) and the Arthur-to-Celtic loan condition are all unchanged from the 8 August audit. No status changes, no additions, no removals; date stamps and the JSON-LD modified date moved to 9 August.

08 Aug 2026

Three flat days, two rebuffed giants, one missing striker found NO COMPLETED DEALS

Nothing has completed since Sangaré on 1 August. No Brentford transfer was done on 6, 7 or 8 August, so the window totals are unchanged: ~£75m committed against ~£9m banked, a net window balance of −£66m, an estimated squad cost ratio of ~75% against the 85% line, and a projected 25-man list of 23 with 8 homegrown. The squad plays Rennes away this morning, the penultimate friendly before the season opens on 22 August — the window has 24 days left and the arithmetic still leans on a sale that has not happened.

The Thiago siege formalised. On 7 August Manchester United and Chelsea both made direct enquiries for Igor Thiago and were told he is not for sale; the valuation is now widely quoted at ~£77–80m (€90m), and Atlético Madrid and Juventus have joined Arsenal in the dispatches. Nothing here changes his status — he stays in the Rumour Mill, because an enquiry is not a bid and a bid is not a deal — but the rumour note now carries the 7 August round and the harder price. Kevin Schade's note also updated: British reporting now puts the tag at £60m, Roma are credited with interest Sky describe as beyond them financially, and a pundit claim that the club would accept a "huge" offer (with Lee Kang-in and Maxi Beier scouted as replacements) is recorded as a claim, not policy — the club's stated position is still to extend his contract.

Diabaté inches, Arthur waits. The Ousmane Diabaté negotiation stays at "In talks" in the Ins & Outs table: the latest reporting says ~£3m (€3.5m) plus bonuses may now be enough to close it, with the complication that Gençlerbirliği hold only 50% of his rights (SOAR Academy 40%, his representative 10%). Still excluded from every total until agreed. Benjamin Arthur's hoped-for second Celtic loan is reported to hinge on Brentford signing defensive cover first — noted in the window commentary, nothing agreed. Sancho, Diouf, Sarr and Jensen items re-checked and unchanged.

Audit correction: Kaye Furo added. The 18-year-old Belgium U21s striker, signed from Club Brugge in January 2026 for a reported ~£8m on a 5½-year deal to 2031 (officially announced by the club; PL debut against West Ham in May), was missing from both the squad table and the 2025/26 ins list. He is now in both. Because the headroom model's amortisation derives automatically from the squad contracts, the derived amortisation figure rises by roughly £1.5m/yr and squad book value by ~£7m — a rounding-level nudge that leaves the headline ratio at ~75%. He is U21-exempt, so the projected 25-man list stays 23 of 25 with 8 homegrown. No completed sale means the 3-year smoothed sale-profit average (£45m) and the wages input are untouched.

05 Aug 2026

A £34m bid refused, one negotiation promoted, one rumour deleted NO COMPLETED DEALS

Nothing signed, so nothing moved. No Brentford transfer completed on 4 or 5 August, and the page's headline numbers are therefore identical to yesterday's: ~£75m committed against ~£9m banked, a net window balance of −£66m, an estimated squad cost ratio of ~75% against the 85% line with ~£22m/yr of room, and a projected 25-man list of 23 with 8 homegrown. Recording that explicitly matters as much as recording a signing — the value of a tracker in a live window is that a flat day looks flat.

The day's actual news: a rejected £34m bid. Brentford made a formal written offer of €40m (~£34m) for Inter's Aleksandar Stankovic and were turned down — by the club, the player and, per Italian reporting, the family. Inter exercised a €23m buy-back on the 21-year-old after his title-winning season on loan at Club Brugge and plan to rotate him into their own midfield. He had already rejected Brentford once, alongside Tottenham, to take the Inter route. The pursuit is closed, so he is not added to the Rumour Mill; it is logged in the Ins & Outs commentary because two failed nine-figure-euro approaches in a week is the real story of this window — the Bees are trying to spend considerably more than the record they have already broken.

Promoted to the table: Ousmane Diabaté. The 18-year-old Guinea international defensive midfielder at Gençlerbirliği is a genuine live negotiation rather than a link, so he now sits in the Summer 2026 In table at "In talks" rather than in the Rumour Mill. Reported state of play: an opening bid of about €2.5m rejected, the Turkish club asking €4.5–5m for 50% of his rights plus a 10% sell-on, and Brentford reported to be ahead of Tottenham because they can promise a faster first-team path. The ~£4m shown is the asking level, not an agreed fee, and the row is excluded from every total until a deal is actually done — the "In talks" rung exists precisely so an unsigned player can be shown honestly instead of being either hidden or counted.

Removed: Matteo Cancellieri. Struck out entirely. Lazio have him transfer-listed and the clubs in live contact are West Ham and Celtic, with a Cancellieri-for-Füllkrug swap floated between Lazio and West Ham and the player's exit temporarily frozen on 1 August. Brentford are not part of that race and have not been since the January bid; keeping him as a "cheap late option" was generosity, not reporting.

Added as reported interest: El Hadji Malick Diouf — Brentford's opening offer for the 21-year-old West Ham left-back, put at roughly £15–18m, was rejected in late July with a firm "not for sale"; the motive is Rico Henry's final contract year and two ACL recoveries. Pape Matar Sarr — offered to Brentford by Tottenham on 29 July rather than pursued by them, at a floated ~£30m; the Bees did not take it up, though it may be revisited. Kevin Schade updated: Saudi Pro League interest has joined the Tottenham link, described as a "very lucrative financial opportunity", while Brentford's stated position is an asking price around €60m and a wish to extend and improve the contract that runs to 2028. Also noted in the window commentary: Celtic had a permanent bid for 20-year-old centre-back Benjamin Arthur rejected, with a second loan the likelier route. Cross-page note: the Diabaté, Sarr and Schade items all involve Tottenham, and the Diouf item involves West Ham — none of them are agreed deals, so none should appear as transfers anywhere; they are interest only.

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

Window rebuilt from source — loans and loan returns added 3 ADDITIONS

Method changed. Instead of treating the list already on this page as the baseline and only hunting for news since the last update, the summer 2026 window was rebuilt from scratch against a full source list — permanents, loans out, loans in, loan returns, frees, releases and fee-carrying academy exits — and only then compared with what was here. All four permanent arrivals (Sangaré, Schuster, Anthony, Wilson) and all six permanent/expiry departures (Onyeka, Henderson, Trevitt, Laidlaw, McManus, the five academy releases) checked out with the fees, dates and statuses already shown. What the old baseline method had missed was everything without a fee attached.

Three deals added. Ben Krauhaus — B-team midfielder, season-long loan to Scottish Premiership side Falkirk announced 13 July, subject to international clearance, joining Ethan Laidlaw who moved there permanently in June. Aidan Stokes — the 18-year-old USA youth international goalkeeper, on loan to Brentford B from New York Red Bulls until 30 June 2027 with a club option to buy, announced 29 July; he was named in the previous entry's prose but had never been entered in the incoming table. Jayden Meghoma — logged as a loan return rather than a signing, back from 44 appearances at Rangers and in pre-season with the first team. All three are fee-free, so committed fees stay at ~£75m against ~£9m banked and the squad cost ratio estimate is unchanged at ~75%; the only figure that moves is annual cost freed, up ~£0.2m for the wage share Falkirk cover on Krauhaus. Squad-list flow columns updated: Stokes and Meghoma are both exempt from the 25-man list, Krauhaus is B-team, so the projected senior list stays at 23 of 25 with 8 homegrown.

Cross-check resolved. The automated comparison flagged Jordan Henderson as a Brentford → Chelsea move with no matching entry on Chelsea's page. Verified here as correct on the Brentford side and left alone: his contract was terminated by mutual agreement on 29 July with a year still to run, and he signed for Chelsea as a free agent on a two-year deal. There is no fee and never was one — the gap is on Chelsea's page, not this one.

Accuracy audit + club-record signing 12 CORRECTIONS

Audit. Every named player, manager and rumour on the page was re-checked against their actual club as of 4 August 2026. Twelve corrections were made. Three rumour-mill entries were struck out entirely because the player had already moved or re-signed elsewhere: Daizen Maeda (joined Ipswich Town from Celtic for £8m rising to £10m), André Luiz (joined Olympiacos from Rio Ave on 29 January 2026) and Andreas Christensen (signed a new Barcelona contract to 2028 on a reduced salary — the Brentford link dated from last summer). The Cancellieri entry was corrected: Brentford's rejected bid was €15m in January, not a spring "closing in", and West Ham and Celtic now lead that race. Squad-table fixes: Igor Thiago's contract runs to 2031 (+1yr option) after his February extension, not 2029; Michael Kayode signed a six-year deal to 2032 on 3 July; Hákon Valdimarsson extended to 2030 (+2yrs) in April. Fee corrections: Jannik Schuster was reported at ~£17.2m (€20m), not £12m; Jaidon Anthony's deal is four years plus an option (reported ~£15m rising towards £20m), not a flat £17.5m five-year deal. Two completed deals were missing entirely — Frank Onyeka's permanent sale to Coventry City (29 June, undisclosed, reported ~£9m) and Jordan Henderson's exit — which also made the repeated "nothing sold for a fee" claim wrong. The Thiago interest list was trimmed to the clubs actually reported (Arsenal, Manchester United, Chelsea); Milan and Atlético could not be verified and were dropped. Keith Andrews confirmed in post (contracted to 2032).

New since 27 July. Mamadou Sangaré signed from Lens on 1 August for a club-record fee — reported ~£41m (€48m), five years plus a club option — the 24-year-old Mali international named in the 2025/26 Ligue 1 Team of the Year. Jordan Henderson's contract was terminated by mutual agreement on 29 July; he joined Chelsea as a free agent on a two-year deal. B-team defender Conor McManus joined Gillingham permanently on 3 August (undisclosed), and Brentford B took New York Red Bulls goalkeeper Aidan Stokes on loan. New live links added: Jadon Sancho (free agent — initial enquiries made, wage demands the obstacle), Kevin Schade to Tottenham (reported £43–52m valuation) and Mathias Jensen to Lazio. Numbers moved accordingly: committed fees now ~£75m against ~£9m banked, the deepest net deficit of the club's Premier League era, and the estimated squad cost ratio rises from ~71% to ~75% against the 85% line — still compliant, with ~£22m/yr of room. Club-name abbreviations in the 20-club league table expanded to full official names.

27 Jul 2026

Page launched

The Bean Counter's Brentford tracker goes live at bean-counter.co.uk/brentford. Baseline data loaded: FY2024/25 accounts (record £173.1m revenue, £130.8m wages, −£20.5m pre-tax); the summer 2026 window to date (Schuster £12m, Anthony ~£17.5m, Wilson free; Trevitt, Laidlaw and the academy releases out; Donovan and Cox on loan); the projected 25-man squad list (23 slots, 8 homegrown); the estimated ~71% squad cost ratio vs the new 85% line; the clean sanctions record; and the Rumour Mill seeded with the Thiago interest, Cancellieri, Maeda, André Luiz and Christensen links. All fees and wages are media-reported or estimated — corrections welcome.

Glossary

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

PSR (Profit & Sustainability Rules)
The Premier League's rule capping losses at £105m over a rolling three-year period (£35m/yr), after 'good' spending on academy, infrastructure, community and women's football is deducted. Brentford end the final cycle an estimated £150m+ inside it — the FY26 sale profits alone outweigh both prior years' losses. One last assessment in January 2027, then the rule retires.
Squad Cost Ratio (PL SCR)
The Premier League's new rule from 2026/27: player and head-coach wages, transfer amortisation and agent fees capped at 85% of revenue plus net player-trading profit for clubs not in Europe (70% for clubs in UEFA competition), tested on a season basis. Brentford project at roughly 75% on this tracker's estimates after the club-record Sangaré signing.
Squad Cost Ratio (UEFA)
UEFA's version of the same idea — 70% limit, tested on a calendar-year basis — binding only on clubs in European competition. Dormant for Brentford, who have never qualified; on current numbers a first qualification would require trimming around five points off the ratio, most likely via one good sale.
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 Brentford, whose model (real profits from real sales) is the compliant archetype the rule was written to encourage.
Multi-Year Allowance & Ratchet
The PL SCR's escape valve: an extra 30 percentage points of spending above the green line, usable across seasons — but using it triggers a levy and drops future limits by the amount used, earned back at 10% per compliant season. The mechanism that turns one splurge into three lean years.
SSR (Sustainability & Systemic Resilience)
The PL's incoming liquidity and solvency tests running alongside the squad cost rules — proving clubs can actually pay their bills, stress-tested against an £85m shock. Bites hardest on small-revenue clubs; Brentford pass on owner funding and a squad worth multiples of its book value.
25-Man Squad List / Homegrown Quota
Premier League squads name max 25 senior players, of whom at most 17 may be non-homegrown; under-21s are exempt. Homegrown = 3 seasons at an English/Welsh club before turning 21, any nationality — how Cork-born Kelleher qualifies via Liverpool. Brentford project 23 slots used, 8 HG after Jordan Henderson's departure and Mamadou Sangaré's arrival.
Amortisation
Spreading a transfer fee as a cost over the contract length. Sangaré's club-record ~£41m on a five-year deal costs ~£8.5m/yr in the books — which is why fees are judged per-year while sales count at once.
Five-Year Amortisation Cap
UEFA and PL rule that fees must be amortised over a maximum of five years even on longer contracts — closing the eight-year-contract loophole Chelsea made famous. Schuster's five-plus-one-year deal amortises over five.
Book Value
What's left of a player's fee still to be amortised. Sale profit = fee minus book value. Thiago's £30m fee, re-spread over his extension to 2031, has ~£21m left on the books — so an £80m sale books ~£59m of profit. Academy players carry £0 book value, which is why selling them is pure profit.
Pure Profit
Shorthand for selling a £0-book-value player (academy graduate, free transfer, or a fee fully amortised): the entire fee lands as profit. Mbeumo — £5.8m in 2019, £71m out in 2025 — is the canonical example, and the engine of Brentford's entire compliance position.
45-Day Exchange Rule
UEFA Annex G.3.5: opposite-direction transfers between the same clubs within 45 days on similar payment terms are treated as a player exchange, valued at the LOWER of fee and book value — slashing bookable profit. Newcastle's Anderson/Vlachodimos linkage was 2026's cautionary tale; Brentford's clean cash sales sidestep it entirely.
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 — Sangaré's reported ~£41m really costs ~£42.6m.
FIFA Solidarity Contribution
Up to 5% of an international transfer fee distributed to the clubs that trained the player between ages 12 and 23. Rides inside the transfer cost for compliance purposes — relevant on deals like Schuster's from Salzburg and Sangaré's from Lens.
Sell-On Clause
A percentage of any future sale owed to a selling club. Brentford routinely negotiate these when selling (and grant them sparingly when buying) — one reason reported fees and booked profits rarely match. Any Club Brugge sell-on in the Thiago deal is unconfirmed but would trim the headline profit.
Senior Loan Quotas
Limits on loan signings: domestically, max 2 concurrent (4 per season) from English clubs and never two from the same club; internationally, max 6 senior loans (over-21, non-club-trained) with U21 and academy players exempt. Brentford currently use none of them.
Intra-Group Asset Sale
Selling an asset (women's team, real estate) to a company under the same ownership to book profit — the controversial PSR lever some clubs pulled. Brentford never have; the closest analogue in their accounts is a genuine £8.8m third-party property transaction in FY25. The new SCR rules close the loophole league-wide.
Headroom
The gap between current squad cost and the applicable line — the practical transfer budget. Brentford's is ~£22m/yr of running cost under the 85% line on this tracker's estimates after the Sangaré fee, roughly two-and-a-half club-record signings' worth of amortisation.
Calendar vs Season Test
UEFA tests its ratio over the calendar year; the PL tests the season (assessment March 2027). Only the PL clock matters for Brentford in 2026/27 — one of the small administrative mercies of missing Europe by a goal.