Resource library

Renewal Ledger / Operational guide

Spreadsheet Formulas for Renewal Risk: Days Left, Due Soon, and Overdue Logic

Use SaaS renewal tracker formulas for days until renewal, overdue status, due-soon flags, annualized cost, missing owners, and renewal risk.

By AlexPublished 8 May 2026

The most useful saas renewal tracker formulas calculate days remaining, overdue status, due-soon status, missing dates, annualized cost, and renewal risk. A spreadsheet can flag risk before a renewal becomes urgent, but the formulas only help if the sheet is maintained and reviewed. Formulas can create useful signals; they do not by themselves create management-ready IT evidence reports.

Start with a practical tracker such as the SaaS renewal tracking template. Then use formulas to add operational signals. If you need a broader client-domain snapshot alongside renewal work, run the free 10-domain agency audit.

Formula assumptions and column names

The copy-ready formulas below use the current downloadable CertPilot CSV's actual columns. Renewal date is J and notice deadline is Y; D is teams and E is contact_person:

  • A — provider_vendor, B — asset_subscription_name.
  • E — contact_person: responsible contact for the owner check; AC's technical_owner is separate.
  • I — billing_cycle, J — renewal_date, K — cost.
  • U — auto_renews, Y — notice_deadline, Z — decision_status.
  • AA — decision_notes, AB — last_reviewed_at.

Keep all 30 original columns A:AD intact. Use the Google Sheets setup, filtering and export workflow to import the CSV, format dates and add helpers after AD. Do not insert helper columns into the import range.

The working queue uses AE — Days to renewal, AF — Days to notice, AG — Owner check, AH — Notice not required, AI — Action complete, AJ — Decision check, and AK — Review queue. AE, AF, AG, AJ and AK are formulas. AH and AI are manual fields: enter yes only when the condition has been verified; otherwise leave blank. Record the source or confirmation in AA. These are spreadsheet-only helpers, not CertPilot fields or application status rules.

Paste each formula into the formula bar of its named row-2 cell, then fill down through actual records. Format AE/AF as numbers with zero decimal places. Optional formulas later in the article belong in additional helper columns AL onwards, not A:AD or the reserved AE:AK cells. Export only the original data columns as values.

These examples use English function names, comma separators and ordinary cell references supported by Excel and Google Sheets. A locale may require semicolons; Excel may also display localized function names. In Sheets, function language, locale and timezone settings affect entry and interpretation. Do not paste Excel structured-table references into Sheets. Test in your own application and locale; compatibility is not a claim of testing every environment.

The date checks require a real numeric spreadsheet date between 2000-01-01 and 2100-12-31, an explicit working range for this example. They flag blanks, text (including date-looking text), errors and out-of-range serials rather than treating them as zero or 1899-era dates. Confirm the source before converting text; changing cell formatting alone does not convert it. A plausible numeric value can still be the wrong date, so validation is not a substitute for checking the contract.

Days until renewal

Put this in AE2; it reads the renewal date from J2:

=IFERROR(IF(J2="","Missing renewal",IF(ISNUMBER(J2),IF(AND(J2>=DATE(2000,1,1),J2<DATE(2101,1,1)),INT(J2)-TODAY(),"Invalid renewal"),"Invalid renewal")),"Invalid renewal")

This returns calendar days until renewal, Missing renewal for a blank, or Invalid renewal for an unusable date. It ignores a time-of-day component; it is not an hour-level deadline check.

  • Negative means the renewal date has passed.
  • A small positive number means renewal is near, but the notice deadline may already have passed.
  • Missing or invalid dates require correction, not a reassuring blank output.

Overdue status

For an optional renewal-only status in AL or later, read the validated AE helper:

=IF(ISNUMBER(AE2),IF(AE2<0,"Renewal overdue",IF(AE2<=30,"Renewal due","Renewal later")),AE2)

