WWebBuddyMarketplace
Selling it

Selling it as SaaS

Plans and feature keys, connecting Stripe, PayPal and Razorpay for subscriptions, what happens after a payment, and which licence you need to charge customers.

8 min readUpdated Oct 17, 2026Applies to LinkNest 1.0.0

On this page

LinkNest can run as a multi-tenant service: creators sign up, each gets a page, and they pay you monthly for a plan. Everything on this page is optional if you run it for yourself.

Important

Check your licence first. On CodeCanyon, the Regular License covers one end product whose end users are not charged. If your customers pay to use what you build with LinkNest (a subscription, a paid plan, any fee), you need the Extended License. Read Envato's licence terms for the authoritative wording; this note is a summary, not legal advice. The documentation/index.html help file in the package describes the Regular License more loosely; Envato's page is what counts.

Plans

Three plans are created by the migrations. Every new page starts on Free.

Plan Price Button Feature keys
Free $0 Start free links, themes_basic, analytics, emails
Pro (featured) $6 / month Go Pro Free's keys plus themes_all, fonts, custom_bg, hide_branding, inbox, shop, schedule, share_kit, tips, locks, now, live_status, copilot, experiments, custom_domain, broadcasts
Premium $12 / month Talk to us Pro's keys plus faces, face_schedule, team, guests, letter, place, place_commerce

Under Admin → Plans you can edit each plan's name, monthly price in USD, blurb, button label, featured flag, whether it is shown on /pricing, its feature keys and an optional gateway price ID, and add new plans. Deleting a plan moves its pages to Free; the Free plan cannot be deleted.

Note

The module keys (live_status, copilot, experiments, custom_domain, broadcasts, and on Premium faces, face_schedule, place and place_commerce) are added by migration 0015, to the plans with the IDs pro and premium only. It adds keys and never removes any, so keys you ticked yourself stay, and it also runs when you update an existing install: a key you had deliberately left off Pro or Premium is now on it. Review Admin → Plans after updating. Plans you created yourself are not touched.

There are no usage limits in plans (no caps on links, views or pages). The only built-in limit is the co-pilot's 40 runs per page.

Feature keys

Ticking a key in a plan unlocks something for the pages on that plan. Seven keys are checked on the server, marked "Server" below. The others are checked only in the studio's interface, or not at all; those that are not checked are labels on the pricing page until the code uses them.

Key Admin label Checked What it unlocks
links Links No Every page can add links.
themes_basic Core themes No The first 6 themes are always available.
themes_all All themes Studio All 18 themes on Look
fonts All typefaces Studio All 9 typefaces on Look
custom_bg Background photo Studio The background photo on Look
analytics Analytics No Insights is open to every plan.
hide_branding Hide LinkNest mark Public page Removes the platform mark from the public page
inbox Inbox Studio The Inbox screen and the message form on the public page
shop Shop / products No Products live under Earn, which needs tips.
schedule Scheduled links No Every page can schedule links.
share_kit QR + story cards Studio The Business cards tool
tips Support button Studio The Earn screen
locks Locked links No Every page can lock links.
now Now pin No Every page can pin a link.
emails Collect emails No Every page can collect emails.
faces Extra pages No Every page can add faces.
face_schedule Face campaign schedules Server The campaign schedule on each face, and whether the public page follows it
live_status Live status strip Server Publishing a live status, and showing it on the public page
copilot AI page co-pilot Server The Co-pilot screen: running, reading usage and applying plans
team Team seats No Every page can list teammates.
guests Guest page No Every page can create guest pages.
letter Weekly letter No Every page can turn on the weekly letter.
place Place mode Studio The Place screen (as does place_commerce)
place_commerce Place specials + table QR Server Specials and table QR stations, and showing specials on the public page
experiments Link A/B tests Server A/B title tests, and splitting visitors between titles on the public page
custom_domain Custom domain Server Saving and verifying a custom domain, and serving the page on it
broadcasts Email broadcasts Server Sending broadcasts and listing past ones

"Studio" keys are checked in the browser only: a creator who calls the server functions directly can use them without the key. hide_branding is applied when the public page is drawn from the plan's keys, so it holds. Where a server check fails, the creator sees a message such as "Email broadcasts is not on your plan. Upgrade to use it."

Warning

Twenty of the 27 keys have no server check, and twelve of them (links, themes_basic, analytics, emails, shop, schedule, locks, now, faces, team, guests, letter) are not checked anywhere. Treat those parts of a plan as packaging for honest customers, and see Known limitations.

The pricing page

