Title: Prototypux SaaS Engine
Author: tiagoferreiradesign
Published: <strong>July 31, 2026</strong>
Last modified: July 31, 2026

---

Search plugins

![](https://ps.w.org/prototypux-saas-engine/assets/banner-772x250.png?rev=3629667)

![](https://ps.w.org/prototypux-saas-engine/assets/icon-256x256.png?rev=3629667)

# Prototypux SaaS Engine

 By [tiagoferreiradesign](https://profiles.wordpress.org/tiagoferreiradesign/)

[Download](https://downloads.wordpress.org/plugin/prototypux-saas-engine.1.0.1.zip)

 * [Details](https://wordpress.org/plugins/prototypux-saas-engine/#description)
 * [Reviews](https://wordpress.org/plugins/prototypux-saas-engine/#reviews)
 *  [Installation](https://wordpress.org/plugins/prototypux-saas-engine/#installation)
 * [Development](https://wordpress.org/plugins/prototypux-saas-engine/#developers)

 [Support](https://wordpress.org/support/plugin/prototypux-saas-engine/)

## Description

Prototypux SaaS Engine is a lightweight bridge between **billing and permissions**.
It translates the state of a Stripe subscription into WordPress entitlements — a
managed role, publishing quotas, and plan-based access — so you can monetize any
WordPress site without gluing together form plugins, Stripe feeds and fragile role-
switching code.

It is **not** a traditional membership plugin. Stripe does what Stripe does best(
hosted Checkout, dunning, the Customer Portal, receipts, promotion codes, tax); 
the plugin owns your plans, subscription state, roles and quotas.

#### What it does

 * **Plans** as a custom post type: type (free/paid), monthly and/or yearly price,
   managed role, publishing quotas, fallback plan, and a manual features list for
   the pricing table.
 * **Quotas on as many content types as you need** — pick them once in Settings,
   then give every plan its own limit for each (posts, listings, a custom post type,
   or all of them).
 * **Freemium without trials**: a permanent free plan is assigned automatically 
   on registration (by any form or builder). Upgrades go through Stripe.
 * **Hosted Stripe Checkout & Customer Portal** — cards never touch your site (PCI
   SAQ-A). No embedded SDK: a thin HTTP client with a pinned API version and signed
   webhooks.
 * **Activation by webhook only** — access is never granted on the checkout redirect,
   so a closed browser tab never leaves a customer half-subscribed.
 * **Server-side quota enforcement** — publishing limits are enforced in the REST
   API and on post insert, not just hidden in the UI. Quota = items published (or
   scheduled) at once; deleting one frees a slot.
 * **A static checkout URL** you can paste into any button, menu or email, plus 
   a Customer Portal link.
 * **Account components** as shortcodes: pricing table, plan status, usage bars,
   portal & checkout buttons, plan/quota conditionals, and CSS visibility classes
   for page builders.
 * **Manual reconciliation with Stripe** (Tools) — the one-click repair for a missed
   webhook.
 * **Automatic past-due banner** for the affected user, linking to the Customer 
   Portal.

#### Shortcodes

 * `[wpse_pricing]` — pricing table with a monthly/yearly toggle and manual feature
   lists.
 * `[wpse_account]` — a pre-assembled account page.
 * `[wpse_plan_status]`, `[wpse_usage type="post"]`, `[wpse_portal_button]`, `[wpse_checkout_button
   plan="basic" interval="month"]`
 * `[wpse_if_plan plan="pro,basic"]…[/wpse_if_plan]` (add `not="1"` to invert)
 * `[wpse_can_create type="post"]…[/wpse_can_create]` and its opposite `[wpse_quota_reached
   type="post"]…[/wpse_quota_reached]`
 * `[wpse_quota_remaining type="post"]` and `[wpse_quota_message type="post"]`

#### Body CSS classes for builders

For every content type a plan limits, the plugin exposes ready-made classes you 
can drop onto any element in your page builder:

 * `wpse-hide-if-quota-full-{type}` — hides the element once the quota is full.
 * `wpse-show-if-quota-full-{type}` — shows the element only when the quota is full.

Plus `wpse-plan-{slug}`, `wpse-status-{status}`, `wpse-can-create-{type}` / `wpse-
quota-full-{type}` on the body for custom CSS.

#### Developer API

Public functions (`wpse_subscription()`, `wpse_has_plan()`, `wpse_quota()`, `wpse_can_create()`,`
wpse_checkout_url()`), actions (`wpse_activated`, `wpse_status_changed`, `wpse_payment_completed`,`
wpse_downgraded`, `wpse_quota_reached`, `wpse_quota_demoted`) and filters let you
extend everything from your own theme or plugin.

### External services

This plugin connects to the **Stripe API** (`https://api.stripe.com`) to create 
and manage subscriptions. Stripe is the payment processor; without it the plugin
cannot sell or manage paid plans. No other external service is contacted, and the
plugin loads no scripts, styles or fonts from third-party servers.

Data is sent to Stripe only in these situations:

 * **When an administrator syncs a plan** (Plans  Sync with Stripe): the plan name,
   price amounts, currency and billing interval. No personal data.
 * **When a logged-in user starts a checkout**: their email address, display name,
   WordPress user ID, the plan ID and your site URL, so Stripe can create the customer
   record and the plugin can match the resulting subscription back to the right 
   user.
 * **When a logged-in user opens the Customer Portal**: their Stripe customer ID.
 * **When an administrator runs Tools  Reconcile**: the plugin requests subscription
   and invoice data from Stripe for the subscriptions stored on your site.

Stripe also sends data **to** your site through the webhook endpoint (`/wp-json/
wpse/v1/webhook`): subscription and invoice events, whose signature is verified 
before being processed. Received events are stored in a database table for auditing
and are deleted automatically after a configurable retention period (90 days by 
default).

The service is provided by Stripe, Inc.:

 * Terms of Service: https://stripe.com/legal/ssa
 * Privacy Policy: https://stripe.com/privacy

You need your own Stripe account and API keys, and you are responsible for informing
your users, in your own privacy policy, that payment data is processed by Stripe.

## Screenshots

[⌊The [wpse_pricing] shortcode renders your plans with a monthly/yearly toggle, 
the manual feature list, and a checkout button per plan.⌉⌊The [wpse_pricing] shortcode
renders your plans with a monthly/yearly toggle, the manual feature list, and a 
checkout button per plan.⌉[

The `[wpse_pricing]` shortcode renders your plans with a monthly/yearly toggle, 
the manual feature list, and a checkout button per plan.

[⌊The Plans screen: type, prices, the managed role each plan grants, and which plan
new users get on registration.⌉⌊The Plans screen: type, prices, the managed role
each plan grants, and which plan new users get on registration.⌉[

The Plans screen: type, prices, the managed role each plan grants, and which plan
new users get on registration.

[⌊Creating a paid plan — the Prices tab appears, with an optional monthly and yearly
price that sync to Stripe.⌉⌊Creating a paid plan — the Prices tab appears, with 
an optional monthly and yearly price that sync to Stripe.⌉[

Creating a paid plan — the Prices tab appears, with an optional monthly and yearly
price that sync to Stripe.

[⌊A free plan needs no Stripe at all: pick the role and the quota, and optionally
assign it automatically on registration.⌉⌊A free plan needs no Stripe at all: pick
the role and the quota, and optionally assign it automatically on registration.⌉[

A free plan needs no Stripe at all: pick the role and the quota, and optionally 
assign it automatically on registration.

[⌊Settings: Stripe keys per mode, grace period, which content types are limited 
and what happens when a quota is reached, plus the page mapping.⌉⌊Settings: Stripe
keys per mode, grace period, which content types are limited and what happens when
a quota is reached, plus the page mapping.⌉[

Settings: Stripe keys per mode, grace period, which content types are limited and
what happens when a quota is reached, plus the page mapping.

[⌊Tools: one click reconciles every subscription against Stripe and repairs anything
a missed webhook left behind.⌉⌊Tools: one click reconciles every subscription against
Stripe and repairs anything a missed webhook left behind.⌉[

Tools: one click reconciles every subscription against Stripe and repairs anything
a missed webhook left behind.

## Installation

 1. Upload the plugin to `/wp-content/plugins/` and activate it.
 2. Go to **SaaS Engine  Settings** and paste your Stripe **test** keys (secret, publishable).
 3. Create a webhook endpoint in your Stripe dashboard pointing to the URL shown on
    the Settings screen, subscribe it to the five listed events, and paste the signing
    secret.
 4. Create your plans under **SaaS Engine  Plans** (mark one free plan as the registration
    default).
 5. Add `[wpse_pricing]` to a page. Switch Settings to **live** mode when you are ready
    to charge real cards.

## FAQ

### Does it work with my form / page builder?

Yes. Registration is the site’s responsibility — any form that creates a user triggers
the default free plan. Quota enforcement is server-side, so it protects you no matter
how content is created. For builders, the plugin outputs plan and quota CSS classes
on the `body` element, so you can show or hide any element without writing code.

### Do I need the Stripe PHP SDK?

No. The plugin talks to the Stripe API directly over the WordPress HTTP API, with
a pinned API version and HMAC-verified webhooks. This avoids the fatal conflicts
that embedded SDKs cause with other Stripe-using plugins.

### A customer paid but their access did not change. What now?

Almost always a missed webhook — check that your Stripe webhook endpoint is subscribed
to the five events listed on the Settings screen. To repair it immediately, go to**
SaaS Engine  Tools  Reconcile now**: it checks every subscription against Stripe
and fixes the drift with one click.

### What happens on a failed payment?

The subscription enters a grace period (configurable) during which access is kept
while Stripe retries. If it is not recovered, a cron job downgrades the user to 
the plan’s fallback.

### Will deleting a plan break existing subscribers?

No — the plugin blocks deleting a plan that still has active subscribers and points
you to archiving it instead (unsellable, but current subscribers keep their conditions).

### Does the plugin collect or track any data?

No. The plugin has no analytics, no telemetry and no “phone home” behaviour. It 
only contacts Stripe, as described in the “External services” section.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Prototypux SaaS Engine” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ tiagoferreiradesign ](https://profiles.wordpress.org/tiagoferreiradesign/)

[Translate “Prototypux SaaS Engine” into your language.](https://translate.wordpress.org/projects/wp-plugins/prototypux-saas-engine)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/prototypux-saas-engine/),
check out the [SVN repository](https://plugins.svn.wordpress.org/prototypux-saas-engine/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/prototypux-saas-engine/)
by [RSS](https://plugins.trac.wordpress.org/log/prototypux-saas-engine/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0.1

 * Fixed: the welcome notice shown after activation used an outdated plugin name.

#### 1.0.0

 * Initial public release: plans, Stripe billing engine (Checkout, Customer Portal,
   webhooks, reconciliation), server-side publishing quotas, account components,
   pricing table, and the static checkout URL.

## Meta

 *  Version **1.0.1**
 *  Last updated **8 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0.2**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [membership](https://wordpress.org/plugins/tags/membership/)[paywall](https://wordpress.org/plugins/tags/paywall/)
   [saas](https://wordpress.org/plugins/tags/saas/)[stripe](https://wordpress.org/plugins/tags/stripe/)
   [subscriptions](https://wordpress.org/plugins/tags/subscriptions/)
 *  [Advanced View](https://wordpress.org/plugins/prototypux-saas-engine/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/prototypux-saas-engine/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/prototypux-saas-engine/reviews/)

## Contributors

 *   [ tiagoferreiradesign ](https://profiles.wordpress.org/tiagoferreiradesign/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/prototypux-saas-engine/)