Today is due, not overdue. Blank and invalid dates retain their warnings. This is a date signal only: use AK's combined queue below to exclude completed actions and prioritize notice deadlines. Do not equate Renewal later with safe to wait.

Due soon status

For an optional notice-due flag, read AF after adding the notice formula below:

=IF(ISNUMBER(AF2),IF(AND(AF2>=0,AF2<=30),"Notice due",""),AF2)

This flags today through 30 calendar days ahead without relabelling overdue notices as upcoming. It is not the full queue: AK separately flags overdue notices and handles confirmed no-notice records. Set review lead time to suit approvals, delivery and replacement work; 30 days is not universally sufficient. Renewal-relative 90/60/30 checkpoints are secondary planning or a fallback where no notice requirement exists. They must never override an earlier notice deadline.

Missing renewal date

Missing dates are not harmless. A row without a renewal date cannot generate reliable alerts.

=IF(ISNUMBER(AE2),"Date present",AE2)

This optional check distinguishes a usable date from AE's missing/invalid warnings. It is useful before import, but does not prove a contract date is correct.

Notice deadline

Put this in AF2; it reads the verified notice deadline from Y2:

=IFERROR(IF(Y2="","Missing notice",IF(ISNUMBER(Y2),IF(AND(Y2>=DATE(2000,1,1),Y2<DATE(2101,1,1)),INT(Y2)-TODAY(),"Invalid notice"),"Invalid notice")),"Invalid notice")

Negative means notice is overdue; zero means today; a positive number is the calendar-day countdown. Missing notice remains work to investigate. Only after confirming that no notice is required should you leave Y blank, enter yes in AH, and record the source in AA. Do not use that helper merely because the deadline is unknown.

If the contract explicitly specifies 30 calendar days before renewal, an optional planning estimate in a spare helper cell is:

=IF(ISNUMBER(AE2),INT(J2)-30,"Check renewal date")

Format that result as a date, but do not automatically overwrite Y with it. Simple subtraction is only an operational estimate: delivery method, receipt requirements, timezone, business-day rules and vendor terms can affect the actual deadline. Verify it with the contract owner; this is not legal advice. No formula here interprets those terms or discovers them automatically.

On 2026-09-22, J = 2026-12-31 and Y = 2026-09-25 produce AE = 100 and AF = 3. With a named owner, Z = undecided, and AH/AI blank, AK returns 2 Notice due. The distant renewal does not postpone action. If notice is already overdue, verify the remaining options rather than assume cancellation is still available.

Monthly equivalent cost

Monthly equivalent cost makes annual and monthly items easier to compare. The CSV uses K for cost and I for billing cycle:

=IF(ISNUMBER(K2),IF(I2="annual",K2/12,IF(I2="monthly",K2,IF(I2="quarterly",K2/3,"Check billing cycle"))),"Check cost")

This is a planning estimate, not spend optimization. It helps the team understand scale and prioritize review.

Annualized cost

Annualized cost normalizes billing cycles:

=IF(ISNUMBER(K2),IF(I2="monthly",K2*12,IF(I2="quarterly",K2*4,IF(I2="annual",K2,"Check billing cycle"))),"Check cost")

These examples handle monthly, quarterly and annual cycles only; other cycles return Check billing cycle. A one-time purchase should not be annualized unless the team intentionally wants to model replacement cost. Compare like currencies rather than summing mixed-currency results.

Remaining-year cost

Remaining-year cost is useful for planning, but it is more approximate:

=IF(ISNUMBER(K2),IF(I2="monthly",K2*(12-MONTH(TODAY())+1),IF(I2="annual",K2,"Check billing cycle")),"Check cost")

This simple formula does not account for contract start dates, partial periods, refunds, or proration. Use it as a planning aid, not as accounting.

Auto-renewal risk

For an optional view of open auto-renewing records, read U and the queue below:

=IFERROR(IF(AJ2="Closed","Closed",IF(LOWER(U2&"")="true",AK2,"")),"Check auto-renew")

