Salary Cap and Position Limits
2026-05-11
Salary Cap and Position Limits
Your league has a salary cap and a set of position limits that constrain every roster move. Both values are configurable per league by your commissioner — there is no universal FanPoolHQ-wide number. Check League Settings for the values that apply to your team.
How the salary cap works
Each player on your roster carries a contract with a cap hit, and the sum of every active and reserve player on your team has to fit under your league's salary cap. The cap value is stored on LeagueSettings.salaryCap and set by your commissioner from the admin League Settings page.
A common starting point mirrors the real NHL number (around 95.5M USD as of writing), but the cap is fully tunable — some leagues run tighter caps to force tougher roster decisions, others run looser caps for a freer market. The number you see in your league is the number that counts; nothing in FanPoolHQ assumes any specific dollar figure as universal.
Two related toggles live in the same settings panel:
salaryCapEnforced— whether the cap is hard-blocked at transaction time or treated as advisory. Most leagues enforce; a few run shadow-cap modes for flexibility.- Reserve still counts — moving a player to reserve does not reduce your cap hit. Only dropping a player (see Waiver Wire and Drops) removes their cap from your books.
How position limits work
Every roster also has limits on how many players of each position can be active at once. These come from four settings the commissioner controls:
| Setting | Position |
|---|---|
| LeagueSettings.maxForwards | Forwards (centers, wingers) |
| LeagueSettings.maxDefense | Defensemen |
| LeagueSettings.maxGoalies | Goaltenders |
| LeagueSettings.positionLimitsEnforced | Master toggle — whether the limits block transactions |
A typical configuration looks like 12 forwards / 6 defensemen / 2 goalies to mirror an NHL game-day lineup, but every league can dial these up or down. A keeper league might run deeper benches; a shorter format might run tighter rosters. Don't memorize a default — read your League Settings.
The limits only apply to active players. Reserve doesn't count against a position limit, which is how you can carry, say, an extra defenseman who's currently parked on reserve waiting out a stretch.
What happens at the breach point
When you attempt a move that would breach the cap or a position limit, FanPoolHQ blocks the move before it commits — you'll see a validation error telling you which constraint was hit. Common breach scenarios:
- Cap breach on a waiver pickup: claiming a player whose cap hit pushes your roster over the league cap. You either drop someone first, or pick a cheaper target.
- Position breach on activation: activating a forward when your active forward slots are already full. You move another active forward to reserve (or drop them) first.
- Cap breach on a trade: incoming trade pieces would push the receiving team over cap. Trades surface a cap warning on the proposal page so both sides can see the projection before responding.
If your commissioner has disabled the relevant enforcement toggle (salaryCapEnforced off, or positionLimitsEnforced off), the warnings still appear but moves go through — your league is running on the honor system for that rule.
Where to view your team's current state
The Roster Management page surfaces your team's current cap usage and per-position active counts near the top. A green indicator means you're inside the limits; an amber or red one means you're near or over the configured ceiling. You can also see contract details (cap hit, years remaining) on each player row.
If you want to plan ahead without committing — for example, projecting whether a target free agent would fit — you can use the cap warnings on the trade and free-agent flows to preview the resulting state before you submit the move.