The Salary Playbook — Fantasy Dynasty
Every move you can make in the salary engine — who makes it, where, when, and what it does to your cap. With real numbers, not hand-waving.
The examples below assume a $200M cap with NBA-faithful defaults. Every opt-in rule is a commissioner toggle in Commissioner Zone → Settings → Cap & Roster → "Salary System": turn on as much or as little CBA as your league wants.
Signing players
Every signing is validated in real time against your cap space, the apron and the player's individual maximum. No spreadsheet, no honor system.
- Win players at the live auction draft (GM — Draft room (live auction); Draft day, at the start of the season). Real-time competitive bidding: nominate a player, rivals raise, the highest bid within the countdown wins (Rule 8 tie-breaker). The winning bid becomes the year-1 salary of the contract you configure. Example: You win a star at $38M. You sign him for 3 years with 5% escalation: $38M / $39.9M / $41.8M on your books..
- Sign a free agent from the market (GM — Market page (/market); In-season and off-season, whenever the market is open). Make an offer on any unowned player: amount, years, option years. The offer opens a blind auction window where rivals can outbid you; while it runs, your bid is FROZEN on your cap (you see it in the Cap Breakdown of your Roster page). Example: You offer $12M × 2 years. Until the auction closes, $12M of your space is frozen. If a rival bids $14M and you pass, your $12M is released back..
- Attach option years at signing (GM — Signing / bid dialog (Market or draft room); At the moment you make the offer). When signing a veteran you can flag the LAST years of the deal as team options (never year 1, up to the league's configured maximum). Option years show an OPT badge on your roster and get decided in the off-season. Example: A 3-year, $10M/yr deal with 1 option year: years 1–2 are guaranteed, year 3 ($10M) is a club decision you make later.. Commissioner toggle: "Max option years" in the Salary System panel.
- Respect the individual max salary (GM — Enforced automatically on every offer; Always, when the rule is on). No single contract can exceed 25 / 30 / 35% of the cap depending on the player's seasons of service in your league — the same tiers as the real CBA. Offers above the max are rejected at validation. Example: With a $200M cap, a player in his 4th league season maxes out at $50M/yr (25%); a 10-year veteran at $70M/yr (35%).. Commissioner toggle: "Individual max salary" in the Salary System panel.
Managing your books
Contracts are commitments. Cutting, stashing and option management is where average GMs bleed cap and good GMs find it.
- Cut a player (and eat the dead cap) (GM — Roster page (/roster) → waive action on the player row; Any time). Waiving a player on a guaranteed contract leaves dead money automatically: by default 100% of the current-year salary plus a configurable percentage (default 10%) of each remaining future year. It shows up in the Dead Money Audit of your Roster page. Example: You cut a 3-year, $10M/yr deal in year 1: $10M dead this season + $1M in each of the two remaining years (at the 10% default)..
- Use non-guaranteed years as an escape hatch (GM — Roster page — NG badge on the contract; Waive before the year guarantees). Years marked non-guaranteed carry NO dead cap if you waive the player before they kick in. It's the cheapest flexibility in the engine — the fantasy equivalent of an expiring contract. Example: A $9M year-3 that is non-guaranteed: cut him in the off-season before year 3 and your books take $0. Wait until it guarantees and a cut costs you the full dead-cap formula..
- Exercise or decline a team option (GM — Roster page — OPT badge → option decision; Off-season, before rollover). Exercise: the option year becomes a normal guaranteed year. Decline: the contract ends early and the player hits free agency — with NO dead cap. Unresolved options are settled during the off-season rollover. Example: An $8M team option on a declining veteran: decline it, he walks for free, and you keep the $8M of space. Exercise it and it's $8M guaranteed on next season's books..
- Park an injured player on IR (GM — Roster page — IR slot; While the player is actually injured). Moving an injured player to an IR slot frees his positional spot and credits a configurable share of his salary back to your cap (default 50%). The relief disappears the moment you activate him. Example: A $20M player tears his ACL: on IR, $10M comes back to your available space while he recovers..
- Stash prospects on the taxi squad (GM — Roster page — taxi squad slots; Any time, for players within the pro-years limit). Young players (eligibility by max professional years) can sit on the taxi squad at a fractional cap hit, without occupying a roster spot. The trade-off: rivals can try to poach them. Example: A $4M rookie on the taxi squad might count only a fraction on your cap — cheap upside, exposed to poaching..
Keeping your core
The CBA's whole point: keeping your own stars is easier than stealing someone else's — but never free.
- Re-sign your own stars with Bird rights (GM — Applied automatically on re-signs, extensions and RFA matches; Re-sign windows and RFA match windows). Bird rights let you go OVER the soft cap only to keep YOUR OWN players — bounded by the individual max and never past the apron. Bird re-signs also enjoy a higher raise (8% vs the standard 5%). Example: You sit at $198M of a $200M cap. A rival tenders your RFA a $30M offer sheet: with Bird rights you can still match it, up to the apron wall.. Commissioner toggle: "Bird rights" in the Salary System panel.
- Tender a Qualifying Offer (start RFA) (GM — Restricted FA page (/rfa); Off-season, RFA phase 1). When a young player's contract expires (within the league's service-year limit, default 3), you can tender a Qualifying Offer to make him RESTRICTED. The QO amount — a percentage of his last salary — is frozen on your cap while it's pending. Example: Last salary $10M, QO at 120% → a $12M hold on your books until the RFA resolves.. Commissioner toggle: "Restricted Free Agency" in the Salary System panel.
- Match or decline an offer sheet (GM — Restricted FA page (/rfa); RFA phase 2 — the match window after offers close). When the blind-offer window closes, you see the best offer sheet on your restricted player. Match it (Bird rights let you do it over the cap) and he stays on those terms — but he's TRADE-LOCKED until next off-season, like the real NBA consent rule. Decline and he walks to the offering team. Example: A rival offers your RFA $25M × 3 years. You match at $198M/$200M thanks to Bird — he stays, shows a LOCKED badge, and can't be flipped until next summer..
- Extend a rookie before he hits RFA (GM — Roster page (/roster) → extension action; Off-season, before the rookie deal expires). Lock up a rookie early with an extension up to the league's standard ceiling (default 25% of the cap). It costs more than waiting, but removes the risk of a rival offer sheet entirely. Example: With a $200M cap, a standard rookie extension maxes at $50M/yr. Sign it in year 3 and RFA never happens.. Commissioner toggle: "Rookie extensions" in the Salary System panel.
- Designate a super-max player (Commissioner — Commissioner Zone → Salary System panel; Any time before the extension is signed). The commissioner can flag any league rookie as super-max designated (the "Rose Rule" lever): his extension ceiling rises from the standard percentage to the super-max one (default 30%). Example: A generational rookie gets the SMX badge: his extension ceiling jumps from $50M/yr (25%) to $60M/yr (30%) on a $200M cap..
Raiding your rivals
Everything your rivals can do to you, you can do to them. The engine gives you two legal weapons: offer sheets and taxi poaching.
- Submit a blind offer sheet on a rival RFA (GM — Restricted FA page (/rfa); RFA offer window). During the offer window you can bid on any restricted player in the league. Offers are BLIND — rivals can't see each other's sheets. Your offer must fit YOUR cap; if the original team declines to match, the player is yours at those terms. Example: You sheet a rival's breakout guard at $22M × 4. They're capped out beyond Bird range and pass — you land him for pure cap space..
- Poach a prospect from a rival taxi squad (GM — Rival roster / player card → poach action; Any time the target sits on a taxi squad). Claim a player parked on a rival taxi squad. The owner gets a 24–48h matching window: match (promote him to the active roster at the offered terms) or surrender him and receive draft-pick compensation. Example: You poach a stashed sophomore with a $6M offer. The owner has no roster spot free, surrenders him, and collects the compensation pick instead..
Trading
Trades move real money, not just players. Every deal is cap-validated for every team involved — and the preview shows you exactly the same verdict the engine will enforce at acceptance.
- Build a cap-validated trade (GM — Trades page (/trades) → Trade Builder; Until the trade deadline). Assemble players and picks on both sides; the builder previews each team's post-trade salary in real time. All involved GMs must accept; the engine re-validates everything at execution. Example: You send a $15M wing for a $12M guard + a 2028 second-rounder. Both teams fit — the deal executes the moment the last signer accepts..
- Retain salary to make a deal fit (GM — Trade Builder → retention slider on the outgoing player; While building the trade). Keep a fraction of an outgoing player's salary on YOUR books so the receiving team only absorbs the rest. The retained amount sits on your cap as a penalty line item for the life of the contract. Example: You retain 25% of a $12M contract: the buyer books $9M, you keep a $3M dead line — and the trade fits..
- Run a multi-team trade (GM — Trades page (/trades) → add a third team; Until the trade deadline). Route salary through a facilitator exactly like real front offices: every leg of the deal is validated independently for every team, and the whole package executes atomically once everyone accepts. Example: Team A sends a $20M star to B; B routes a $9M contract to C; C sends picks back to A. Three cap sheets, one atomic deal..
- Trade over the cap with CBA salary matching (GM — Trade Builder — applied automatically when you're over the cap; Whenever the league has Trade Matching on). Over-the-cap teams keep trading, within the real CBA formula: incoming year-1 salary can't exceed the best of 200% of outgoing (small packages), outgoing + the Expanded TPE allowance (mid), or 125% (large) — plus a small cushion, with the apron as the wall no deal can cross. Example: Over the cap, you send out $20M: you can take back up to ~$31M ($20M + the $11M Expanded TPE on a $200M cap) — as long as you stay under the apron.. Commissioner toggle: "NBA-style trade matching" in the Salary System panel.
- Bank a Traded Player Exception (TPE) (GM — Created automatically; visible as chips above the Trade Builder; Whenever a trade sends out more salary than it brings back). An unbalanced trade automatically credits you a TPE worth the difference, valid for 1 year. In a later trade the TPE absorbs an incoming contract that wouldn't otherwise fit — without cap space and without matching. It never lets you cross the apron. Example: You dump a $20M contract for just a pick: a $20M TPE lands in your vault. Six months later you absorb a $18M scorer into it with zero space.. Commissioner toggle: "Traded Player Exceptions" in the Salary System panel.
- Trade future picks — inside the Stepien rule (GM — Trade Builder → picks tab; Whenever the league has the Stepien rule on). You can't leave yourself without first-round picks in consecutive future years — the engine blocks the trade that would do it, exactly like the NBA rule born from Ted Stepien's disasters. Example: You already traded your 2027 first: any deal including your 2028 first is rejected until you get a 2027 or 2028 first back.. Commissioner toggle: "Stepien rule" in the league settings.
- Vote a trade through the Trade Committee (League vote — Trades page — committee vote on pending deals; The review window after a trade is accepted). With the committee on, accepted trades enter a league-wide review window where managers can vote to veto. Enough veto votes and the deal is cancelled before execution — collusion insurance without commissioner fiat. Example: A suspicious superstar dump gets 6 of 10 veto votes during review — the trade dies, both rosters stay intact.. Commissioner toggle: "Trade Committee" in the league settings.
The season cycle
A dynasty league is a flywheel: rollover, lottery, rookie draft, expansion. Most of it runs itself — these are the moments where someone decides.
- Advance the league to off-season (rollover) (Commissioner — Commissioner Zone → season controls; When the playoffs end). One action rolls the league over: every contract ages one year, expiring deals drop off, unresolved options resolve, and the books open for the new season — automatically, for every team at once. Example: A 3-year deal at $10M/$10.5M/$11M becomes a 2-year deal at $10.5M/$11M. Your expiring $22M veteran vanishes from the books..
- Run the lottery and the rookie draft (Commissioner — Draft Center (/draft-center) → lottery + rookie draft room; Off-season, after rollover). The lottery orders the picks (protections resolve automatically, with rollover compensation when they trigger); the rookie draft then assigns incoming rookies on the real wage scale — and each pick FREEZES a cap hold on its owner until it signs. Example: Pick #1 carries a $12M scale: signed at the 120% default it books $14.4M, and that hold sits frozen on your cap from lottery night to signing day..
- Expand the league with an Expansion Draft (Commissioner — Commissioner Zone → Expansion Draft setup + live room; Off-season, when new franchises join). Existing teams protect part of their roster; the new franchises pick from the unprotected pool in a live snake room. Contracts transfer to the expansion team with NO dead cap for the team that loses the player. Example: You protect 8 of 12; the expansion team grabs your $14M sixth man. His whole contract moves — your books drop $14M clean.. Commissioner toggle: Expansion Draft in the Commissioner Zone.
None of this is mandatory. Every layer — max salary, Bird rights, apron, RFA, extensions, trade matching, TPEs, Stepien, committee — is an independent commissioner toggle with NBA-faithful defaults. Start simple, turn the CBA up as your league gets hungrier.
Salary Engine overview · Full rulebook · Start playing free