All resources
Renewal Ledger

SaaS Renewal CSV Template: Clean Import Fields + Example

Use this SaaS renewal CSV template to clean owners, dates, deadlines, costs, and statuses before importing records into a maintained tracker.

By AlexUpdated 30 July 2026

Turn renewal dates into a decision queue.

Use CertPilot to maintain owners, renewal dates, notice deadlines, and decision status for SaaS, hosting, licenses, and other renewal assets.

The renewal spreadsheet looked fine until Jordan tried to import it.

There were merged cells from an old client handover. One vendor appeared three different ways. The renewal date column mixed ISO dates, local dates, "Q3," and "ask Finance." Some rows had cost in euros, some had currency symbols inside the amount, and some had no owner because everyone knew who handled it. Until they did not.

That is the real job of a SaaS renewal CSV template. It is not to make a prettier spreadsheet. It is to turn messy renewal knowledge into fields that can survive import, review, handover, reporting, and the next person who inherits the system.

Use this guide when you need to clean SaaS, vendor, license, contract, hosting, plugin, or renewal records before importing them into a maintained tracker or CertPilot's Renewals & Vendor Register. If you are still designing the tracker itself, start with the SaaS renewal tracking template. If you are deciding whether a CSV cleanup is enough or you need a maintained ledger, read Renewal Ledger.

The quick answer

A clean SaaS renewal CSV should usually include these fields:

  • name;
  • vendor;
  • asset type;
  • owner;
  • client, department, or business unit;
  • renewal date;
  • cancellation or notice deadline;
  • billing cycle;
  • cost;
  • currency;
  • auto-renew status;
  • decision status;
  • last reviewed date;
  • notes.

The most important rule: do not let unknown values look safe. If the owner, date, notice deadline, or auto-renew status is unknown, mark it as unknown so it becomes review work rather than hidden risk.

Copy-paste CSV sample

Use this as a starting point. It is intentionally boring.

name,vendor,asset_type,owner,group,renewal_date,notice_deadline,billing_cycle,cost,currency,auto_renew,decision_status,last_reviewed,notes
Google Workspace,Google,saas,IT Operations,Internal,2026-06-15,2026-05-16,monthly,72,EUR,true,review_needed,2026-04-30,Admin seats and billing owner need review
Webflow,Webflow,saas,Design Team,Client A,2026-09-01,2026-07-03,annual,276,EUR,true,renew,2026-05-20,Client website plan
WP Rocket,WP Media,plugin,Support Team,Client B,2026-07-20,2026-06-20,annual,59,EUR,true,review_needed,2026-05-02,Confirm whether client site still uses license
CRM Sandbox,ExampleCRM,saas,Unknown,Sales,2026-10-01,unknown,annual,,EUR,unknown,owner_needed,,Found during spreadsheet cleanup

You can remove fields that do not apply, but do not remove the fields that create accountability: owner, renewal date, notice deadline where relevant, auto-renew status, decision status, and last reviewed date.

When CSV is the right tool

CSV is useful when the job is import, export, migration, cleanup, or portability. It strips out formatting and forces the team to make data explicit.

Use CSV when:

  • renewal data lives in several spreadsheets;
  • you need to import into a register;
  • old formatting is hiding bad fields;
  • you need a repeatable cleanup process for clients or departments;
  • you want a portable export before changing tools;
  • you need to compare what was imported with what existed before.

Use a spreadsheet or Notion database when the job is manual editing, discussion, or review. CSV is not a workflow by itself. It is a transfer format. The workflow starts when somebody owns the records after import.

The field map that prevents bad imports

Name

Use the human-readable name of the subscription, asset, vendor contract, license, or renewal item.

Good examples:

  • Google Workspace;
  • Webflow;
  • Salesforce Sales Cloud;
  • WP Rocket license;
  • Client A hosting plan.

Avoid names like "renewal," "license," or "vendor" with no context. Those names become useless once the row leaves the original spreadsheet.

Vendor

Use the provider or seller name. Standardize spelling before import.

If the old sheet contains "Google," "Google Workspace," "Workspace," and "G Suite," pick one vendor name and use notes for historical context. Reporting and filtering break when the same vendor appears under several names.

Asset type

Use a small controlled set. For example:

  • saas;
  • hosting;
  • domain;
  • certificate;
  • plugin;
  • theme;
  • software_license;
  • vendor_contract;
  • email_service;
  • analytics;
  • ad_tool;
  • other.

Do not create a new asset type for every vendor. The asset type should help review work, not create taxonomy noise.

Owner

The owner is the person or team accountable for the renewal decision. This is different from the vendor, billing contact, or person who knows the password.

A blank owner is not harmless. It means the row cannot produce a decision when the notice window opens. If the owner is unknown, use Unknown or owner_needed rather than leaving the field blank.

If your team often argues about ownership, read Who Owns SaaS Renewals before you import the data.