/pricing lists every plan marked as shown, in the order of the admin list, with prices in whole US dollars and one checkout button per connected gateway. A visitor who is not signed in is asked to sign up first. A creator can also reach it from Settings → Change plan.

Setting up the gateways

Connect at least one under Admin → Payment settings, use Test connection, then register the webhook shown on that screen with the provider. Without a verified webhook, cancellations and renewals are not seen.

Stripe

  1. Paste the publishable key, secret key and, after step 2, the webhook signing secret.
  2. In Stripe, add a webhook endpoint at https://<your-domain>/api/stripe/webhook for these events:
    • checkout.session.completed (subscriptions, tips and products)
    • customer.subscription.updated
    • customer.subscription.deleted
  3. Turn on the customer portal in Stripe (Settings, Billing, Customer portal) so Manage card works.
  4. Optional: create a recurring price per plan in Stripe and paste its ID (price_…) into the plan. Without one, checkout creates a monthly USD price from the plan's price, with the product named "LinkNest" plus the plan name.

Use test keys first; Stripe's test card 4242 4242 4242 4242 completes a checkout. When the creator returns, /dashboard/settings?billing=success checks Stripe and switches the plan straight away; the webhook keeps it in sync afterwards.

PayPal

  1. Create a REST app in the PayPal developer dashboard and paste its client ID and secret.
  2. Add a webhook at https://<your-domain>/api/paypal/webhook for BILLING.SUBSCRIPTION.ACTIVATED, BILLING.SUBSCRIPTION.CANCELLED, BILLING.SUBSCRIPTION.EXPIRED and BILLING.SUBSCRIPTION.SUSPENDED, plus CHECKOUT.ORDER.APPROVED and PAYMENT.CAPTURE.COMPLETED if you take tips through PayPal.
  3. Paste the webhook ID PayPal shows. It is required: without it every PayPal webhook is refused with 503, and each event is verified with PayPal before it is used.
  4. Switch off Sandbox when you move to live credentials. It is on by default.

Each PayPal checkout creates a new PayPal product and billing plan for that subscription, at the plan's price in USD. Gateway price IDs are not used for PayPal.

Razorpay

  1. Paste the key ID and key secret, and choose the currency: USD (default) or INR. For INR, also enter INR per 1 USD, for example 83.5.
  2. Add a webhook at https://<your-domain>/api/razorpay/webhook with a secret, and paste the secret. Events: subscription.activated, subscription.cancelled and subscription.completed, plus payment_link.paid if you take tips through Razorpay.
  3. Each checkout creates a Razorpay plan and subscription and sends the creator to Razorpay's hosted page.

Every price in LinkNest (plans, tips and products) is stored in US dollars. Razorpay charges it in USD unless you choose INR and save a rate; then the amount is converted at that rate and charged in rupees. A $6 plan at 83.5 is charged ₹501. The rate is a fixed number you set: LinkNest does not update it, so review it from time to time. If INR is chosen but the rate is empty, Razorpay charges USD. The rate must be a positive number; anything else is refused when you save.

Important

Before relying on the USD default, check with Razorpay that your account can accept USD (international payments) for subscriptions and payment links. If you used the old workaround of entering plan prices in rupees (499 for ₹499), change the prices back to dollars and set a rate after updating, or Razorpay will charge 499 US dollars, or 499 times your rate in rupees.

What happens after a payment

Event Result
Checkout completed, subscription active The page moves to the plan, its status is "active", and a row is written to the payment ledger in Admin → Finance.
Subscription cancelled, expired or unpaid The page moves back to Free.
Stripe subscription past due The page moves back to Free with the status "past_due". There is no grace period.
Plan changed under Admin → People Applied at once, recorded with the provider "admin". The gateway is not told, and its next webhook wins.

The ledger records the plan's list price, not the amount the gateway actually charged, and it is not reconciled against the gateway. Estimated MRR in Finance is the sum of the list prices of every page on a paid plan, including ones you set by hand.

Before you launch a SaaS

  • Buy the right licence (see the top of this page).
  • Set ADMIN_EMAILS and register every listed address on the live site before you share the URL (Admins).
  • Set SETTINGS_ENCRYPTION_KEY before you save payment keys, and keep it (Encrypted payment secrets).
  • Review the feature keys on each plan, set prices in US dollars and, if you charge INR through Razorpay, set the rate.
  • Unpublish or delete the four sample pages (Admin).
  • Set the brand, SEO text and share image under Admin → Brand, and replace public/og.jpg.
  • Read Earn and payouts before you let creators take tips: the money comes to you.
  • Set a spending limit on your xAI account if the co-pilot is on.
  • Read Known limitations so your own sales pages promise only what the product does.