SaaS Monetization & Stripe Billing

Enable Billing & SaaS Monetization

Complete guide on connecting Stripe, creating subscription & one-time plans, enforcing table row limits, and user billing portals.

SaaS founders and application developers7 min read

Enable Billing & SaaS Monetization

NoCodeBackend provides a complete, turnkey monetization engine that turns any database into a multi-tiered SaaS application in minutes. With zero backend billing code or manual webhook configuration required, you can connect your Stripe account, create recurring subscriptions or one-time payment plans, and enforce database table row limits automatically.


How It Works

  1. Direct Payouts: Connect your Stripe account via Stripe Connect. Customer payments and subscriptions go directly to your Stripe account.
  2. Plan & Limit Enforcement: Set maximum row limits per table for each plan (e.g., Free tier gets 5 projects, Pro tier gets 500 projects). NoCodeBackend automatically enforces these limits on your create operations.
  3. Turnkey End-User UI: The @nocodebackend/account-react component provides a pre-built Billing tab where your users can view their active plan, upgrade/downgrade, and open the Stripe Customer Portal to manage cards and invoices.

Step 1: Open Enable Billing

  1. Go to your NoCodeBackend DashboardMy databases.
  2. Click the 3 dots (⋮) menu on the database card you want to monetize.
  3. Select "Enable billing" (or navigate to /databases/<your-database>/monetization).

Step 2: Connect Your Stripe Account

  1. On the Enable Billing page, click Connect with Stripe.
  2. Complete the Stripe Connect onboarding flow to link your bank account for customer payouts.
  3. Database Isolation & Account Reuse:
    • Each database on NoCodeBackend can have its own dedicated Stripe account.
    • If you have already connected a Stripe account for another database, you can select "Use existing account" to link the same Stripe account with one click.

Step 3: Turn On SaaS Monetization

  1. Toggle the Enable SaaS Monetization switch to ON.
  2. Once enabled, you can immediately begin creating pricing plans and setting usage limits for your application.

Step 4: Create Pricing Plans

Click Add Plan to configure your pricing tiers with the following options:

  • Plan Name: The display name of your tier (e.g., Starter, Pro, or Lifetime Deal).
  • Billing Type:
    • Recurring: For monthly or annual subscription plans.
    • One-Time: For lifetime access, credit packs, or standalone purchases.
  • Interval (for recurring plans): Choose Month or Year billing frequency.
  • Price & Currency: Set your price and select the currency (e.g., $19.00 USD).
  • Free Plan: Check this box if the tier is a $0 free plan.

Setting a Default Plan

In the Default Plan dropdown, select which plan new users are automatically assigned when they register in your application (typically your Free tier).


Step 5: Configure Table Row Limits

Enforce feature paywalls by setting the maximum number of records users on a given plan can create in specific tables.

  1. Under your chosen plan, click Add Limit.
  2. Select the Table to restrict (e.g., projects, documents, tasks).
  3. Set the Max Rows:
    • Enter a specific number (e.g., 5 for Free, 500 for Pro).
    • Leave blank or set to Unlimited for no row restrictions.
  4. Set a Feature Label (e.g., Active Projects) to display as a user-friendly label on your user's billing dashboard.

How Row Limits Are Enforced

When an end user attempts to create a record in your application:

  • Within Quota: The record is created successfully.
  • Quota Exceeded: NoCodeBackend returns a 402 Payment Required response with an upgrade notice, protecting your database against unauthorized usage.

Step 6: Customer Checkout & Billing UI

Option A: Using the @nocodebackend/account-react Component (Recommended)

If you installed the @nocodebackend/account-react package in your app, your users automatically get a complete customer billing dashboard:

  • Billing Tab: Displays their active plan, live usage progress bars against table quotas, and available upgrade options.
  • 1-Click Checkout: Clicking Upgrade redirects directly to Stripe Checkout with your app's return URLs handled automatically.
  • Stripe Customer Portal: Active subscribers see a Manage Billing button that opens Stripe's hosted portal where they can update payment methods, download invoices, or cancel their subscription.

Option B: Custom Frontend Checkout API

If you are building a custom pricing page or billing UI in your frontend, initiate checkouts using the API proxy:

// Trigger checkout session
const res = await fetch("/api/ncb/account/billing/checkout", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  credentials: "include",
  body: JSON.stringify({
    plan_id: "YOUR_PLAN_ID",
    success_url: window.location.origin + "/dashboard?payment=success",
    cancel_url: window.location.origin + "/dashboard?payment=cancelled",
  })
});

const { url } = await res.json();
if (url) window.location.href = url;

Step 7: Automatic Webhook Sync

You do not need to configure any webhook endpoints in Stripe! NoCodeBackend automatically receives and verifies Stripe webhook events in the background:

  • Subscription Created / Renewed: Instantly updates user access and billing cycle dates.
  • Subscription Cancelled: Automatically downgrades the user back to your default Free plan.
  • Payment Failed: Marks the subscription as past due so your app can prompt for updated payment details.
Enable Billing & SaaS Monetization | Help Center