Documentation  ·  Revolutionary License Server 0.16.7

Set up your own license server.

Products, licenses and releases, in one place.

A complete guide to selling a WordPress plugin or theme: products, checkout, licensing, releases and the settings behind all of it.

Released version 0.16.7

Current release setup and checks

Manage licenses, activation limits, products, subscription checkout and software updates.

  • The customer account and checkout success screen use the theme color mode and the Revolutionary Plugins brand.
  • The revolutionary_version shortcode reads the published product version from the release source.

Check your setup

  • Configure product and release records in your own test installation before connecting a payment provider.
  • Verify activation limits, update entitlement and expired-license behavior with test licenses. Do not expose license keys or payment credentials in screenshots.

Watch the walkthrough

Add an archived demo product to the License Server catalog

Create a fictional archived catalog product in Revolutionary License Server and verify its saved settings. No license key, payment credential, checkout or update endpoint is created or connected.

Recording release: 0.16.5. Captured on an isolated demonstration site.

Chapters

Quick start

Up and running in minutes

Step 1

Create a product

License Server, Products, Add New. Set a price, billing interval and activation limit.

Step 2

Connect a payment processor

License Server, Settings, Stripe (or Square). Paste your test keys first and place a test purchase before switching to live.

Step 3

Publish your first release

License Server, Releases. Upload a zip, or add a repository source and push to it.

Step 4

Put the checkout on a page

Add the Pricing widget (Revolutionary Blocks) or the [rls_pricing] shortcode to any page.

Start here

Where everything lives

Everything is under Revolutionary Plugins, License Server in wp-admin: Dashboard, Licenses, Add License, Products, Releases and Settings.

What each screen is for

  • Dashboard: totals and recently created licenses
  • Licenses: search, filter, bulk actions and CSV export of every license issued
  • Add License: issue one license by hand
  • Products: what is for sale, and its price, interval and activation limit
  • Releases: upload zips, or manage a repository source that syncs them for you
  • Settings: Stripe, Square, email, update source and security

Start selling

Products

A product is what is sold at checkout: a name, a price, a billing interval, an activation limit, and the Stripe or Square identifiers it maps to.

yoursite.com/wp-admin/admin.php?page=rls-products
Products you define

Adding one

License Server, Products, Add New. Choose a billing interval (one time, monthly, yearly, or every N periods), an activation limit (how many sites one license may activate), and paste the matching Stripe test and live price IDs. Square needs a sandbox and a production plan variation ID if you take it.

yoursite.com/wp-admin/admin.php?page=rls-product-new
Add a new product

Issue and manage

Licenses

Every license, whether it came from a sale or was created by hand, lives in one searchable list.

Adding one by hand

License Server, Add License. Pick a product to inherit its activation limit, or set your own. Useful for reviewers, partners and support cases.

yoursite.com/wp-admin/admin.php?page=rls-license-new
Add a license by hand

Bulk Generate

Create up to 500 licenses in one run, as unclaimed pool keys (the first client to activate one claims it) or all issued to a single customer. The new keys are shown once, in a copyable list, so save them before leaving the screen.

yoursite.com/wp-admin/admin.php?page=rls-license-bulk
Bulk Generate licenses

Import, export and bulk actions

Import licenses from a CSV (license_key, customer_email, expires_at, max_activations and product_slug, all optional), export the current filtered list to CSV, or select rows and mark them active, canceled, or delete them.

Ship updates

Releases

Two ways to publish a new version: upload a zip, or let a repository stay in sync on its own.

yoursite.com/wp-admin/admin.php?page=rls-releases
Releases and repository sources

Uploading a zip

Choose the product slug and the zip. The version is read from the zip's own Plugin Name or Theme Name header, so a mistyped filename can never claim a version the zip does not contain. Uploads over 200 MB, zips missing the expected header, or an exact version already published are refused; check Replace existing to overwrite on purpose.

Repository sources

Point a product slug at a Gitea or GitHub repository (a personal access token for a private repo, nothing needed for a public one). The server keeps that slug's working tree cloned and current on every push, verified against a signature Gitea or GitHub sign themselves, with a manual Sync Now button for whenever you do not want to wait for a push.

Beta channel

Check the prerelease box on an upload and it is only offered to sites that send beta=1 on their update check. Stable installs never see it.

Stripe, Square, email and security

Settings

One screen, four sections: Stripe, Email, Updates and Security.

yoursite.com/wp-admin/admin.php?page=rls-settings
Stripe, Square, email and security settings

Stripe

Publishable and secret keys, a subscription price ID and an optional lifetime (one-time) price ID, plus the webhook signing secret from Stripe's own webhook settings. A sandbox/live mode switch replaces guessing from the key prefix.

Updates

Where release zips live, the setting the Releases screen's uploads write to. A directory of zips or a per-product repository source, chosen per product.

Security

How visitor addresses are resolved for the invalid-key lockout and the audit log. When Revolutionary Security is active, its resolver decides, so the two plugins always agree; otherwise set your own trusted proxies here.

Customer access

Customer account and sign-in

Place the Customer Account widget on the published account page. It offers regular sign-in, password reset and emailed sign-in links.

Create account appears only when WordPress Settings, General allows registration. New accounts receive the Subscriber role. Customer accounts go to the account page instead of wp-admin; staff retain their normal dashboard access.

Use the Content tab to choose section order. License details include subscriptions and active sites. The optional Orders section reads Revolutionary Ecommerce orders. Empty Style fields inherit the theme colors.

Products

Syncing a Stripe catalog

Sync from Stripe imports active products and default prices for the selected test or live mode.

  • 1. Configure the correct Stripe mode on your own test installation.
  • 2. On Products, choose Sync from Stripe. Review the matched products and prices.
  • 3. Set each product activation limit and enable it only when it is ready to sell. New imports are archived by default.
  • 4. Configure product and price webhooks so later changes can synchronize.

The sites metadata on a Stripe product can set its activation limit, including unlimited. A manual archive is not re-enabled by sync. Daily and weekly billing intervals are skipped by this product model.

Payment configuration

Optional Stripe Tax

Sales tax is an opt-in Stripe setting for an operator's own store. This guide changes no settings on Revolutionary Plugins.

Enable Stripe Tax in the Stripe account and set the tax behavior on each price before enabling Sales tax in the plugin. Checkout then collects the billing location and subscriptions use automatic tax.

Optional program

Affiliate settings and payouts

Customers can join from their account page, receive a referral link and connect payout details through Stripe Connect Express.

Review the commission rate, cookie duration, hold period and minimum payout in Settings. Commissions wait through the configured hold, and refunds can reverse or claw them back. When Stripe supplies the amount before tax, that amount is used as the commission base.

  • 1. Configure the program on your own test installation.
  • 2. Test referral attribution, a refund and the held balance with fictional records.
  • 3. Review the payable balances before using Run payouts. A successful button response alone does not establish receipt by the affiliate.

Troubleshooting

Common questions

Check Licenses for their key: expired, canceled, or over its activation limit all refuse the update endpoint. The audit log shows the exact reason for the most recent check.

The screen shows exactly why: a missing Plugin Name or Theme Name header, a slug that does not match the zip's top-level folder, or that exact version already published. Fix the cause and upload again.

Yes, set both sets of identifiers on the same product. Checkout offers whichever processors have a price configured.

You do not set one by hand. Adding a repository source generates the webhook URL and secret for you; paste the URL into the repository's own webhook settings.

Stuck on something?

Search the forums, open a ticket, or write to us. A real person reads every message.