Sunderland AFC crest
The Bean Counter
Sunderland AFC · 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
Sunderland AFC official crest

The Bean Counter · Sunderland

2026/27 PRE-SEASON
Consectatio Excellentiae
Football has become a game of bean counting — so here's the abacus. PSR (final verdict) · Squad Cost Ratio · UEFA List A & the homegrown squeeze · book values · the first European campaign since 1973

State of Play

Sunderland's estimated squad cost ratio is 69.1% against the 70% limit that applies to clubs in UEFA competition, leaving roughly £2.1m/yr of cost headroom. The summer 2026 window stands at £25.4m banked from sales against £63.3m committed on signings. Every figure here is this tracker's own estimate, built from published accounts and media reporting, as reported 3 Sept 2026.

Squad Cost Ratio · Estimated
/ 70%
70% wall · 100% red line
One 70% wall, enforced twice — UEFA on calendar 2026 (Sunderland's first ever UEFA test), the Premier League on season 2026/27 (the rule that replaced PSR).
Window Net Balance
sales less buys, confirmed deals · Mayenda money in, Meunier free in
First List A Since 1973
·
Est. cap ~22 of 25 — the homegrown shortfall bites (≈5 locally-trained after Neil & Cirkin left); due ~2 Sep
UEFA Fines
£0 EVER
No PSR/FFP charge in the club's history — the clean sheet the fined clubs would kill for

The Clock — What's Counting Down

DAYS TO SAUDI WINDOW CLOSE
6 SEP
DAYS TO EL LIST A DEADLINE
~2 SEP · UEFA
DAYS TO PL SCR CHECKPOINT
OCT 2026
DAYS TO UEFA RATIO FREEZE
31 DEC · CALENDAR 2026

The Six Regulations — Pass / Fail / Room Left

PL PSR (final cycle)
Passed · Est.
EST USAGE: ~£0 of the ~£61m promoted-club allowance (£105m less £22m per Championship season) — FY24 −£8.1m and FY25 −£1.1m are wiped out by an estimated strongly profitable FY26 (~£168m of PL central payments + Bellingham/Watson sale profits), before academy/infrastructure/women's deductions even start.
ROOM: est. £70m+ unused · cycle ended 30 Jun 2026; accounts feed the final-ever assessment Jan 2027, then the rule retires.
UEFA SCR
First Test · 2026
NOW: vs the 70% limit — Sunderland's first ever UEFA cost test, triggered by Europa League qualification.
CONTEXT: no settlement, no fines, no history — unlike four English peers fined by the CFCB in July 2026.
ROOM: of cost/yr before the line · calendar year freezes 31 Dec 2026.
FER
First Cycle · Comfortable
LIMIT: max UEFA-basis loss ~£52m (€60m) over 3 years. EST: Sunderland's aggregate is in surplus — small Championship losses followed by a profitable PL season, with no intra-group tricks needing adjustment.
ROOM: effectively the full allowance · first CFCB review of a Sunderland submission lands 2027.
PL SCR
Not Yet Tested
PROJECTED: vs the 70% green line (red at 100%) — as a club in Europe, Sunderland get the 70% cap, not the 85% the non-European clubs enjoy · season basis.
ROOM: of cost/yr · first checkpoint Oct 2026, assessment 1 Mar 2027 · 2026/27 is a transition year (levies bite from 2027/28).
List A Homegrown Quota
~22 of 25 · Est.
RULE: a full 25-name List A needs 8 locally-trained players (max 4 of them association-trained). Every one missing shrinks the list.
COUNT: on this tracker's reading ≈5 of 8 quota places filled (Patterson club-trained; Ballard, O'Nien, Alese, Mundle association-trained). Neil and Cirkin — both homegrown — left this summer. Hume (Linfield) and the French/Dutch/Belgian core don't count. Rigg is U21 → List B, no A spot needed.
ROOM: window fee balance (fees committed: of sale credit) · a homegrown signing (a Methalie doesn't help the quota; a British buy would) adds a name AND a slot. List due ~2 Sep.
Loan Quotas (In · Senior)
2 + 6 Left
DOMESTIC (English clubs): 2 of 2 concurrent slots free — Guiu went back to Chelsea and Geertruida's loan ended, so the book is clean · season cap of 4 · never more than 1 from the same club at a time · max 1 GK between PL clubs.
INTERNATIONAL (FIFA): 6 of 6 SENIOR remaining — counts only over-21, non-club-trained players; U21 & club-trained loans are exempt entirely · max 3 from any single club.
ROOM: full flexibility — a late-window loan (the Guiu route, repeated) is available if the Methalie and Poku pursuits stall.

Quick Answers — Sunderland's Finances in Plain English

Are Sunderland in trouble with FFP in 2026?

No. On every published number and every estimate on this tracker, Sunderland closed the final PSR cycle (2023/24–2025/26) with tens of millions of headroom, have never been charged under PSR or FFP, and enter the new squad-cost era at roughly 58% against a 70% cap. The pressure points are structural, not disciplinary: the UEFA homegrown quota and the SSR liquidity tests that watch promoted-club finances.

What is Sunderland's squad cost ratio right now?

Roughly 69% of football revenue on this tracker's estimates, against the 70% limit that applies to clubs in Europe. UEFA tests calendar year 2026 (freezing 31 December) — Sunderland's first ever UEFA cost test; the Premier League tests the 2026/27 season with an October checkpoint. Both use the same cost base: player and head-coach wages + transfer amortisation + agent fees.

Did Sunderland pass the Premier League's PSR?

On this tracker's estimates, comfortably. The promoted-club limit was ~£61m (£105m minus £22m for each of the two Championship seasons in the cycle); Sunderland's aggregate combines a −£8.1m FY24, a −£1.1m FY25 and an estimated strongly profitable FY26 built on ~£168m of Premier League central payments and the Bellingham and Watson sale profits. Formal confirmation follows the accounts submission, with the final-ever assessment in January 2027.

Why did Sunderland sell Eliezer Mayenda?

Minutes, mostly — he struggled for starts under Le Bris in 2025/26. But the accounting made it easy: his 2023 fee from Sochaux was small and largely amortised, so the ~£17m from Rennes (up to ~£22m with add-ons, the third-biggest sale in club history) lands almost entirely as profit, feeding the SCR denominator and the earnings tests in the very first year Sunderland face them.

Can Sunderland register a full 25-man Europa League squad?

Probably not. UEFA's List A needs 8 locally-trained players for the full 25, and after Dan Neil (Rangers, free) and Dennis Cirkin (released) left, this tracker counts only ~5 who qualify. The first list since 1973 therefore caps out around 22 names — Chris Rigg mercifully doesn't need a spot (U21s with two years at the club go on the unlimited List B). A homegrown signing before ~2 September would add both a player and a slot.

How much can Sunderland spend this summer?

More than they intend to. The binding rule is the 70% squad cost ratio, and on this tracker's model there is roughly £26m/yr of cost headroom — call it ~£130m of fees on five-year deals. The real constraints are self-imposed: quality-over-quantity recruitment under Florent Ghisolfi, and the SSR-era prudence that got the club promoted with a near-break-even P&L. The Methalie and Poku pursuits (~£47m combined) fit inside the model several times over.

The whole thing in two sentences: Sunderland arrive in Europe with the cleanest compliance sheet in the Premier League — no charges, no settlement, an estimated ~£70m of unused PSR allowance and a ratio a dozen points under the wall. The genuine constraints for 2026/27 are the homegrown quota on the first UEFA squad list since 1973 and keeping wage growth honest as £17m+ of window sale profits and a cost swing feed the machine; the detail lives in the other tabs.

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. A deliberately quiet window after 2025's record £150m+ splurge: Florent Ghisolfi's first solo summer as sporting director is quality-over-quantity. Fees per media reports; deals at talks stage are flagged.

Summer 2026 — Out

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

Summer 2026 — In

PlayerFromFee £mWage £k/wkSCR cost £m/yrStatus
Fees Out (sales)
Confirmed + advanced permanent deals
Fees Committed (buys)
Confirmed + advanced permanent deals
Net Window Balance
No registration gate applies to Sunderland — this is pure trading surplus
Annual Cost Freed (outs)
Wages + stopped amortisation leaving both SCR numerators
Annual Cost Added (ins)
Fee÷5 amortisation + wages + ~10% agent fee
Net SCR Swing
Change to the annual squad-cost numerator from this window
How the columns map to the rules: SCR cost / Cost freed hits the numerator of BOTH the UEFA 70% and PL 70% ratios (identical cost base, different clocks) · Profit feeds the FER earnings calculation AND both SCR denominators · Fee moves the window trading balance. Wages are estimates.
The window in one line: one sale that's nearly all profit, one free-transfer veteran in, a queue of expiring contracts out — and now a trio of agreed fringe exits (Masuaku, Hjelde, Ba) clearing wages for undisclosed fees. Mayenda's largely-amortised 2023 fee means the Rennes money converts almost entirely to accounting profit — booked instantly into the SCR denominator and the earnings tests. The expiring-contract exits (Neil, Cirkin, Traoré, Huggins & co) free wages but bank nothing: the bean counter's quiet regret of letting homegrown players run down to frees is covered on the A List tab. The three agreed deals stay at advanced, fees undisclosed, until the clubs announce.

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

PlayerFromFee £mWindow

2025/26 Season — Out

PlayerToFee £mWindow
2025/26 was the opposite of this summer: £150m+ gross on 14 signings — more than any club outside the traditional Big Six and roughly double the previous club record for one window — funded by promotion, ~£168m of PL central payments, the club-record W88 shirt deal and the Bellingham/Watson sale profits. It bought a 7th-place finish and the first European qualification since 1973. The amortisation bill for it (~£30m+/yr) is now baked into every season to 2030 — see the Squad tab's runway chart.

Spending Headroom

"Room" means two things for Sunderland in 2026/27: the UEFA 69% ratio (calendar year — the club's first ever test) and the PL SCR, which for clubs in Europe is ALSO capped at 70% (season basis, red threshold 100%). There is no settlement gate and no registration restriction — that's what a clean record buys. The model below is adjustable — the defaults are my estimates, so put your own numbers in.

Window trading balance — the raw fee picture

Sales banked
Mayenda to Rennes (€20m guaranteed; add-ons excluded until earned)
Committed on signings
Meunier arrived free — £0 in fees committed so far
Window surplus available
Fee surplus before this window even touches the transfer kitty — no sell-on deductions reported on Mayenda
Committed but deferred: the 2025 splurge was structured with heavy add-ons — roughly £20m of contingent extras across Xhaka (£4.3m), Brobbey (~£4.3m), Talbi (~£3.5m), Sadiki (£2.5m), Mukiele (£2.5m), Roefs (~£2.6m) and Alderete (£0.9m), most tied to appearances, survival (already triggered) and European qualification (now triggered by the Europa League). As clauses land they capitalise into book values and amortise over the remaining contracts. Bean counters call this "buy now, count later" — and the Europa League just made a chunk of it payable.

The Fined Four — What Sunderland Just Avoided

Four English clubs were fined in UEFA's July 2026 CFCB decisions. Sunderland walk into the same rulebook with none of this baggage — the table below is the cautionary tale, not the club's own record.

Club2026 FineSuspendedBreachSettlementExit Route
Aston Villa£19.4m£12.9mSCR 2025 ("significant") · 2nd straight4-yr to 2028/29 · £9.5m paid 2025 · trend formally ENDORSED£144m of player-sale profits + record Visit Rwanda deal — selling the squad's appreciation
Chelsea£2.6mSCR · repeat4-yr · £26.7m paid, up to £51m conditionalAcademy sales (pure profit) + intra-group hotel sales the PL accepted — and now the Rogers/Garnacho tightrope
Newcastle£2.6m + £8.6mBOTH SCR and FER — the doubleObligations continue despite missing EuropeIsak to Liverpool for £125m — one sale to rule the FY25 accounts
Nottingham Forest£2.2mSCRAnderson to City for £116m weeks later — fine dwarfed 53:1 by one transfer
The pattern across all four: every exit route runs through selling players — the rulebook fines you in millions and lets you settle in transfers. Sunderland's lesson from the table is cheaper: keep the ratio low BEFORE UEFA is watching, because the CFCB's first impression of a club is the 2026 number now being built.
Why Sunderland's first UEFA test should be comfortable: the denominator did the work already. Promotion multiplied revenue roughly 4.5× (£40.3m → ~£185m est) while the 2025 recruitment, though enormous by club standards, was amortisation-led: £150m+ of fees adds ~£30m/yr of cost, not £150m. Add ~£168m of PL central payments, Europa League prize money (£3.7m base plus performance fees), the record W88 commercial year and the Mayenda/Bellingham/Watson trading profits, and the cost base has to nearly double from here before 70% is threatened. The realistic risk isn't the ratio — it's letting European-season wage inflation compound faster than revenue in 2027 and beyond.

Annual constraint — squad cost ratio model

Squad cost = player & coach wages + transfer amortisation + agent fees. Denominator = football revenue + player-trading profit (3-yr average, per UEFA's smoothing). Edit any figure:

UEFA SCR · limit 70%
limit 70%
PL SCR (in Europe) · green 70% · red 100%
green 70%

What-if: add a signing

Added annual squad cost
amortisation (incl. 4% PL levy) + wages + est. agent fee
UEFA ratio after signing
vs 70% limit
Window balance after fee
Trading surplus left after the fee — informational, not a gate
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 practical shape of the remaining window is roughly — far beyond what the club's stated quality-over-quantity plans need. The discipline is self-imposed: Sunderland got here by keeping costs below the model's ceiling, not at it.
Caveats: the revenue projection assumes a full PL season (~£168m of central payments was the 25/26 figure), Europa League league-phase money (£3.7m base + per-match performance fees + a top-coefficient English TV share), higher matchday on eight extra European home dates, and a 26/27 front-of-shirt deal that — as of late July — is still unsigned after the gambling ban ended the W88 arrangement. The wages figure is the SCR-relevant slice (players + head coach) of a total staff bill estimated near £95–100m with European bonuses; loan players count fully through their wages. Amortisation reflects the £150m+ of 2025 fees plus triggered add-ons, capped at 5 years per deal. UEFA's precise adjustments (which income lines qualify, FX, the 3-year player-profit averaging) mean the true ratio will differ — treat this as a planning tool, not a compliance calculation. All wage figures are third-party estimates (Capology/Spotrac cross-checks), not official.

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 every rule: window balance, UEFA 70%, PL SCR (also 70% for clubs in Europe) and booked profit. Uses the same base assumptions as the Headroom tab, so tweaks there flow through here. Le Bris wants "another three or four" additions before the season starts; Ghisolfi's reported reshuffle maths runs to ~£77m across ins and outs.

Incoming rumours

Outgoing rumours

List A balance
Δ annual squad cost
UEFA SCR
PL SCR
Profit booked (FER)
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 both SCR numerators and eats window surplus. An outgoing deal does the opposite three times over — fee into the trading balance, wages + remaining amortisation out of the numerator, and the profit (fee − book value) into the earnings tests and the SCR denominator. That's why an Isidor-sized sale funds a Methalie-sized signing with change in compliance terms, whatever it costs in football terms. For Sunderland none of these are gates — just the shape of a well-run window.

Squad · Book Value & Amortisation

Senior squad after this summer's confirmed/advanced exits. Book value is computed live: straight-line amortisation of the reported fee from signing date to current contract end (extensions re-spread the remaining value — this is the standard treatment). Wages are Capology-reported figures (cross-checked Jul 2026 vs bet365/GiveMeSport/SalaryLeaks) — still estimates, 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. Chris Rigg is the textbook case: academy product, £0 book value, every pound of any sale is pure profit. Trai Hume (a six-figure fee from Linfield in 2022, long amortised) is nearly the same. These are the bean counter's favourite players and the football department's nightmare. Market values are Transfermarkt-style estimates — except Isidor (~£25m) and Adingra (~£18.5m), which lean on the reported figures from live talks per the Rumour Mill. Not listed individually: the U21/academy crop and development loanees — collectively immaterial to the amortisation picture but pure profit if ever sold. Free transfers & academy players carry £0 book value (that's why selling them is pure PSR/FER-style 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. Wages are third-party estimates triangulated across Capology, Spotrac, TransferFeed (€) and local contract reporting (Sunderland Echo/Shields Gazette), using the majority figure where they diverge — new-signing wages are estimates until the databases catch up. Amortisation shown on remaining contract; UEFA and the PL both cap the amortisation schedule for new deals at 5 years even on longer contracts.
Squad Book Value
Sum of estimated carrying values
Annual Amortisation
Current squad only. FY25 club-wide charge was £10.4m — the 2025 splurge multiplies it roughly threefold from FY26
Est. Squad Wages
Estimated senior squad only. FY25 total club wage bill: £53.8m incl. promotion bonuses; FY26 est. £95–100m
The Adingra problem — why recent signings sell for relief, not profit: Simon Adingra cost ~£21m in August 2025 on a five-year deal, spent the second half of 25/26 on loan at Monaco, and is now expected to leave. One year in, his book value is still ~£17m — so even a sale at the reported ~£18.5m bracket books barely £1–2m of profit. Compare Mayenda: a small 2023 fee, mostly amortised, so his ~£17m sale is nearly ALL profit. Same headline fee, completely different compliance outcome. That asymmetry is why the exits Ghisolfi actually banks profit on are the old, cheap and homegrown — and why Wilson Isidor (£4.5m in Jan 2025, book ~£3m) is quietly the most valuable chip on the table: West Ham and Hull came asking this week, a £10m-plus bid was rejected and the club's stance per Sky is NOT for sale — but at ~£25m a sale would still book ~£22m of near-pure profit if the stance ever softens.

Amortisation Runway — What's Already Committed

Transfer-fee amortisation locked into future seasons from today's contracts (straight-line on remaining book value), plus the pending Methalie deal IF it completes at the reported ask. This is spending that's already eaten before Sunderland buy anyone else.

Assumes current contracts run to term (sales remove their bars; extensions re-spread them). Amber = Methalie at the reported ~£25.7m ask over a 5-year deal — in talks, not committed; it disappears if the deal dies. Add-on clauses triggering on 2025 signings would nudge the blue bars up further.

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 Trai Hume does not qualify despite arriving at 19: two entire seasons before the window shut, where three were needed.

Sunderland spent a promotion window abroad, and the registration bill is now visible. 20 of the 25 places are used with three unused — but at 5 homegrown and 15 non-homegrown only one of those three can be filled, and the squad caps at 23. Xhaka, Mukiele, Meunier, Le Fée, Diarra, Sadiki, Brobbey, Isidor, Alderete and Reinildo all arrived from outside England, and each one took a place on the ceiling. Chris Rigg is the answer the club already has: club-trained, under 21, outside the list this season, and bringing a homegrown place with him the moment he ages in.

UEFA List A — 2026/27 Europa League

Sunderland's first UEFA squad list since the 1973/74 Cup Winners' Cup. Due ~2 September (the day after the window shuts), max 25 names — but only if 8 are locally trained. On this tracker's count the club has ~5, so the working assumption is a list of ~22. Everything below is a projection from the current squad, not an official list.

Building The List · Position By Position

Each position: who has left since the 7th-place season ended, who stays, and who might fill a hole — with deal status. Only advanced deals are classed in/out — loose links stay dimmed or in the Rumour Mill. HG marks players this tracker counts toward the 8-place locally-trained quota.

Goalkeepers

Out · 1
Anthony PattersonGONE · WREXHAM · £8m
Retained · 2
Robin RoefsTHE No.1 · BREAKOUT SEASON
Melker EllborgJAN 26 SIGNING · EL EXPERIENCE AT MALMÖ
In · 0
Position closed
NET: sorted — and Patterson is quietly one of the most important names on the whole list: the only senior club-trained player, filling a quota category nobody else can.

Defenders

Out · 5
Dennis CirkinRELEASED · A HOMEGROWN SLOT WALKS OUT FREE
Niall HugginsRELEASED · ANOTHER HG GONE
Lutsharel GeertruidaLOAN ENDED · BACK TO FEYENOORD... VIA LEIPZIG
Arthur MasuakuKONYASPOR · AGREED — MEDICAL MON 10 AUG
Leo HjeldeKV MECHELEN · AGREED — SELL-ON KEPT (DEV SQUAD)
Retained · 8
Trai HumeSTAYS · Linfield ≠ homegrown, sadly
Dan BallardHG · ARSENAL ACADEMY = ASSOCIATION-TRAINED
Omar AldereteSTAYS
Nordi MukieleSTAYS
Luke O'NienHG · CAPTAINCY & QUOTA VALUE
Reinildo MandavaSTAYS
Jenson SeeltEXIT MOOTED FOR GAME TIME
Aji AleseHG · EXIT MOOTED — QUOTA COST IF SOLD
In · 1 (+ target)
Thomas MeunierSIGNED · FREE FROM LILLE · 2-YR DEAL
Dayann MethalieTALKS — TERMS AGREED, FEE NOT (£21.4m OFFERED, £25.7m ASK)
NET: Meunier replaces Geertruida on the right; the left side is now a genuine hole — Cirkin released, Masuaku's Konyaspor move agreed (medical Monday) and Hjelde's Mechelen deal done bar the announcement, which is exactly why the Methalie pursuit (with Doig as fallback) is the window's priority. The quota accounting stays brutal: Cirkin and Huggins leaving on frees removed two homegrown names, and selling Alese would remove a third.

Midfielders

Out · 3
Dan NeilRANGERS · FREE — 18 YEARS AT THE CLUB, £0 BANKED
Harrison JonesRELEASED
Abdoullah BaPETERBOROUGH · AGREED (U21s SINCE 2024)
Retained · 5
Granit XhakaCAPTAIN · THE SIGNING THAT CHANGED EVERYTHING
Habib DiarraCLUB-RECORD £30m MAN
Noah SadikiSTAYS
Enzo Le FéeSTAYS
Chris RiggLIST B — U21 + 2YRS AT CLUB · NEEDS NO A SPOT
In · 0
Engine room settled
NET: the strongest unit — but Neil's free exit stings twice: a boyhood homegrown midfielder AND a quota slot, gone for nothing. Rigg on List B is the quota's one free lunch.

Forwards

Out · 4
Eliezer MayendaRENNES · €20m (+ADD-ONS) · 3RD-BIGGEST SALE EVER
Bertrand TraoréRELEASED
Nazariy RusynRELEASED
Marc GuiuLAST WINDOW · CHELSEA LOAN RECALLED JAN 26 — NOT SUMMER-26 BUSINESS
Retained · 6
Brian BrobbeySTAYS · TOP SCORER 25/26
Wilson IsidorNOT FOR SALE — HULL £10m BID REJECTED · WEST HAM KEEN
Chemsdine TalbiSTAYS · BREAKOUT WINGER
Simon AdingraDONE · AJAX SEASON LOAN
Romaine MundleHG · SPURS ACADEMY = ASSOCIATION-TRAINED
Patrick RobertsSQUAD-DEPTH CALL
In · 0 (+ target)
Ernest PokuTARGET — ~£21.4m ASK · FOREST ALSO IN · NOT ADVANCED
Folarin BalogunAGENT TALKS — MONACO WANT ~£40m · RUMOUR MILL
NET: Mayenda's exit thins the No.9 cover behind Brobbey — one reason a winger-forward like Poku appeals. If Isidor AND Adingra both go, a forward signing stops being optional.
Quota mechanics: UEFA's List A allows 25 names only if 8 are locally trained — at least 4 club-trained (three seasons at the club aged 15–21) and the rest association-trained (three seasons at any English/Welsh club in that window). Each missing name shrinks the list by one. This tracker counts Patterson (club-trained) plus Ballard, O'Nien, Alese and Mundle (association-trained) = ~5 → a working cap of ~22. Hume doesn't count (Linfield is the Irish FA); nor do any of the 2025 imports. List B (unlimited) covers Rigg and the U21 academy crop — born 2005 or later with two uninterrupted years at the club.
The registration rule that shapes everything: nothing stops Sunderland registering signings — no settlement, no transfer-balance gate. The binding rule is arithmetic: a ~22-name list for a 40-plus-game season across four competitions. Every squad decision between now and 2 September is really a List A decision — and the cheapest fix (keeping Alese, re-signing British depth, promoting from the academy) is also the most quota-efficient.

Sanction Tracker — The Clean Sheet

The SCR Glidepath — How Promotion Fixed The Ratio

100% 90% 80% 70% 60% 70% (NOT YET APPLICABLE) 70% LIMIT — LIVE FROM 2026 FY2024FY2025FY2026 est26/27 proj ~80% · Championship ~81% · promo bonus yr ~59% · PL revenue ~58% · first test
All Sunderland points are this tracker's estimates ((wages + amortisation + est. agent fees) ÷ (revenue + player-trading profit)) — no ratio rule applied to the club before 2026, and UEFA does not publish club ratios. The story the line tells: Championship-era numbers would have failed a test nobody was running; promotion quadrupled the denominator and fixed it overnight.
The full FFP history · 1973–2023

Nothing to declare

Sunderland have never been charged under Premier League PSR, EFL P&S or UEFA FFP in any era — through two relegations, the League One years and back. The disciplinary record is football-ordinary: a shared fine with Newcastle over a 2012 derby fracas, and minor FA charges (rule E20) in the 2020/21 League One season including a touchline melee at Burton and the Oxford tunnel fracas — four-figure stuff. As a League One club Sunderland loudly opposed the 2020 £2.5m salary cap (their wage bill was ~£10m); the cap was struck down by arbitration in February 2021.

2023/24 → 2024/25

The prudent route up

Back-to-back Championship campaigns with operating losses of just £8.1m and £1.1m — no parachute payments, seventh-highest revenue in the division, and a model built on young-player trading (Amad, Broja-era loans, then Clarke, Bellingham and Watson sales). While Leicester fought a PSR charge across two jurisdictions and Everton took two deductions, Sunderland's promotion was won with an effectively clean P&L. No embargoes, no business plans imposed, no deductions — ever.

29 April 2026

The one blemish: Rule L.33 sanction agreement

Sunderland accepted a breach of Premier League Rule L.33 — kick-off and re-start obligations — across 11 matches of the 25/26 season, entering a sanction agreement with the League. It's operational, not financial: the League fined Manchester City £2m for 22 late restarts and Leeds over £500k for nine in the same enforcement push, which brackets the likely cost. Annoying, cheap, and nothing to do with FFP — but it goes on the sheet, because this page counts everything.

July 2026

First UEFA licence — granted clean

Europa League qualification put Sunderland through UEFA club licensing and financial sustainability screening for the first time. No overdue payables, no monitoring conditions, no settlement — the licence for 2026/27 came with nothing attached, in the same month the CFCB fined Villa, Chelsea, Newcastle and Forest. Sunderland's first CFCB assessment (calendar-2026 SCR + first FER cycle) reports in summer 2027.

Now → summer 2027

Keeping the sheet clean

Nothing is pending, charged or under investigation on any public record this tracker can find. The watch items are structural: the 2026 SCR number now being built (est. ~58%), SSR liquidity submissions through the season, and the long-promised conversion of the Mercator shareholder loans to equity — flagged by supporters and analysts, and exactly the kind of related-party structure the new rules stare at hardest.

Last Accounts — FY2024/25 (published 17 March 2026)

The promotion season: play-off final victory at Wembley, achieved without parachute payments and with the division's costs kept at arm's length. Headline: a £1.1m operating loss. Reality: one of the cheapest promotions in modern Championship history — player trading did the balancing.

Revenue
£40.3m
+£2.1m (6%) on FY24's £38.2m — 7th in the Championship, 2nd-highest without parachutes
Operating loss
−£1.1m
£7m better than FY24's −£8.1m — trading profits absorbed the promotion push
Wage bill
£53.8m
+72% on FY24's £31.4m — includes the promotion bonus · 133% of revenue (bonus-inflated)
Player amortisation
£10.4m
Nearly tripled from £4.0m — the recruitment model maturing
Owner/related-party debt
£45m
£19.8m to Mercator (interest-free, equity conversion pledged) + £25.2m to Akira BV (interest-bearing)
Player-trading profit
est. £40m+
Bellingham → Dortmund (~£31m) & Watson → Brighton (~£10m) — estimate; the accounts bundle disposals

Revenue mix

Commercial
£15.0m
Gate receipts
£13.3m
Broadcasting
£12.0m
The 2026/27 shirt-front problem: the 25/26 front-of-shirt deal with betting operator W88 was the largest commercial agreement in club history — but it could only ever run one year, because the Premier League's front-of-shirt gambling ban begins this season. As of late July the away kit has launched without a front sponsor and Sunderland (like Forest) are still hunting a replacement — every week unsold is denominator money left on the table in the club's first SCR year. The rest of the commercial stack is set: hummel on kit, Fanatics running retail, and a Europa League campaign to sell against. FY26 (first PL season: ~£168m of central payments, W88, 46,000-plus crowds) reports around March 2027 and will be the most transformed set of accounts in the league.

How a promotion push cost only £1.1m

Revenue+£40.3m
Wages (incl. promotion bonus)−£53.8m
Player amortisation−£10.4m
Other operating costs → est.−£17m est.
Profit on player disposals (Bellingham, Watson et al.) → est. split+£40m est.
Operating loss (reported)−£1.1m
The whole story in one line: Sunderland sold two academy-adjacent assets (Bellingham, Watson) for roughly what the entire promotion wage bill cost, and went up with a near-break-even P&L — the exact opposite of the borrow-now-pay-later promotions that the SSR rules were written to police. The reported lines above are from the published accounts via club statement and Swiss Ramble's analysis; the italic-flagged rows are this tracker's reconciliation estimates, not audited figures.

Rules & Compliance Status

Every regime that applies to Sunderland, 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 and the Premier League's PSR (replaced by SCR + SSR from this season). Sunderland's twist: Europa League qualification means the UEFA rules apply for the first time in the club's history, and the tougher 70% domestic tier applies instead of 85%.

COMPLIANT CLOSE / UNDER SETTLEMENT NOT COMPLIANT

Compliance calendar

1 Sep 2026WINDOW CLOSES (7pm)
~2 Sep 2026EL LIST A DEADLINE
Oct 2026PL SCR MONITORING
31 Dec 2026UEFA SCR YEAR ENDS
Dec 2026FY26 ACCOUNTS TO PL (PSR FINALE)
Jan 2027FINAL-EVER PL PSR ASSESSMENT
~Early Feb 2027EL KNOCKOUT LIST WINDOW
1 Mar 2027PL SCR ASSESSMENT
~Mar 2027FY26 ACCOUNTS PUBLISH
Summer 2027FIRST CFCB VERDICT ON SUNDERLAND
7 Jul 2027SSR TESTS
Premier League · to end of 2025/26
Compliant · Est.

PSR — Profitability & Sustainability

LIMIT FOR SUNDERLAND: ~£61m over the 3-year cycle — £105m minus £22m for EACH of the two Championship seasons (FY24, FY25)
BasisClub financial years — aggregate of FY24 + FY25 + FY26. This was the final PSR cycle: it closed 30 June 2026.
What countsAggregate 3-yr pre-tax result, with deductions for infrastructure, academy (Sunderland run Category 1), community & women's football costs.
SunderlandEstimated pass with £70m+ to spare: −£8.1m (FY24) − £1.1m (FY25) + a strongly profitable FY26 (~£168m of PL central payments, Bellingham/Watson profits, W88's record commercial year) puts the raw aggregate in surplus before deductions are even claimed. Sunderland have never been charged under PSR — one of the few recently-promoted clubs to make the jump without a squeak.
DeadlineFY26 accounts submitted by 31 Dec 2026 → final-ever PSR assessment January 2027. After that the rule is retired.
UEFA · applies for the first time ever
First test · est. ~58%

SCR — Squad Cost Ratio (UEFA)

LIMIT: squad cost ≤ 70% of adjusted revenue + net player-sale profit (phased 90% → 80% → 70% for continuing UEFA clubs; Sunderland join at 70%)
BasisCalendar year — the test period is 1 Jan – 31 Dec 2026, so Sunderland's first UEFA number is already half-built from the back end of the 25/26 season. Summer business counts twice: sales cut H2 wages AND book profit inside the measurement year.
What countsPlayer + head-coach wages — including wages of loaned-in players — plus loan fees, transfer amortisation/impairment and agent fees. The PL’s 4% transfer levy and FIFA’s 5% solidarity contribution capitalise into registration cost and ride along inside the amortisation. On a sale it works the other way and is now modelled: the 5% is deducted from the fee, so a club selling abroad banks 95% and books its profit on that. Domestic sales are untouched. Amortisation capped at 5 years for new deals.
SunderlandEstimated ~58% — wages (~£85m SCR slice) + amortisation (~£35m) + agents (~£8m) against ~£200m of revenue plus trading profit. The Championship-era numbers would have failed this test badly; promotion quadrupled the denominator in one summer. Green with a genuine buffer, but a first-timer's caveat: UEFA's adjustments to "adjusted revenue" are untested territory for the club's accounts team.
DeadlineCalendar year freezes 31 December 2026; clubs report in spring and the first CFCB verdict on Sunderland lands summer 2027.
UEFA · "FER" — yes, that's the one
First cycle · comfortable

FER — Football Earnings Rule

LIMIT: ~£52m (€60m) max loss over 3 years · +~£8.6m/yr more if in "good financial health"
BasisFinancial years — the 3-year aggregate of the club's own accounting periods, assessed annually by the CFCB from Sunderland's first licensed season.
What countsUEFA's PSR equivalent — but it EXCLUDES profits on asset sales to related parties, player swaps and related-party transfers, and polices related-party income at fair value. Sunderland's related-party items are on the funding side (Mercator/Akira loans), not the income side — so there's nothing for UEFA to strip out of earnings.
SunderlandThe three relevant years aggregate to an estimated surplus — small Championship losses followed by a profitable PL season. No settlement, no add-backs, no intra-group engineering: the rare English club whose PL and UEFA numbers are the same numbers.
DeadlineFirst assessment uses accounts through FY26, reviewed summer 2027.
Premier League · live from 2026/27
Could be close

SCR — Squad Cost Ratio (PL)

CLUBS IN EUROPE (incl. Sunderland): green 70% · red 100% — CLUBS NOT IN EUROPE: green 85% · red 115% · +£33m/3yr equity top-up (max £15m/season)
BasisSeason / financial year (2026/27) — unlike UEFA's calendar-year clock. A January signing therefore hits the PL calculation for this season but splits across two UEFA years.
What countsSame cost base as UEFA's version, and the denominator explicitly includes net profit/loss on player sales. Two-tier enforcement: over green but under red = fine (levies only payable for breaches from 2027/28); over red = risk of sporting sanctions. The intra-group asset-sale loophole that lived under PSR is explicitly closed — academic for Sunderland, who never used it.
SunderlandAs a Europa League club, Sunderland's domestic green threshold is 70%, not the 85% enjoyed by the eleven clubs outside Europe — European qualification is literally a 15-point spending haircut. The 2026/27 projection (~58% on the model defaults) clears it with a dozen points of margin, but the rule is new, the club is newly European, and the first test hasn't happened — hence amber, not green. Note the RATCHET: breach the green line one season and the next season's red threshold drops by the same amount, earned back at 10%/season of full compliance.
DeadlineMonitoring checkpoint October 2026; formal assessment 1 March 2027, after the January window. Levies for breaches only bite from 2027/28 — 2026/27 is a transition year.
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; the £85m stress test models relegation or missing Europe. Owner equity injections count in a club's favour.
SunderlandThe structural watch item. Kyril Louis-Dreyfus's Mercator vehicle holds £19.8m of interest-free debt with equity conversion long pledged but not yet executed, alongside £25.2m of interest-bearing debt to Akira BV — a Louis-Dreyfus-linked lender. Accounts are going-concern with owner support; the promotion-era £8.2m overdraft was cleared. But SSR's whole design is to ask "what if the music stops?" of exactly this kind of promoted-club balance sheet — converting the Mercator debt would answer it emphatically.
DeadlineIn-season submissions through 2026/27; first full tests 7 July 2027.
UEFA squad list · Art. 32 & Annex VIII
~22 of 25 · est.

List A homegrown quota

CONDITION: 25 names max — but 8 must be locally trained (min 4 club-trained; max 4 association-trained count toward the 8). Each missing homegrown name cuts the list by one.
BasisClub-trained: three seasons/30 months at the club between ages 15–21. Association-trained: the same at any club in the same association (England/Wales). U21 players with two uninterrupted years at the club go on List B, which is unlimited and doesn't consume A spots.
SunderlandThe binding UEFA constraint. This tracker counts ONE senior club-trained player (Patterson) and four association-trained (Ballard, O'Nien, Alese, Mundle) = ~5 of 8 → a working List A of ~22. The summer made it worse for nothing: Neil (18 years at the club) and Cirkin, both homegrown, left as frees. Hume's Linfield years count for the IFA, not the FA. Rigg and the academy crop ride List B — the quota's one mercy.
DeadlineEL league-phase List A due ~2 September 2026 (day after the window shuts); limited changes permitted in the knockout registration window closing early February 2027.
UEFA Annex G.3.5 + PL FMV protocols
Not applicable — yet

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 the same/similar payment obligations, deadlines or dates · recognised value = the LOWER of the fee and residual book value
What countsSubstance over form, not a fixed day-count — deals weeks apart can be linked (Newcastle's Anderson sale was tied to the Vlachodimos purchase, wiping £30m+ off their UEFA trading profit; Villa and Chelsea walked the tightrope with the Rogers/Garnacho structure this month). For academy players the book value is £0, so an exchange kills the profit entirely; under IAS 38, if fair value can't be measured, NO profit can be recognised. The PL runs its own fair-market-value assessment protocols for player registrations (Handbook, App 19).
SunderlandNow that Sunderland are a UEFA-licensed club whose model leans on player-trading profit, this rule applies to them for the first time. Nothing current is close to it — the Mayenda sale and any Rennes traffic are one-directional — but it's the rule to remember if a future window ever pairs a big sale with a signing from the same club. Green, with a tripwire attached.
ConsequenceGet it wrong and booked profit is slashed to the lower of fee and book value — for an academy sale, to zero. For a trading-model club that would be the most expensive accounting entry imaginable.
Terminology · where "FFP" went

FFP → what it means now

"Financial Fair Play" (2010) was rebranded by UEFA in 2022 as Financial Sustainability Regulations: solvency (no overdue payables) + stability (FER) + cost control (SCR). Domestically, the PL's version was PSR (2013), replaced by SCR + SSR from 2026/27. So when someone asks whether Sunderland have an "FFP problem", the precise answer is: no rule, on either clock, on any estimate — the club's exposure is to the quota and liquidity mechanics, not the spending caps.
Accounting mechanics

Amortisation & "pure profit"

Fees spread over the contract (max 5 years); sale profit = fee received − remaining book value − any sell-on shares owed, booked instantly. Academy products (Bellingham ~£31m, Watson ~£10m, Rigg if it ever happened) and long-amortised signings (Mayenda) are ~100% profit; recent big buys are the opposite — Adingra at ~£21m one year into five carries ~£17m of book value, so even a £18.5m sale banks almost nothing. Buying works the other way: Diarra at £30m adds only ~£6m/yr of cost. That asymmetry — sell old and homegrown, buy amortised — is the entire logic of the Sunderland model.

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 27 Jul — 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-settlement and fined twice by UEFA (£19.4m in July, 2/3 suspended), but the trend was formally endorsed — the £117m British-record Rogers sale is the exit route.
LiverpoolCL70%~614~386~63%Iraola officially appointed (4 Jun, 2-yr deal) after Slot was sacked a year on from the title. FY25 wages inflated by title bonuses after £241m on Isak (£125m) & Wirtz. Squad cost £545m, big denominator.
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%40*54*133%*The subject of this tracker. *Latest FILED accounts are the FY25 Championship promotion season (£40.3m rev, £53.8m wages incl. promotion bonus — hence the scary W/R). The first PL season (FY26: ~£185m rev, ~£95m wages est → ~51%) reports spring 2027. Europe four seasons after League One. See every other tab.
Crystal PalaceEUROPA · CONF WINNERS70%~190~135~71%Conference League winners — then Glasner officially departed for Forest. Second straight European season keeps them on the 70% cap, right on the line like Villa.
BrightonCONFERENCE70%~222~165~74%FY25 costs rose sharply on amortisation; historically balanced by elite player trading profits.
Chelsea85%~541~360~67%Xabi Alonso era. UEFA settlement (£26.7m paid, up to £51m conditional), fined again Jul 2026 — then broke their record for Rogers (£117m) days after loaning Garnacho to Villa, walking the swap-rule tightrope. League-high £212m amortisation; missing Europe eases the cap to 85%.
Newcastle85%~350~220~63%Fined Jul 2026 for BOTH SCR and FER breaches; FY25 leaned on selling Isak to Liverpool for £125m. Settlement obligations continue despite missing Europe.
Tottenham85%~526~222~42%Lowest wage ratio among the big-revenue clubs — the league's most comfortable bean-counting position.
Nottingham Forest85%~190~155~82%Fined £2.2m in Jul 2026 — then banked £116m selling Anderson to City, transforming the FER/PSR picture overnight. Glasner confirmed as head coach 6 Jul (reported club-record ~£13m/yr salary) — their FIFTH boss in 12 months.
Everton85%~187~160~86%Two PSR deductions in 23/24; new stadium revenue is the plan for growing under the 85% cap.
Fulham85%~180~145~81%Small-revenue cohort where 85% barely funds a competitive XI — the other side of the SCR squeeze.
Brentford85%~195~125~64%The sustainability model club — comfortable margin on every metric.
Leeds85%~150*~110*~73%*FY25 = promotion season. Second PL season consolidating.
CoventryPROMOTED · CHAMPIONS85%~45*~35*~78%*Championship-era accounts. PL broadcast money transforms the denominator overnight — big headroom if they spend sensibly.
IpswichPROMOTED85%~145*~115*~79%*FY25 reflects their last PL season. Straight back up at the first attempt.
HullPROMOTED · PLAY-OFFS85%~30*~28*~93%*Championship accounts. The biggest financial step-up in the division — SSR liquidity tests bite hardest here. In: Butland, ex-Villa Targett, Zambrano & Morita.
The tier divide is the story of 2026/27: nine clubs in Europe live at 70/100 while eleven live at 85/115 — meaning Chelsea, Newcastle, Spurs and Forest all get 15 points MORE domestic spending headroom than Sunderland precisely because they failed to qualify. Success is a spending haircut: Sunderland and Bournemouth's first European seasons drag them onto the tight cap while their revenues are still catching up. Sunderland's saving grace is arithmetic — a promoted-club cost base against Premier League + European revenue leaves the 70% line far away regardless of tier.
Sources: Deloitte Annual Review (league totals), club accounts via Swiss Ramble/Maguire analyses, UEFA CFCB statements. ~ figures are estimates; * marks accounts from a different division. Every club has its own page with the full treatment — transfers, book values, A-list, headroom — via the menu at the top.

Who's Selling to Survive — Net Transfer Balance

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

THIS WINDOW: disclosed fees on officially completed 2026 deals only; undisclosed counted £0, loans & frees excluded; the Garnacho £42.5m is next season's Chelsea spend. LAST 5 YEARS: net spend 2021/22–2025/26, Transfermarkt basis (€ converted), ~ = estimated. Sunderland's two views tell the arc in miniature: five years of promotion investment (~£140m net, most of it the 2025 splurge) — and this window, sales-positive off one Mayenda deal with nothing spent. The £150m bet bought the revenue base; now the revenue base pays for the squad.

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 Sunderland just put a foot in it.

Why it feels closed — because it mostly is

The 70% rule is a percentage of revenue — so it doesn't cap spending, it caps spending relative to income. City's 70% of ~£715m buys a ~£500m squad; Sunderland's 70% of ~£200m buys ~£140m. The gap is locked in by design. And the FER kills 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: Villa's exit route was selling Rogers to Chelsea; Forest's was selling Anderson to City. The fined feed the rich — and one day the phone call comes for Rigg.

The cracks in the door

1 · Grow the denominator. Every £1 of new revenue is 70p of new squad allowance — which is why the unsold 26/27 shirt front, the 46,000-plus Stadium of Light crowds and every Europa League round matter as much as any signing. Compliant growth means revenue first, squad second. 2 · The trading engine. Net transfer profit counts IN the denominator and in the earnings tests — selling well literally raises your cap. Brighton have run this loop for a decade; Sunderland's version (Amad → Clarke → Bellingham → Watson → Mayenda, with Rigg the crown jewel unspent) is already running. 3 · Efficiency is legal. Xhaka at £13m, Reinildo and Meunier free, promotion on a £1.1m loss, 7th place on a promoted budget — the five-year table above shows Sunderland reached Europe on the league's smaller half of net spends. 4 · The rich can now fail permanently. United's £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 — which flattens the field for whoever buys well.

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 (prize money, sponsors, stadium), sell your stars for compliance fuel, and let revenue compound until the 70% of it rivals theirs. It takes a decade, it charges admission (usually your best player), and the turnstile admits roughly one club per cycle. Sunderland are at step one, and unusually well-placed for it: League One to the Europa League in four seasons, the cleanest compliance sheet in the division, a young squad whose book value is a fraction of its market value, and 46,000 season-ticket-shaped reasons the revenue keeps compounding. The door isn't closed. It's just been redesigned so that only the well-run can fit through — and on the published numbers, few clubs in England are run this well for their size.

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

Milan Aleksic’s loan to Partizan Belgrade added OFFICIAL

A young midfielder to Serbia for the season, missing from the outgoings until now. 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.

The ratio goes to 69.1% — still under the 70% line that applies in Europe, with about £2.1m/yr of room, which on a promoted club’s projected wage bill is not much of a cushion.

3 Sept 2026

Danso and Angulo signed — and the Balogun card was pointing at the wrong club OFFICIAL

Kevin Danso arrives on a season loan with a £2.5m loan fee and a £22.5m obligation to buy next summer. This year it costs the wage and the loan fee, with no amortisation at all, because Tottenham keep writing down the £21m they paid Lens. That is a deferral, not a saving: from next summer this squad carries £22.5m of new fee, roughly £4.7m a year of amortisation, in a season with no parachute behind it. An obligation is a liability — a reader looking at this club’s headroom should treat next summer’s number as already spent.

Juan Riquelme Angulo, 18, from Independiente del Valle for £5m, five years — his league’s player of the month, tracked by Barcelona and Manchester United. About £2.8m/yr all in, and at 18 he is U21 for 2026/27 and outside the 25 either way.

The Balogun card was on the wrong page. It sat here as a January target from Monaco at £40m with “several PL clubs in the conversation”. The club was Everton, the deal was live on deadline day, and it collapsed at 11pm when the player declined to sign. The card is dead and says so. Getting the interested club wrong is the same failure this site logged on Trafford and Fofana, and it is recorded rather than quietly deleted.

The Fofana row was checked and left alone. Sky headlined the completed deal at £30.8m; this page carries £25.7m guaranteed plus £4.3m of add-ons, which is the same £30m package split the way this site splits every package. The row was correct and was not "corrected". Ratio 65.5% → 69.5%, a point and a half short of the 70% line.

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

Patterson’s £8m sale and Adingra’s loan were both absent CORRECTION

Anthony Patterson joined Wrexham on 11 August for £8m — their club record — and this page still had him in the goalkeeping line. He is club-trained and cost nothing, so the book value is zero and the entire £8m drops through as profit: the cleanest possible sale under a squad cost ratio. Add-ons on top are not counted.

Simon Adingra’s season loan to Ajax was missing too — a reported €3.8m (~£3.3m) loan fee with a €16m option to buy. That is the Adingra problem set out at the top of this page, now realised: a recent signing cannot be sold for profit, so the club took relief instead. The £21m from Brighton keeps writing down at ~£4.2m/yr here whatever he does in Amsterdam.

Both rows carried a stale rumour card as well — Adingra was on the board as “likely to leave, six clubs watching” after the deal was done. It has been retired.

Net effect: sales banked £17.4m → £25.4m and the ratio falls 66.4% → 65.5%, with headroom up to £10.1m against the 70% limit that applies in Europe.

2 Sept 2026

The club-record signing was missing from this page MAJOR CORRECTION

Malick Fofana joined on deadline day for £25.7m guaranteed plus £4.3m in add-ons — a £30.8m package and a club record — on a five-year contract, and this page did not have him.

It was one of the sagas of the window. Sunderland agreed terms with Lyon; Crystal Palace tried to hijack it, their new manager Pierre Sage phoning the player he had coached at Lyon; Fofana waited at Lyon airport with two private jets, one for Wearside and one for London. He came here.

What it does: about £5.3m/yr of amortisation over the five-year cap with the levy, and the ratio goes 64.1% → 66.4% against the 70% limit that applies in Europe. Headroom falls to £8.0m. Those were the figures on the day: selling Patterson to Wrexham and loaning Adingra to Ajax, both recorded on 2 September, have since taken the page to 65.5% and £10.1m. Committed spend goes £32.6m → £58.3m. Only the guaranteed money is capitalised, as everywhere else here. The wage is an estimate at £70k/wk and flagged as one.

2 Sept 2026

Two rows that stopped being true weeks ago: Ahoka was already signed, Ba never was CORRECTION

Jules Ahoka sat at ADVANCED for nine days after Sunderland had announced him. The club published the signing on safc.com on 24 August — £8.6m from Royal Antwerp, five years to 2031. This page held the row back on the 21st because the medical was still running and neither club had said anything, which was the right call that day: the Methalie scare a week earlier had shown what pre-promoting costs. But nothing came back to check. A rung that exists to be temporary became permanent by inattention, and the lesson from Methalie was about promoting too early, not about never promoting at all. He now has a squad row, so his fee finally carries book value and amortisation.

Abdoullah Ba was the opposite failure. A permanent move to Peterborough was agreed and reported on 8–9 August, and this page carried it as completing within days for three weeks. It never completed. Peterborough’s chairman said they had decided not to pursue him; Ba disputed that publicly, saying an agreement existed but his side’s requests were not met. Either way it was dead well before the deadline, and the window has shut with him still a Sunderland player.

Why it survived so long is the useful part. An outgoing deal at a £0 fee moves no headline number, so nothing on the page ever looked wrong and there was no arithmetic to trip over. The £0.4m of wage relief it claimed was the entire error. The row moves off the Outs table to the Rumour Mill as a dead card rather than being deleted — a deal that died is information, and one that vanishes quietly improves this site’s hit rate without earning it.

Ratio 63.2% → 64.1%, headroom £13.0m against the 70% limit. Most of that is Ahoka’s amortisation arriving on the books, which is what a signing is supposed to do to a ratio.

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

Ernest Poku leaves the Ins table. An asking price is not a fee; his Rumour Mill card carries the ~£21.4m ask and Forest as rivals, and the squad-list board already had him at “TARGET — NOT ADVANCED”.

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

A promotion window spent abroad, and the registration bill is now visible 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: 20 of the 25 places used, 5 homegrown and 15 non-homegrown, with 2 under-21s playing free of the list. They can name 23, not 25 — the seventeen non-homegrown ceiling runs out before the places do.

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 £0.87m, from the foreign sales of Eliezer Mayenda. That comes off booked profit, and a third of it off the denominator, because sale profit feeds the squad-cost ratio through a three-year average.

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

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

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

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

30 Aug 2026

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

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

Which is where the second problem was. The swing is derived from the deal arrays and was therefore right the moment the gross-up landed — but the same figure is also typed into the overview callout, and typed figures do not move. 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.

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 22 August sweep, and a modeller that was wrong three ways DATA + METHOD

Methalie is signed — announced 21 August, £24m guaranteed plus £1.7m, five years. The guaranteed figure is what amortises, so the flat £25.7m this page carried was overstating the annual charge. He was also recorded twice, as an ins-table row and a rumour card. Ahoka is held at ADVANCED and not promoted, deliberately: Romano has the agreement, but the medical ran across 21–23 August and neither club has announced — and Methalie's own medical was briefly written off as a collapse a week earlier. His contract length is not reported and is left blank rather than assumed. Masuaku and Hjelde are both confirmed by the club and move to done.

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: £35m → £41m INPUT CORRECTION

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

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

15 Aug 2026

Balogun field widens RUMOUR UPDATED

Folarin Balogun. Several Premier League clubs are now reported discussing a move to bring him back to England, Sunderland among them — which strengthens the seller and weakens every buyer. Nothing else moved on a quiet 48 hours; all deals re-checked 15 Aug.

09 Aug 2026

Weekend sweep — three fringe exits agreed, the Xhaka saga resolved, Isidor declared not for sale, and a striker race joins the mill

Three new outgoing deals, all at advanced, none announced. Arthur Masuaku is due in Türkiye on Monday for a Konyaspor medical (Aris also asked); Leo Hjelde has a four-year KV Mechelen deal agreed with a sell-on retained, per Belgian and local reporting on 7–8 August; and Abdoullah Ba — in the U21s since 2024 — has a permanent Peterborough move agreed and completing within days. All three fees are undisclosed, so this page books £0 rather than inventing numbers: the +£17.4m window balance does not move, and because none of the three carries meaningful book value the amortisation line doesn't either — this is roughly £2.7m/yr of wages leaving the SCR numerator once the deals are announced. Masuaku leaves the squad table under its stated confirmed-or-advanced rule; none of the three rows is done until a club says so.

The Xhaka mystery from the 5 August pass is solved — and closed. The cross-page link was real all along: Chelsea made a bid reported at ~£8m (The Guardian), Sunderland rejected it immediately, and Le Bris went on the record — "No, this topic is closed". The Rumour Mill entry stays visible with the resolution recorded, flagged again for the Sunderland–Chelsea reconciliation, but it is treated as dead unless Chelsea return late in the window. Isidor moved the same direction: Sky report the club have told suitors he is not for sale, a £10m-plus bid from Hull was rejected, and West Ham lead what interest remains — the stale Everton/Forest framing is gone.

The pursuits, re-verified. Methalie stays at talks: Toulouse president Cloarec confirmed negotiations but no agreement, the ask still ~£25.7m against Sunderland's improved ~£21.4m-plus, a ~£25m package reportedly under discussion, terms long agreed — with Sassuolo's Josh Doig the reported fallback. Poku stays at talks with sharper edges: Leverkusen want a quick sale and Nottingham Forest are in the race; a lone aggregator claim of an agreed deal could not be corroborated anywhere credible and was ignored. Adingra's watchers now number six (Roma, Leipzig, Ipswich, Hull, West Ham et al) after Monaco declined their option. New to the mill: Folarin Balogun — agent talks held, Monaco asking ~£40m, Newcastle among the rivals. Soulé and Catamo remain links without numbers firm enough to model. No headline figure moved this pass: Meunier is still the window's only signing, and every hero number stands where 5 August left it.

05 Aug 2026

Daily window check — one rumour added, no deal moved, and a stated gap in the evidence

What could not be done, first, because it changes how much weight to put on the rest. Today's pass had no working access to any external source — every football site, news aggregator and reference database this tracker normally reads was refused at the network layer, and the search allowance was already spent before the run began. So this entry cannot claim that Sunderland's window is unchanged since yesterday; it can only report that no change could be verified. Nothing has been promoted, demoted, added or removed on the strength of a guess. The window therefore still reads as it did on 4 August — one sale (Mayenda to Rennes, €20m ≈ £17.4m), one arrival (Meunier, free from Lille), seven expiring-contract exits, one loan return (Geertruida) and two unconverted pursuits (Methalie and Poku, both still in talks, neither advanced) — and every derived figure that follows from it is untouched: the +£17.4m trading balance, the squad-cost ratio, the amortisation runway, the PSR headroom and the ~22-name List A working cap all stand exactly where they stood.

What the run could do — and did. With the outside world unavailable, the check ran against the only independent evidence there was: the site's twenty other club pages, most of which were themselves brought current today. That reconciliation found no counterpart club recording a Sunderland deal this page is missing, and it re-confirmed the entries that touch other Premier League clubs — Brighton still books Adingra as sold to Sunderland in 2025 (he is a Sunderland player, correctly on the squad table and correctly only rumoured to leave), and Ipswich still books Dan Neil's January loan as expired on 30 June, with his summer move to Rangers on a free recorded on both sides.

One genuine mismatch, now closed on this side. Chelsea's page carries an incoming link for Granit Xhaka at ~£12m — an Alonso reunion with his old Leverkusen lieutenant — and this page carried nothing at all. Xhaka has been added to the Rumour Mill, which is where a link with no bid, no approach and no agreement belongs; he stays in the retained column on the A List and in the squad table, and no headline figure moves, because a rumour only counts when you tick it. The beans are worth seeing regardless: at £12m he would book ~£3.7m of profit and remove ~£10.6m/yr of squad cost, more than any other single exit available, purely because a £120k/wk captain's wage towers over what is left of his fee. Flagged for the league-wide reconciliation, since it is a Sunderland–Chelsea link and neither page can fix the other.

Standing caveats, unchanged and worth repeating on a day like this one: everything here is an unofficial estimate; "in talks" is not "agreed" and "agreed" is not "announced"; and where a fee is undisclosed this page says so rather than inventing a number. The next pass should re-run the external check on Methalie, Poku, Isidor, Adingra and now Xhaka before any of them are allowed to move a rung.

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 re-audit — rebuilt from scratch, nothing found missing

This pass deliberately did not treat the existing list as the baseline: the summer-26 ins and outs were re-derived from the ground up rather than topped up with news since the last update. Result: no deal was missing and no fee, date or status was wrong. The window stands at one sale (Mayenda to Rennes, €20m guaranteed ≈ £17.4m, early July), one arrival (Meunier, free from Lille, 2-yr deal), seven expiring-contract exits (Neil to Rangers on a free, Cirkin, Traoré, Pembélé, Rusyn, Huggins, Jones), one loan return (Geertruida back to Leipzig) and two unconverted pursuits (Methalie, Poku — both correctly still flagged in talks, not advanced and not done). Because nothing moved, no net-spend, squad-cost-ratio, PSR-headroom, book-value, amortisation or List A figure has been touched — the £17.4m in / £0 out trading balance is unchanged and matches the site-wide league dataset exactly.

Counterpart gap closed. The cross-page checker had flagged Dan Neil's January-26 loan to Ipswich as one-sided — recorded here, absent there. Ipswich's page now carries the matching entry (loan from Sunderland, Jan 26, expired 30 June), so both sides agree and the flag clears. Neil's summer-26 exit is separate and already correct: his contract expired and he joined Rangers on a free, banking £0 and taking a homegrown List A slot with him. One clarification made: Marc Guiu sat in the A-List forwards "out" column reading only "recalled in January" — he is now explicitly tagged last window, not summer-26 business, so a January loan recall can't be misread as current trading. He was never in the OUT26 array, so no total changes.

Verified, unchanged: every player named on the page was re-checked against the club he is actually at in August 2026 — squad table, both windows, the A-List board and the rumour mill. No case was found of the error class that prompted this audit (a player attributed to a club he had already left), and no previous-window transfer is presented as current business. Limitation, stated plainly: external sources — Transfermarkt, the club site, BBC, Wikipedia and the rest — were unreachable from this run, so completeness was established against the site's own nineteen other club pages and the rebuilt league dataset rather than an independent list. That cross-check catches any deal with another Premier League club; a signing from outside the league would not show up in it. Nothing was invented to fill the gap.

27 Jul 2026

Page launched

The Bean Counter's Sunderland tracker goes live at bean-counter.co.uk/sunderland. Launch dataset: the Mayenda→Rennes sale (€20m + add-ons) and Meunier free signing logged; the expiring-contract exits (Neil, Cirkin, Traoré, Huggins, Pembélé, Rusyn, Jones) recorded; squad book values computed from the 2025 window's £150m+ of fees; the first UEFA List A since 1973 modelled with the homegrown shortfall (~22-name working cap); PSR final-cycle estimate (pass, ~£70m+ headroom vs the ~£61m promoted-club limit); FY2024/25 promotion accounts digested (£40.3m revenue, £53.8m wages, −£1.1m operating loss); the SCR model seeded at ~58% vs the 70% wall; the Rule L.33 sanction agreement and the otherwise-clean sanctions history documented; live rumours (Methalie, Poku, Isidor, Adingra, Brobbey, Seelt) wired into the scenario engine.

Glossary

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

PSR (Profit & Sustainability Rules)
The Premier League's rule capping losses over a rolling three-year period — £105m for established clubs, cut by £22m for each season spent in the Championship. Sunderland's final-cycle limit was therefore ~£61m (two Championship years + one PL year), and on this tracker's estimates they passed with £70m+ to spare before the rule retired. Deductions for academy (Category 1 at Sunderland), infrastructure, community and women's football sweeten it further.
Squad Cost Ratio (UEFA SCR)
UEFA's rule limiting spending on the squad — player and head-coach wages, transfer amortisation and agent fees — to 70% of football revenue plus net player-trading profit, tested on a calendar-year basis. Calendar 2026 is Sunderland's first ever test, estimated here around 58%.
PL Squad Cost Ratio (PL SCR)
The Premier League's squad cost rule replacing PSR from 2026/27: 85% of football revenue plus net player-sale profit for most clubs, but 70% (red line 100%) for clubs in Europe — Sunderland included, thanks to the Europa League. Season basis, October checkpoint, March 2027 assessment.
Football Earnings Rule (FER)
UEFA's successor to break-even: clubs may lose no more than ~€60m over three years (with add-ons), counting only football earnings — intra-group asset sales don't count. Sunderland's aggregate is estimated in surplus, and unusually their PL and UEFA numbers are the same numbers: no related-party income to strip out.
CFCB
UEFA's Club Financial Control Body — the panel that judges compliance, imposes fines and agrees settlements. It fined four English clubs in July 2026; Sunderland's first appearance before it (the calendar-2026 SCR review) comes in summer 2027, with a clean file.
List A
A club's registered senior squad for UEFA competition, capped at 25 — but only if 8 are locally trained. Sunderland's first List A since 1973 is due ~2 September 2026 and, with only ~5 qualifying homegrown players after the Neil and Cirkin exits, likely caps out around 22 names.
List B
The unlimited supplementary list for U21 players with two uninterrupted years at the club since turning 15. Chris Rigg and the academy crop qualify — they need no A spots, which partially rescues the quota maths.
Homegrown / Locally-Trained
Club-trained = three seasons at the club aged 15–21 (Patterson, Rigg); association-trained = three seasons at any English/Welsh club in that window (Ballard via Arsenal, O'Nien, Alese, Mundle). Trai Hume's Linfield years count for the Irish FA, not the English one — so Sunderland's vice-captain-grade right-back is, by rule, foreign-trained.
Amortisation
Spreading a transfer fee as a cost over the contract length. Habib Diarra's club-record ~£30m on a five-year deal costs ~£6m/yr in the books — which is why fees are judged per-year while sales count at once. The 2025 window's £150m+ of fees adds ~£30m/yr of amortisation to every season into the 2030s.
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. Most of Sunderland's 2025 intake signed five-year deals anyway, so cap and contract coincide.
Book Value
What's left of a player's fee still to be amortised. Sale profit = fee minus book value. Mayenda's mostly-amortised 2023 fee is why his ~£17m sale is nearly all profit; Adingra's barely-amortised £21m fee is why his mooted ~£18.5m exit would bank almost none.
Pure Profit
Shorthand for selling a £0-book-value player (academy graduate or free transfer): the entire fee lands as profit for compliance purposes. Bellingham (~£31m) and Watson (~£10m) were the promotion budget's secret; Rigg would be the biggest one on the books today.
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. Applies to Sunderland for the first time as a UEFA club; nothing current triggers it, but a trading-model club must know where the tripwire is.
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 — a £25m Methalie would really cost £26m.
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 — and flows TO Sunderland on sell-ons of academy products moving abroad, as with Bellingham's training years on any future Dortmund sale.
Sell-On Clause
A percentage of any future sale owed to a selling club. None reported on the Mayenda deal — but Sunderland's own outgoing deals (Bellingham to Dortmund) are widely reported to carry them, meaning a future windfall if he moves on.
Add-Ons (Contingent Fees)
Conditional extras on top of a guaranteed fee. The 2025 intake carries ~£20m of them (Xhaka £4.3m, Brobbey ~£4.3m, Talbi ~£3.5m, etc.), several triggered by survival and European qualification — both now achieved, so they capitalise into book values and amortise from FY27.
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. Sunderland's slate is clean since Guiu's recall — full flexibility for a late-window loan.
SSR (Sustainability & Systemic Resilience)
The PL's liquidity and solvency tests running alongside the squad cost rules — proving clubs can actually pay their bills, with an £85m stress test. For Sunderland the live question is the long-pledged conversion of Mercator's £19.8m interest-free shareholder loan to equity.
Headroom
The gap between current squad cost and the 70% line — the practical transfer budget. Sunderland's is roughly £26m/yr of running cost on this tracker's estimates — about £130m of fees on five-year deals, far more than the stated plans need.
Calendar vs Season Test
UEFA tests the ratio over the calendar year (Sunderland's first number freezes 31 December 2026); the PL tests the season (assessment March 2027). The same window of business moves both, on different clocks.