Group, client, or department

For agencies and MSPs, this is usually the client. For internal IT, it may be department, business unit, or internal service group.

Use one consistent label per group. Avoid mixing Client A, client-a, A Client, and Client A Ltd unless those are truly different records.

Renewal date

Use ISO format: YYYY-MM-DD.

Good:

2026-09-01

Avoid:

09/01/26
1 Sep 2026
September 1st
Q3 renewal
ask Finance

Ambiguous dates are one of the fastest ways to damage trust in the imported register. 09/01/26 can mean September 1 or January 9 depending on locale.

Notice deadline

The renewal date is often not the real decision deadline. Contracts, SaaS plans, hosting terms, and agency agreements may require cancellation notice 30, 60, or 90 days before renewal.

If the notice deadline is unknown, mark it as unknown. Do not assume the renewal date is enough. The guide on renewal date vs notice deadline explains why this field matters.

Billing cycle

Use a controlled set such as:

  • monthly;
  • quarterly;
  • annual;
  • biennial;
  • multi_year;
  • one_time;
  • unknown.

Avoid variations like yearly, annually, 12 months, and per year unless your import process maps them.

Cost and currency

Keep cost numeric and currency separate.

Good CSV shape:

276,EUR

Bad CSV shape:

EUR 276,EUR
276 euros,EUR
about 300,EUR

If the cost is sensitive, missing, or not safe to move through the CSV, leave it blank and add an operational note. Do not put private contract language, payment card details, banking references, passwords, or secret values into a CSV import file.

Auto-renew status

Use a controlled value:

  • true;
  • false;
  • unknown.

Do not treat unknown as false. Unknown is a risk signal. It tells the team the row needs review before the notice deadline. The most expensive renewal problems often come from records that looked complete but had unknown auto-renew status.

Decision status

A renewal register should help the team decide what to do, not only remember a date.

Useful decision statuses include:

  • review_needed;
  • renew;
  • cancel;
  • renegotiate;
  • owner_needed;
  • waiting_for_client;
  • waiting_for_finance;
  • not_in_scope;
  • retired.

Keep the list small enough that people use it consistently. If you need a formal record of the decision, see Vendor Renewal Decision Log.

Last reviewed

This field answers a basic evidence question: when did someone last look at the row?

It is easy to skip. Do not. A row with an old last-reviewed date may be stale even if every other field is filled. This matters for management summaries, handover, and the next person who has to trust the register.

Notes

Use notes for operational context, not secrets.

Good notes:

  • "Client approval needed before renewal."
  • "Finance owns purchase, IT owns admin handover."
  • "Found in old spreadsheet; owner not confirmed."
  • "Plugin appears unused, confirm before notice deadline."

Bad notes:

  • passwords;
  • recovery codes;
  • private contract terms that should stay in a contract system;
  • personal HR details;
  • payment card information;
  • sensitive client data unrelated to the renewal decision.

Cleanup workflow before import

Do not import the old spreadsheet directly. Make a cleanup copy first.

  1. Export or copy the messy sheet into a cleanup tab.
  2. Freeze the original file so you can compare later.
  3. Rename columns to the target CSV headers.
  4. Remove merged cells, comments, formulas, colors, and hidden rows.
  5. Standardize vendor names.
  6. Normalize asset types.
  7. Convert renewal dates to YYYY-MM-DD.
  8. Split cost and currency.
  9. Add notice deadlines where known.
  10. Normalize auto-renew values.
  11. Fill owners where known.
  12. Mark unknown owner, date, notice, and auto-renew values explicitly.
  13. Remove obvious duplicates.
  14. Export as CSV.
  15. Import a small sample first if the target system allows it.
  16. Compare imported rows with the cleanup sheet.

If formulas are involved, copy values only before export. Formula output is safer than formula text in an import file.

The bad-week example

Imagine Finance forwards an annual invoice for a design tool. The old spreadsheet has a row, but the owner is "Design?" and the renewal date is "Sept." The account manager says the client may not need it. The designer says the tool is still used for an archived project. Nobody knows whether it auto-renews.

A messy CSV import turns that ambiguity into a false sense of order.

A clean CSV makes the ambiguity visible:

Design Tool,ExampleDesign,saas,Unknown,Client A,2026-09-01,2026-07-03,annual,276,EUR,unknown,owner_needed,2026-07-30,Client usage and auto-renew status need confirmation before notice deadline

That row is not perfect. That is the point. It tells the truth. The team can now see the owner gap, the notice window, the auto-renew uncertainty, and the decision needed before the charge happens.

How CSV connects to a Renewal Ledger

CSV gets the records into a structured shape. The ledger is where those records become operational.

A maintained renewal register can show upcoming renewals, missing owners, auto-renew uncertainty, decision status, overdue reviews, and cost context where appropriate. It can feed renewal-risk summaries and evidence reports. It can also make handover less dependent on the one person who remembers where the spreadsheet lives.