This accepts Boolean TRUE or the text true. Auto-renewal is not automatically bad, and a false/blank value is not proof that no notice is required. The main queue still evaluates notice terms for every open record, not just auto-renewing ones.

Missing owner risk

Put this in AG2, using E's responsible contact rather than assuming a technical owner is the decision owner:

=IFERROR(IF(LEN(TRIM(E2))=0,"Missing owner","Owner assigned"),"Check owner")

Missing owner risk should be visible even when the renewal date is far away. A renewal due in six months can still be risky if no one owns the service.

Decision and completion check

Z accepts undecided, review, renew, or cancel. Choosing renew or cancel does not by itself complete the action. Leave AI blank until the action has been carried out and confirmation recorded in AA; only then enter yes. Put this in AJ2:

=IFERROR(IF(AND(AI2="yes",OR(Z2="renew",Z2="cancel")),"Closed",IF(AI2<>"","Check completion",IF(OR(Z2="renew",Z2="cancel"),"Action pending",IF(OR(Z2="",Z2="undecided",Z2="review"),"Unresolved decision","Check decision")))),"Check decision")

An empty decision stays unresolved. An unsupported status or an inconsistent completion flag requires checking, not silent closure. For the next cycle, update the dates, reopen the decision and clear AI. The helper cannot verify whether the recorded action actually happened.

Combined renewal risk

Put this in AK2 after adding the other helpers. Line breaks make the conditions easier to inspect; paste the entire expression into the formula bar:

=IFERROR(
 IF(AJ2="Closed","9 Closed",
 IF(LEFT(AJ2,5)="Check","1 Check decision",
 IF(OR(AND(AH2<>"",AH2<>"yes"),AND(AH2="yes",Y2<>"")),"1 Check notice setting",
 IF(AF2="Invalid notice","1 Invalid notice",
 IF(AND(AF2="Missing notice",AH2<>"yes"),"1 Missing notice",
 IF(AND(ISNUMBER(AF2),AF2<0),"1 Notice overdue",
 IF(AND(ISNUMBER(AF2),AF2<=30),"2 Notice due",
 IF(AG2<>"Owner assigned","3 "&AG2,
 IF(NOT(ISNUMBER(AE2)),"3 Check renewal date",
 IF(AE2<0,"3 Renewal overdue",
 IF(AND(AH2="yes",AE2<=30),"4 Renewal due",
 IF(AJ2="Action pending","5 Action pending","6 Review planned")))))))))))),
 "1 Check input")

This order matters:

  1. Confirmed completed actions return 9 Closed, even when the old dates have passed.
  2. Decision/completion inconsistencies, missing/invalid notice dates and contradictory no-notice settings require priority-1 checks. An overdue notice also receives priority 1.
  3. Notice due today or within 30 days receives priority 2, even if renewal is months away.
  4. Missing owners and renewal-date gaps/overdue dates remain visible in priority 3.
  5. A renewal within 30 days receives priority 4 when AH confirms no notice is required.
  6. An open renew/cancel decision stays 5 Action pending; other open records are 6 Review planned, not "safe" or "no risk".

Sort the full record range by AK ascending, then AF and AE ascending. Filter out 9 Closed. Also review AE/AF date warnings, AG ownership flags and AJ unresolved decisions separately: one combined label cannot display every problem in a row. A missing owner must still be fixed on a record already labelled 2 Notice due.

Check the queue before relying on it

Use synthetic rows to confirm these results in your spreadsheet and locale:

  • A valid future renewal produces a positive AE count; a past renewal produces a negative count.
  • A blank renewal produces Missing renewal; text such as not a date, a date-looking text string, or zero produces Invalid renewal.
  • A notice 45 days away produces AF = 45; a notice yesterday produces AF = -1 and 1 Notice overdue for an open record.
  • A notice today produces AF = 0 and 2 Notice due. The same priority applies through day 30; day 31 is outside that example window.
  • A distant renewal with notice in three days still produces 2 Notice due.
  • A blank or whitespace-only E produces Missing owner in AG, independently of the queue's headline priority.
  • Z = cancel with AI blank remains open; Z = cancel or renew with AI = yes produces Closed in AJ and 9 Closed in AK.
  • A missing Y remains 1 Missing notice unless no notice is confirmed in AH. AH = yes alongside a populated Y produces 1 Check notice setting.

