SaaS starter (Razorpay)

The base of a subscription SaaS billed in INR: 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 Razorpay Subscriptions. Owners pick a plan and authorise UPI AutoPay or a card mandate on Razorpay's hosted page; Razorpay's signed webhook is the only thing that activates the plan, records each charge as an invoice, flags failed payments and drops a cancelled workspace back to Free. Owners cancel at the end of the period from the app. Admins see revenue, customers, invoices and every billing event. Works with Razorpay test keys.

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

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

What's inside

Landing page with live pricing in INR 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: subscribe on Razorpay, cancel at period end. 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
  • 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, razorpay_plan_id, project_limit, seat_limit, …
  • subscription workspace_id, plan_id, status, sync, current_period_end, cancel_at_period_end, razorpay_subscription_id, authorize_url
  • 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 Razorpay confirms it.
  • subscription Only Razorpay 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 Razorpay subscription for a workspace plan

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

  6. Apply Razorpay's subscription events

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

  7. Cancel a Razorpay subscription at the end of the period

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

  8. Check a subscription with Razorpay (fallback)

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

  9. Apply what Razorpay 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 RAZORPAY_KEY_ID secret (project settings); add the RAZORPAY_KEY_SECRET secret (project settings); add the RAZORPAY_WEBHOOK_SECRET secret (project settings). A Razorpay account (test mode is fine) with Subscriptions enabled and a plan per paid tier; paste each plan_... id into the plan. A Razorpay webhook (Settings, Webhooks) at the URL get_contract lists for razorpay-billing-events, for the subscription.* events, with its secret in RAZORPAY_WEBHOOK_SECRET.

  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 (Razorpay) template (slug "saas-starter-razorpay") with use_template. Call it "My SaaS starter (Razorpay)", then sign in as each role, verify it and tell me what to change first.
MCP call
{
  "tool": "use_template",
  "arguments": {
    "slug": "saas-starter-razorpay",
    "name": "My SaaS starter (Razorpay)"
  }
}
CLI
appbricx templates use saas-starter-razorpay --name "My SaaS starter (Razorpay)"

Works with

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

Make it yours in plain words.