CertPilot's Renewals & Vendor Register supports CSV import/export for renewal records. It is manual-first: the team remains responsible for accurate data, owner decisions, contract review, and source-system changes. CertPilot does not parse invoices, sync bank feeds, scan inboxes, discover SaaS tools automatically, optimize licenses, cancel subscriptions, or renew contracts.

That boundary matters. The value is not magic discovery. The value is turning known renewal records into dated, owner-backed evidence that can be reviewed and reported.

Import test procedure

Do not make the first import the full import.

Start with a small batch of five to ten rows. Choose a mix: one clean SaaS row, one annual contract, one client-specific asset, one unknown owner, one unknown auto-renew status, and one record with a notice deadline. Import those rows first if the tool allows a small batch.

After the sample import, check the resulting records one by one:

  • Did the renewal date land in the right field?
  • Did the notice deadline stay separate from the renewal date?
  • Did cost remain numeric?
  • Did currency remain a currency code?
  • Did unknown auto-renew stay unknown?
  • Did blank owner become an owner-needed queue rather than disappearing?
  • Did notes import without private data?
  • Did the group or client field filter correctly?

Only import the full file after the sample behaves as expected.

Then reconcile totals. Count rows in the cleanup CSV and count records in the imported register. If 187 rows became 184 records, find the missing three before you trust the import. Duplicates may have been merged, failed, or skipped. That may be fine, but it must be known.

Keep the original spreadsheet and the cleanup CSV for the transition period. If someone challenges a renewal record later, you need to know whether the issue came from the old data, the cleanup step, the import mapping, or a later edit.

Field cleanup examples

Here are common cleanup transformations that make the difference between a CSV that imports and a CSV that can be trusted.

Vendor names should move from mixed labels to one current name. For example, Google, G Suite, and Google Workspace should become Google Workspace unless the records truly refer to separate products.

Dates should move from phrases to ISO dates. next September, Q3, and ask Sarah are not dates. Use a real date or mark the field unknown and add a review note.

Owners should move from memory to a named role. Sam? should become a confirmed owner or owner_needed. If Sam left, use the team now accountable for the decision.

Cost should move from text to numeric amount plus currency. about €300 may be useful in a note, but it should not sit in the cost field if the import expects a number.

Auto-renew should move from implied confidence to an explicit value. If nobody checked the vendor setting or contract terms, use unknown.

These changes are not bureaucracy. They turn a fragile row into a record that can drive review work.

Internal review checklist before import

Before importing, answer these questions:

  • Does every active row have a name and vendor?
  • Does every row have an asset type from a controlled set?
  • Does every active row have an owner or explicit owner-needed status?
  • Are all renewal dates ISO-formatted or marked unknown?
  • Are cancellation or notice deadlines included where relevant?
  • Is auto-renew status true, false, or unknown?
  • Are cost and currency separated?
  • Are private details removed from notes?
  • Are obvious duplicates removed?
  • Is there a last-reviewed date for rows you trust?
  • Is there a backup copy of the original spreadsheet?

If the answer is no, fix the CSV before import. A bad import only moves the mess into a new system.

Use Renewal Tracker Columns That Matter when deciding which fields belong in the register. Use 90-60-30 Renewal Reminder Rules to turn clean records into review habits. Use Software Subscription Handover Checklist for a New IT Admin if the cleanup is part of an IT handover.

If you are comparing tracker options, read How to Choose a Renewal Tracking Tool. If your team is still using Notion, the Notion Renewal Tracking Template shows how to structure it before migration.

Frequently asked questions

What is a SaaS renewal CSV template?

It is a plain-text import/export format for renewal records. It usually includes name, vendor, asset type, owner, group, renewal date, notice deadline, billing cycle, cost, currency, auto-renew status, decision status, last-reviewed date, and notes.

Why use CSV instead of keeping the spreadsheet?

CSV is better for import, export, cleanup, and migration. A spreadsheet is better for manual editing. Many teams use both: spreadsheet for cleanup, CSV for import, then a maintained register for ongoing review.

What date format should renewal CSV files use?

Use YYYY-MM-DD. It avoids regional ambiguity and makes import behavior easier to validate.

Should auto-renew be true or false?

Use true only when auto-renewal is confirmed, false only when it is confirmed not to auto-renew, and unknown when nobody has verified it. Unknown should trigger review.

Can CSV include private contract details?

Usually no. Keep the CSV operational. Do not include passwords, payment details, recovery codes, private contract clauses, or sensitive client information that belongs in a secure contract or finance system.

Does CertPilot import renewal CSV files automatically from other systems?

No. CertPilot supports CSV import/export, but it does not connect to procurement systems, banks, cards, invoices, inboxes, or SaaS admin tools to discover renewal records automatically.

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.