In this guide 6 sections
A SaaS product needs more than customer-facing features. It needs a tenant boundary, plans with limits, self-service signup, recurring billing with dunning, an operator console, and tools to export and delete a customer’s data. Build the tenant boundary first, attach plans, signup and billing to it next, and add the operator console before the first paying customer logs in.
Your internal system was built for one owner
An internal system trusts everyone who logs in: one company, one set of masters, and one admin who fixes things straight in the database when a record goes wrong. It ends when company two signs up.
Look at what your current tool assumes: a single tax setup, a hard-coded company name on invoices, and one shared item list. Each of those assumptions is a doorway through which customer A could read customer B’s invoices, stock or price list, and nobody would notice until a complaint arrived.
Your customers’ favourite features are usually built already. The work ahead is the scaffolding around them, which has its own build order, so plan it before the first paying sale.
Draw the tenant boundary before anything else
Every table that holds customer data needs a tenant key, and every query, report and export must filter on it without exception. Decide now whether tenants share one database with a tenant_id column, get a schema each, or get a database each, and record the choice before building.
The choice shapes backups, reporting and the cost of a noisy customer who runs heavy exports at month end and slows everyone else down. A shared schema is cheapest to run. A database per tenant makes restoring one customer’s data from last Tuesday much simpler, though you pay for it with more servers to patch and back up.
Files, search indexes, caches, queued emails and background jobs all need the same tenant key, or a job started for one customer can read another’s. Teams remember the tables. They forget the uploads folder. That is the leak.
- Tenant key on every table, file path and cache entry
- Row-level filtering enforced in one place, not in each query
- Per-tenant encryption keys if contracts demand them
- A test suite that logs in as tenant A and requests tenant B’s IDs
Plans, trials and limits turn features into products
A subscription needs its own catalogue: plans, add-ons, seat counts, usage meters, trial length, and exactly what happens to the account when a trial ends. Store these as data. Scattering if-statements through the code means a developer must ship a release for every price change, every new add-on and every special deal the sales team agrees.
Tie feature flags to the plan. Sales can then change a package, switch a module on for one customer and test a new bundle, all without waiting for a developer to release anything. Limits need a friendly failure. Show a warning at the threshold, then a block with an upgrade path at the cap, so the customer never meets a raw error page mid-task.
Self-service signup comes with it. A visitor enters an email, verifies it, names the workspace and lands in an account already seeded with sample masters and a demo company within a minute. Hand setup costs you on every sale.
Billing and dunning decide whether revenue arrives
Recurring billing is more than a gateway button. You need invoices with the customer’s tax details, proration when someone upgrades mid-cycle, credit notes, and a retry schedule when a card fails.
Dunning is the retry schedule plus the messages around it, for example a soft email on day one, a warning on day five and read-only access on day twelve. Leave the data intact. A late payer should be able to pay the invoice and walk straight back into a working account, with every record exactly as they left it.
Test the ugly cases before launch: expired cards, a downgrade after a refund, a customer who pays twice, and a webhook that arrives a day late. Finance meets them all in month one.
- Invoice numbering that stays gapless per legal entity
- Proration rules written down before coding
- Grace period and read-only state after a failed payment
- Webhook handling that survives duplicates and late events
Give your own team a console, then plan the exit
Support must see what a customer sees. An operator console lets staff search tenants, view plan and usage, reset a user, extend a trial and impersonate a login with an audit trail. Without it, engineers run queries against production.
Log who looked at what and why. Customers in regulated trades such as pharmaceutical distribution or food processing will ask to see that audit log during supplier due diligence. Keep it ready.
Finish with the exit. Customers will want a full export of their invoices, items and users, and some will demand deletion with a written confirmation that every copy is gone. Build the export job and the deletion job now, then run both on a test tenant this month and keep the result as proof for the first security review.
SaaS readiness worksheet
Seven rows run down this single sheet: tenant boundary, plans and limits, signup, billing, dunning, operator console, and export with deletion, one per topic above. Each row has four columns: what the internal system does today, what a paying customer needs, the gap, and the build order number. A last column names the signer.
Open a blank worksheet to printQuestions owners ask
Which should I build first when turning a tool into a SaaS product?
The tenant boundary comes first. Plans, signup and billing all attach to it, and building them on a single-company design means rewriting each one the week real customers arrive.
Do I need an operator console before my first customer?
A thin one, yes. It needs search by tenant, a view of plan and usage, a password reset, and audited sign-in as a user, which covers most support questions. Bulk tools can wait. Ad hoc database edits, though, turn into a liability once two customers share one database and nobody remembers who changed what last month.
Can a payment gateway handle recurring billing alone?
Rarely. A gateway takes the payment and nothing more. Proration, invoices, retries, plan changes and access control still need logic of your own, or a billing platform sitting on top of the gateway.
Why plan data export and deletion so early?
Enterprise buyers ask in the first security review. It is also far easier to build while the data model is small than after dozens of tables hold tenant data, and each new table adds another export rule.
