SaaS starter (Stripe)

The base of a subscription SaaS: a landing page with live pricing, self-serve sign-up, workspaces with owners, admins and members, email invitations, a sample Projects feature whose limits follow the plan, and billing on Stripe. Owners upgrade on Stripe Checkout and manage cards, plan switches and cancellation in Stripe's customer portal; Stripe's signed webhook is the only thing that marks a plan active, records invoices, flags failed payments and drops a cancelled workspace back to Free. Admins see revenue, customers, invoices and every billing event. Works with Stripe test keys.

Members sign up from the landing page and work in workspaces (owner, admin, member). Admins run the business.

SaaS starter (Stripe) on desktopSaaS starter (Stripe) on a phone

What's inside

Landing page with live pricing from the plan table. Workspaces with owners, admins and members; invitations by email. Projects as the sample feature, limited by the workspace's plan. Plans and billing page: upgrade on Stripe Checkout, manage in Stripe's portal. Admin: revenue, plans, customers, accounts, invoices and the billing event log.

Tables

  • member name, email, job_title, avatar
  • admin name, email
  • workspace name, owner_id, plan_id, website, stripe_customer_id
  • membership workspace_id, member_id, role, status, member_name, member_email
  • invitation workspace_id, email, role, status, invited_by
  • plan name, description, price, currency, interval, stripe_price_id, project_limit, seat_limit, …
  • subscription workspace_id, plan_id, status, sync, current_period_end, cancel_at_period_end, stripe_session_id, stripe_subscription_id, …
  • invoice workspace_id, subscription_id, number, amount, currency, status, hosted_url, period_start, …
  • project workspace_id, name, description, status, due_on
  • billing_event type, summary, workspace_id, event_id, received_at

Roles

  • member Member, consumer
  • admin Admin, staff

Pages

  • / Home
  • /workspaces Workspaces (member)
  • /workspaces/:id Workspace (member)
  • /projects Projects (member)
  • /people People (member)
  • /billing Plans and billing (member)
  • /revenue Revenue (admin)
  • /plans Plans (admin)
  • /all-workspaces Customers (admin)
  • /accounts Accounts (admin)
  • /invoices Invoices (admin)
  • /billing-events Billing events (admin)
  • and 2 more

Components

  • WorkspaceBilling Plans for the workspace you administer, its subscription, upgrade and manage billing

Rules on every write

  • workspace The plan changes through billing
  • membership The owner stays the owner
  • invitation No seats left
  • subscription A paid plan starts pending until Stripe confirms it.
  • subscription Only Stripe changes a subscription.
  • project Your plan's project limit is reached

How its workflows run

Each one is a server workflow in your project: it runs on its trigger, with retries, and its runs show in the builder's log.

  1. Set up a new workspace

    When a row changes: workspace created. Then: Look up member, then Update workspace, then Create membership.

  2. Add or invite a teammate

    When a row changes: invitation created. Then: Look up workspace, then Update membership, then Create membership, then Send email.

  3. Accept invitations when someone signs up

    When a row changes: member created. Then: Look up invitation, then Create membership, then Update invitation.

  4. Show names on workspace memberships

    When a row changes: membership created. Then: Look up member, then Update membership.

  5. Start a Stripe Checkout for a workspace plan

    When the app calls it: server function (member). Then: Look up member, then Call api.stripe.com, then Create subscription.

  6. Apply Stripe's billing events

    When a webhook arrives: webhook stripe-billing-events. Then: Look up subscription, then Update subscription, then Look up subscription, then Update subscription, then Create subscription, then Look up subscription, then Update invoice, then Create invoice, then Send email.

  7. Open Stripe's billing settings for a workspace

    When the app calls it: server function (member). Then: Look up subscription, then Call api.stripe.com.

  8. Check a subscription with Stripe (fallback)

    When the app calls it: server function (member, admin). Then: Look up subscription, then Call api.stripe.com, then Update subscription.

  9. Apply what Stripe said about a subscription

    When a row changes: subscription updated, when sync is requested. Then: Update subscription, then Look up subscription.

  10. Weekly billing summary for admins

    On a schedule: schedule weekly mon 08:00 over invoice. Then: Send email.

Set it up

It starts a new project, with its data, roles and sign-in ready.

  1. Start the project

    Use the button above, or ask your coding agent with the Appbricx MCP server connected (quickstart).

  2. Connect what it calls

    add the STRIPE_SECRET_KEY secret (project settings); add the STRIPE_WEBHOOK_SECRET secret (project settings). A Stripe account (test mode is fine) with a recurring price per paid plan; paste each price_... id into the plan. A Stripe webhook endpoint at the URL get_contract lists for stripe-billing-events, with its signing secret in STRIPE_WEBHOOK_SECRET. Stripe's customer portal turned on (Settings, Billing, Customer portal).

  3. Sign in as each role

    The demo logins open each role's home. Change what you like in plain words or in the contract.

  4. Deploy

    When dev looks right, deploy. Production gets a snapshot first, so you can roll back.

Use it with your coding agent

The agent creates the project, builds it and signs in as each role.

Prompt
Start a new Appbricx project from the SaaS starter (Stripe) template (slug "saas-starter-stripe") with use_template. Call it "My SaaS starter (Stripe)", then sign in as each role, verify it and tell me what to change first.
MCP call
{
  "tool": "use_template",
  "arguments": {
    "slug": "saas-starter-stripe",
    "name": "My SaaS starter (Stripe)"
  }
}
CLI
appbricx templates use saas-starter-stripe --name "My SaaS starter (Stripe)"

Works with

The services this template calls. Each page lists every action and what connecting it takes.

Make it yours in plain words.