These are operational checks, not contract interpretation or proof of a completed notice.

For cleaner field design, see renewal tracker columns that matter.

Why formulas are useful but not enough

Spreadsheets can calculate risk, but they still depend on people opening the file, maintaining dates, and acting on the result.

Formula weaknesses:

  • No reliable alert if nobody opens the sheet.
  • No automatic proof report.
  • No simple client grouping unless the sheet is maintained carefully.
  • No protection against accidental edits.
  • No workflow if the owner is missing.
  • No link to broader SSL, DNS, or domain-expiry context.

This does not mean spreadsheets are useless. They are often the right first step. The risk starts when the team treats a spreadsheet as if it were an operating process. The broader governance failure mode is covered in Evidence Reports vs Dashboards vs Spreadsheets.

Where CertPilot fits alongside spreadsheet formulas

CertPilot Renewal Ledger uses renewal dates, owners, client grouping, and risk status to support alerts, renewal-risk visibility, and monthly proof-report content. It does not auto-renew services, parse invoices, sync bank feeds, or optimize licenses.

The sheet-only queue above is not a reproduction of CertPilot's application rules. A maintained register supports related review work:

  • Missing owner becomes a visible process risk.
  • Due soon becomes an alert.
  • Overdue becomes a renewal-risk item.
  • Client grouping becomes report context.
  • Renewal risk can sit alongside domain, SSL, and DNS proof.

For public-domain check methodology, see how CertPilot checks domains. Renewal asset data still comes from the team maintaining the ledger.

Frequently Asked Questions

What are the most useful SaaS renewal tracker formulas?

The most useful SaaS renewal tracker formulas calculate days until renewal, overdue status, due-soon status, missing renewal dates, missing owners, auto-renewal risk, and annualized cost. These formulas turn static dates into operational signals. Start simple, then add complexity only when the team actually uses the result.

What formula shows days until renewal?

Use the AE2 formula above: it reads the current CSV's J column and checks for missing or invalid values before subtracting today. A negative result means renewal has passed, but notice timing must be checked separately in AF.

How do I flag overdue and due-soon renewals?

Use the validated AE/AF countdowns and AK's notice-first queue above. A blank or text date must not become an overdue date through implicit spreadsheet conversion. Notice due today is imminent, not overdue; a passed notice requires escalation. Renewal-relative reminders never override an earlier verified notice deadline.

Are spreadsheet formulas enough for renewal management?

Spreadsheet formulas are enough for small or simple lists, but they are not a full renewal operation. They depend on people opening the sheet, keeping dates current, and acting on the flags. When alerts, ownership, client grouping, and proof reports matter, a structured Renewal Ledger is safer.

Should renewal formulas include cost?

Cost formulas are useful for planning and prioritization. Monthly equivalent and annualized cost help compare monthly, quarterly, and annual renewals. They should not be treated as accounting records unless finance validates them. Renewal operations need enough cost context to decide which items deserve review.

Can Excel and Google Sheets use the same formulas?

The functions and ordinary cell references used here are available in both, but entry syntax and interpretation depend on settings. Some locales require semicolons instead of commas, and Excel may use localized function names. Set the locale/timezone, convert date-looking text into verified real dates, and format countdowns as numbers. Test the synthetic cases in your own environment before relying on the queue.

Next operational step

Turn daily checks into management-ready evidence.

CertPilot checks SSL, DNS, domain registration, and email authentication daily — and combines them with your renewal, people, assets, and access review registers into evidence reports. 14-day free trial, no card required.