Skip to content

No-card trial playbook ​

Who this is for: Anyone copying SchoolRota signup and billing into another product (Inclusion Loop and later apps)
What you'll achieve: A trial that starts without a card, then converts from the owner billing screen

Canonical copy for other repos: docs/NO_CARD_TRIAL_PLAYBOOK.md. Slide version: docs/NO_CARD_TRIAL_BRIEFING.md. End-user SchoolRota steps: Sign up and start your trial.

Why ​

Card-at-signup stops organisation trials. Finance owns the card. The person who wants to try the product does not. This offer removes that gate:

Start a 30-day free trial. No card required. One trial per organisation.

Signup proves an organisation email and starts a workspace. Payment is later, in the owner billing screen. There is no automatic charge.

Do not put “no card required” on a clone’s public site until that clone’s signup, expiry, reminders, owner billing, and conversion all work.

Journey ​

  1. /signup stores a pending signup and reserves the portal. No Stripe. No tenant.
  2. Verify email (opening the link does not start the trial).
  3. Set a password. That creates the tenant, starts the 30-day clock, and signs them in.
  4. Owner continues in Admin → Billing with a card (usual path) or a purchase-order request (backup).
  5. During the trial, saving a card keeps the remaining free days. The first charge is the stored end date. After expiry, checkout charges when payment is confirmed.
  6. If they do not pay, they can still view and export. Editing and publishing pause. Billing stays open.

Rules every clone must keep ​

  • Organisation email only. Personal inboxes are rejected on the public form.
  • One trial per organisation. Colleagues are invited in.
  • Consent names the plan, price, renewal, and first charge date.
  • Invoice price is 12 times the monthly list. The annual-card saving is card-only.
  • A purchase-order request does not restore editing.
  • Checkout never creates a tenant.
  • Production absolute links use APP_URL, not a spoofable Host header.

Where it lives in SchoolRota ​

PiecePlace
Trial length and reminder windowspackages/domain/src/billing-tiers.ts
Signup and activateapps/web/src/app/api/signup/*
Conversionapps/web/src/server/services/billing-conversion.ts
Access after expiryapps/web/src/server/services/tenant-access.ts
Owner UIAdmin → Billing, ChoosePlanCard
Emailspackages/emails welcome + trial reminders
Cron/api/cron/trial-lifecycle

Do not copy duty-rota import or the setup wizard into Inclusion Loop. Copy only this control-plane path.

Next ​

SchoolRota documentation. Every slot covered, every day.