Before Your SaaS Takes Its First Payment: The 14-Point Checklist Founders Skip

Short answer: a SaaS is ready to take its first payment when a card can be charged exactly once, the customer gets what they paid for immediately, a failed or cancelled payment takes it away again on schedule, and the customer can see, change and cancel their plan without emailing you. That is fourteen specific things, listed below. Launch day marketing is a separate list.

I have wired billing on three products with different shapes: per-restaurant subscriptions with plans and checkout on Spinfluence (/work/spinfluence), creator subscriptions on Scriva (/work/scriva), and two products with two price points billed from one codebase on Clinical Stack (/work/clinical-stack). The checklist is the same each time.

Why launch playbooks miss this

Search "SaaS launch checklist" and you get waitlists, positioning and launch posts. Useful, but they assume billing works. Billing is where the embarrassing failures live: the customer charged twice, the trial that never ended, the cancelled account that kept working for a month, the invoice that did not exist when a finance team asked for it.

Before you build subscriptions at all

One honest step first. If you have fewer than ten customers and they are companies, consider invoicing them manually for the first months. A 2026 Mercury article makes this case well: early revenue rarely fits neat self-serve plans, and founders overbuild billing before they know how customers want to pay (source below). Build the subscription system once you know the plan shapes. When you do, here is the list.

The charge

1. Hosted checkout, not a custom card form. Use the payment provider's hosted checkout or embedded element. It keeps card data off your servers and handles the bank authentication steps that vary by country.

2. Webhook signatures verified. Every event from the provider is checked against its signature before anything happens. Unsigned requests are dropped and logged.

3. Handlers that can run twice safely. Providers retry webhooks. If "payment succeeded" arrives twice, the customer must be upgraded once. Store the event ID; if it has been seen, do nothing.

4. Access granted by the webhook, not by the redirect. The "thank you" page can be reached by a bookmark. Only the provider's confirmed event unlocks the plan.

The lifecycle

5. Every subscription state mapped to what the user can do. Trialing, active, past due, cancelled, paused. Write the table before coding; it is the acceptance criteria.

6. Trials that end. On the end date the account either converts or loses access, automatically, with a reminder email three days before.

7. Failed payments handled. The provider retries over a period; your app shows a banner, sends the emails, and downgrades on the final failure. Decide the grace period in days and write it down.

8. Cancellation that takes effect at period end, and a reactivation path. Cancelled customers keep what they paid for until the date, then lose it. Coming back should be one click, not a new account.

9. Plan changes with proration you have checked. Upgrade mid-month and look at the invoice line by line before launch. Downgrade and check again.

The customer

10. A self-serve portal. Update card, download invoices, change plan, cancel. The provider's hosted portal is enough and saves a month of work.

11. Invoices with the right details. Legal name, address, tax number field, invoice number. Finance teams ask on the first renewal.

12. Transactional email that arrives. Receipts, failed-payment notices, trial reminders, from a sender with SPF, DKIM and DMARC set up. Test that they land in the inbox, not the spam folder, on two providers.

The paperwork

13. Terms of service and privacy policy written against the real stack. Not a template that mentions services you do not use. The Clinical Stack site carries a privacy policy written against its actual data flows, which is what a buyer's lawyer looks for.

14. Tax handled or explicitly deferred. Sales tax, VAT and GST rules depend on where your customers are. Either turn on the provider's tax product or decide, in writing, which countries you sell to for now.

Two products, one checkout

If you sell more than one thing, decide early whether it is one subscription with tiers or separate products. Clinical Stack sells a chat-first assistant at two price points and a full scheduling platform at two more, from one codebase; each practice is routed to the right product at login and the billing records carry a product field from day one. Retrofitting that field later touches every report.

What to test on a Friday afternoon

Run the real flow with a real card in test mode, as a stranger: sign up, trial, let the trial end, pay, upgrade, fail a payment with the provider's failing test card, cancel, come back. Read every email you receive. Open every invoice. If any step needs you to touch the database by hand, that step is not finished.

Wiring billing into your product?

Tell me what you sell, how many plans, and whether customers are individuals or companies. I will reply with the subscription-state table I would start from and which of the fourteen points your current build is missing. Form at /contact, or see /services/mvp-development.

Sources

  • "How SaaS founders can get paid before setting up Stripe Billing", mercury.com/blog, accessed 2026-10-07.
  • "SaaS Product Launch Strategy: A Playbook for Founders (2026)", dodopayments.com, accessed 2026-10-07.
  • "How to start a SaaS business", stripe.com resources, accessed 2026-10-07.

Questions people ask

What should be in place before a SaaS charges its first customer?

Hosted checkout, verified and idempotent webhooks, access granted by confirmed events, a mapped subscription-state table, trials that end, failed-payment handling, period-end cancellation, checked proration, a self-serve portal, proper invoices, deliverable transactional email, real terms and privacy pages, and a tax decision.

Should I build subscriptions before I have customers?

If your first customers are a handful of companies, invoicing them manually for the first months is often better. Build subscriptions once you know the plan shapes customers want.

Why can a customer be charged twice?

Payment providers retry webhooks. If your handler does not record the event ID and skip repeats, the same "payment succeeded" event can run twice.

How should failed payments be handled?

Let the provider retry over a set period, show a banner in the app, send the notices, and downgrade on the final failure. Write the grace period down before building.

Do I need a customer portal at launch?

Yes. The provider's hosted portal covers card updates, invoices, plan changes and cancellation and saves weeks of work.

Have a project like this in mind?

Tell me what you're building