The Controller's 90-Day SaaS Renewal Process is a repeatable schedule that starts 90 days before each material contract's notice deadline (not its end date) and moves through four phases: audit usage (days 90–75), get an owner recommendation (days 75–60), negotiate or prepare cancellation (days 60–30), and execute the decision with paper trail (days 30–0). Run it only for contracts above a materiality threshold — typically $5,000/year — and let alerts handle everything smaller. The whole point is that no renewal decision is ever made in the week the invoice arrives.

This is a process you can adopt verbatim. It assumes no procurement team, no legal department, and a controller (or fractional CFO, or ops lead) who owns it in a few hours per month.

Why 90 Days, and Why the Notice Deadline

Two design choices do most of the work here.

Anchor on the notice deadline, not the renewal date. A contract ending December 31 with a 60-day notice clause is decided by November 1. Tracking the end date is how teams "decide to cancel" two weeks after the option expired. Every date in this process counts backward from the notice deadline. (If notice periods are new to you, what a SaaS renewal notice period is covers the definition and the date math.)

Start 90 days out. Usage data takes time to gather, owners take time to respond, and negotiation leverage comes almost entirely from credible willingness to leave — which requires enough runway to actually evaluate alternatives. 60 days is workable; 90 is comfortable; 30 is theater.

The Week-by-Week Schedule

This table is the process. Put it in your wiki and attach it to every material contract.

Window Week Phase Action Owner
Day 90–84 Week 1 Audit Alert fires. Controller pulls last 12 months of spend for the vendor; confirms notice deadline against the actual contract, not the tracker estimate Controller
Day 83–77 Week 2 Audit Request seat/usage data from the tool owner; check actual logins or active users vs. licensed seats Tool owner
Day 76–70 Week 3 Recommend Owner submits one-page recommendation: Renew as-is / Renew right-sized / Renegotiate / Cancel — with seat count and one alternative considered Tool owner
Day 69–63 Week 4 Recommend Controller reviews; checks contract for price-escalation clauses and term changes; sets the target outcome and walk-away point Controller
Day 62–49 Weeks 5–6 Negotiate First email to vendor (renewal intent + asks); if cancelling, draft written notice per the contract's required method Controller
Day 48–35 Weeks 7–8 Negotiate Counteroffers; get every concession in writing on the order form, not in email promises Controller
Day 34–28 Week 9 Execute Final internal sign-off (CEO/CFO if over your approval threshold); send cancellation notice if leaving — via the contractually required channel, with delivery confirmation Controller
Day 27–14 Weeks 10–11 Execute Countersign renewal or confirm cancellation acknowledgment in writing; update tracker with new dates, price, and notice period Controller
Day 13–0 Weeks 12–13 Close File the signed order form against the vendor record; note next year's notice deadline; log the decision rationale in one sentence Controller

Three rules keep it lightweight:

  • One page maximum per recommendation. If the owner cannot fill in "seats licensed / seats active / recommendation / one alternative," that itself is the finding.
  • Escalate by value, not by default. Use your existing approval matrix — for most SMBs, controller decides under $10,000, CEO/CFO co-signs above.
  • Every concession in writing. Verbal "we'll honor that price next year" promises from account managers have a one-year half-life.

Worked Example: One Contract Through the Full Cycle

A 70-person company runs the process on its customer-support platform: $21,600/year (40 seats at $45/month), contract ends March 31, 60-day notice clause → notice deadline January 30 → process starts November 1.

  • Week 1 (Nov 1–7): Spend pull shows the price rose from $19,200 last year — a 12.5% increase nobody approved; it arrived via an escalation clause. Contract check confirms the 60-day notice and that cancellation requires written notice to a specific email address.
  • Week 2 (Nov 8–14): Admin panel shows 31 of 40 seats logged in within 60 days. Four of the inactive nine belong to departed employees.
  • Week 3 (Nov 15–21): Owner recommends renew right-sized at 32 seats and flags that a competitor quoted $38/seat in a conference conversation.
  • Week 4 (Nov 22–28): Controller sets the target — 32 seats with the escalation clause capped at 5% — and the walk-away: at parity pricing, migrating is not worth it; the real ask is the seat reduction.
  • Weeks 5–8 (Dec): Vendor initially resists mid-tier seat reduction; controller points to the January 30 notice deadline and the competitor quote. Settled outcome: 32 seats at $45, escalation capped at 5%, renewal = $17,280/year.
  • Week 9 (early Jan): Under the $10,000-delta threshold, controller signs. Order form names the seat count and cap explicitly.
  • Weeks 10–13 (Jan): Tracker updated: new end date March 31 next year, notice deadline January 30, next process start November 1. Rationale logged: "Right-sized 40→32 after departures; capped escalation."

Net effect of running the calendar instead of letting it auto-renew: $4,320/year saved (20%), plus a capped escalator — from roughly five hours of total effort spread across three months. No negotiation genius required; the leverage was entirely in starting before January 30 instead of discovering the invoice in April.

Making It Run Without You Pushing It

The process dies if the controller must remember to start it. Automate the trigger:

  1. Every material contract gets a 90-day alert keyed to the notice deadline. In Satellite, set the notification offset per contract; the alert email to the owner is the Week 1 starting gun.
  2. Keep the inventory honest quarterly. Reconcile your tracker against accounting exports so new tools enter the process — the QuickBooks export workflow is the standard play.
  3. Batch the small stuff. Contracts under your threshold get a single 30-day alert and a two-minute keep/cancel call — do not run thirteen weeks of process on a $900 tool.

FAQ

How many contracts should go through the full 90-day process?

For most companies under 200 employees: 5–15. If more than ~20 contracts clear your materiality threshold, raise the threshold or split ownership with department leads — the process scales by delegation, not by the controller working more weeks.

What if a contract has no notice period?

Month-to-month and no-notice contracts still get an alert (30 days is fine), but they skip to the Recommend phase — there is no deadline pressure, so the decision is purely usage-and-price.

What if I'm starting with less than 90 days of runway?

Compress, don't skip: audit and recommendation in week one, negotiation immediately after. Below 30 days to the notice deadline, your realistic options are usually "renew and calendar properly for next year" or "send cancellation notice today" — pick one deliberately.

Who should run this if we have no controller?

Whoever owns the books — a fractional CFO runs the identical process across clients (the fractional CFO renewal checklist is the multi-client variant), or a founder/ops lead at earlier stages.


The process only works if the 90-day alerts actually fire. Get your contracts and notice deadlines into the free renewal tracker, set the offsets, and the schedule runs itself — or sign up for Satellite at a flat $299/month, self-serve.