Stripe Checkout & portal
Hosted checkout for every tier and Stripe's customer portal for cards, invoices and cancellations — no card form on your server.
Monthly and yearly Stripe plans that unlock access levels and credits in a left-sidebar member app — for a SaaS, a paid community or a members-only library. Change the plans in one config file; the checkout, webhooks and gating follow.
SITE_PROFILE="subscription-saas"one line picks this site typeHosted checkout for every tier and Stripe's customer portal for cards, invoices and cancellations — no card form on your server.
Each plan maps to an access level. Gate a page, a feature or a sidebar item with one check; lower tiers see the upgrade route.
Plans can grant credits each period with top-up semantics, so a renewal or a retried webhook never double-grants.
Signatures verified on the raw body, deliveries recorded and claimed, so repeats and out-of-order events can't corrupt state.
Plan changes, cancellations at period end and failed-payment states flow back from Stripe and update access.
Subscriptions, payments and the credit ledger per user in the admin, with operator actions and an audit trail.
Visitor chooses a tier on /pricing and pays in Stripe Checkout.
The signed event is verified, recorded once and mapped to the plan.
The account gets its access level and the period's credits.
Renewals, upgrades and cancellations update access automatically.
Screenshots of the template running locally with sample data, on the house design. Switch SITE_DESIGN and the public pages wear any of the other designs.
SITE_PROFILE="subscription-saas" STRIPE_SECRET_KEY="sk_live_…" STRIPE_WEBHOOK_SECRET="whsec_…" STRIPE_PRICE_PRO_MONTHLY="price_…" STRIPE_PRICE_PRO_YEARLY="price_…"
Copy the folder and run the installer — it creates the database and secrets.
php scripts/install.phpIt checks every key, extension and permission and names anything missing.
php scripts/doctor.phpNGINX + PHP on any small VPS, with the step-by-step deploy guide and nightly backups.
Yes. Plans, access levels and credit allowances live in app/subscriptions.php and each Stripe price id goes in .env. Rename, add or remove tiers there.
Yes. Every tier can have a monthly and a yearly Stripe price, and the pricing page shows a monthly/yearly toggle.
Stripe collects the payment and sends the events; the app verifies them and updates the subscription state and access. Customers manage their card and cancel in Stripe's portal.
Full source, every site type, the admin, the CMS, 43 designs and the deploy guides — £49, once. Unlimited own and client projects.