Title: PaywallProject
Author: PaywallProject
Published: <strong>October 8, 2026</strong>
Last modified: October 8, 2026

---

Search plugins

![](https://ps.w.org/paywallproject/assets/banner-772x250.png?rev=3733754)

![](https://ps.w.org/paywallproject/assets/icon-256x256.png?rev=3733754)

# PaywallProject

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

[Download](https://downloads.wordpress.org/plugin/paywallproject.3.1.0.zip)

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

 [Support](https://wordpress.org/support/plugin/paywallproject/)

## Description

PaywallProject helps publishers sell access to protected content with Stripe-powered
subscriptions, gifts, coupons, subscriber management, and reporting.

Learn more, read the documentation and get support at [paywallproject.com](https://www.paywallproject.com/).

#### Payments and fees

Payments go through Connect with Stripe. Connect your Stripe account in one click,
with no API keys or webhooks to set up. PaywallProject charges a platform fee of
10% on each payment, on top of Stripe’s own fees. The fee is shown on the Connect
button before you agree to it.

### External services

This plugin connects to the third-party services below. Nothing is sent to a service
until you configure it.

#### Stripe

Stripe processes all payments. The plugin calls the Stripe API (api.stripe.com) 
when a reader checks out, buys a gift, changes or cancels a subscription, when tax
is calculated at checkout, and when an administrator manages subscribers or coupons.
It sends the reader’s email address, name, billing and shipping address, the plan
and price, and for tax estimates without an address, the reader’s IP address. Checkout
pages load Stripe.js from js.stripe.com, which collects card details directly; card
numbers never reach your site.

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

#### PaywallProject Connect hub (paywallproject.com)

Used for all payments made through Connect with Stripe. Before you connect, the 
plugin asks the hub for the platform fee rate and sends your site URL. When you 
connect, disconnect, or refresh the connection, it sends your site URL and the connection
credentials. While connected, every Stripe API request listed above goes through
the hub (https://paywallproject.com/wp-json/ppconnect/v1), which forwards it to 
Stripe and applies the platform fee. That includes the reader data listed under 
Stripe.

 * Terms: https://www.paywallproject.com/terms-of-service/
 * Privacy policy: https://www.paywallproject.com/privacy-policy/

#### Google reCAPTCHA

Used only when reCAPTCHA is selected as the signup protection. Registration and 
checkout forms load the reCAPTCHA script from google.com, which collects data about
the visitor’s browser. When a form is submitted, the plugin sends the captcha token,
your secret key and the visitor’s IP address to Google to verify it.

 * Terms: https://policies.google.com/terms
 * Privacy: https://policies.google.com/privacy

#### Cloudflare Turnstile

Used only when Turnstile is selected as the signup protection. Registration and 
checkout forms load the Turnstile script from challenges.cloudflare.com. When a 
form is submitted, the plugin sends the Turnstile token, your secret key and the
visitor’s IP address to Cloudflare to verify it.

 * Terms: https://www.cloudflare.com/website-terms/
 * Privacy: https://www.cloudflare.com/privacypolicy/

#### Slack

Used only when you enter a Slack webhook URL. When a subscriber signs up, renews
or cancels, the plugin posts a message with the subscriber’s email address and plan
to that webhook.

 * Terms: https://slack.com/terms-of-service
 * Privacy: https://slack.com/trust/privacy/privacy-policy

#### Outgoing webhooks (Zapier and others)

Used only when you add a webhook URL. On the subscriber events you select, the plugin
posts the event name and subscriber details (email address, name, plan and status)
to the URL you entered. The data goes to whichever service owns that URL, under 
that service’s terms.

## Screenshots

[⌊Dashboard with revenue, new subscribers, and the content that converts readers.⌉⌊
Dashboard with revenue, new subscribers, and the content that converts readers.⌉[

Dashboard with revenue, new subscribers, and the content that converts readers.

[⌊The reader's account page: plan, renewal date, profile, and gift articles.⌉⌊The
reader's account page: plan, renewal date, profile, and gift articles.⌉[

The reader’s account page: plan, renewal date, profile, and gift articles.

[⌊The paywall on an article, asking the reader to create a free account or log in.⌉⌊
The paywall on an article, asking the reader to create a free account or log in.⌉[

The paywall on an article, asking the reader to create a free account or log in.

[⌊Checkout with the plan summary and card payment.⌉⌊Checkout with the plan summary
and card payment.⌉[

Checkout with the plan summary and card payment.

[⌊Analytics: revenue, conversion funnel, churn, and gifts over a date range.⌉⌊Analytics:
revenue, conversion funnel, churn, and gifts over a date range.⌉[

Analytics: revenue, conversion funnel, churn, and gifts over a date range.

[⌊The subscribers list with search, filters, and bulk actions.⌉⌊The subscribers 
list with search, filters, and bulk actions.⌉[

The subscribers list with search, filters, and bulk actions.

## Installation

 1. Upload the plugin files to the `/wp-content/plugins/paywallproject` directory, 
    or install the plugin through the WordPress plugins screen.
 2. Activate the plugin through the Plugins screen in WordPress.
 3. Go to PaywallProject, choose Connect with Stripe, and set up your access settings.

## FAQ

### Does this require Stripe?

Yes. Stripe is the supported payment gateway for this version.

### Is there a fee?

Yes. PaywallProject takes a platform fee of 10% of each payment made through Connect
with Stripe. Stripe’s own fees apply as well.

### Where can I get help?

Visit [paywallproject.com](https://www.paywallproject.com/) for guides and support,
or post in the plugin’s support forum here on WordPress.org.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“PaywallProject” is open source software. The following people have contributed 
to this plugin.

Contributors

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

[Translate “PaywallProject” into your language.](https://translate.wordpress.org/projects/wp-plugins/paywallproject)

### Interested in development?

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

## Changelog

#### 3.1.0

 * Feature: Free access for listed email domains — a subscription level can now 
   name the email domains it is free to, so everyone at a university, employer or
   association gets the paid plan at no charge without a coupon each. The address
   must be verified by one-time code first, and the grant applies only while a new
   account is being created, so it can never cancel an existing paid subscription.
   Levels with no domains listed are unchanged: readers see the same checkout as
   before.
 * Improvement: Connecting Stripe now connects a live account by default, with a
   secondary button for a test account, and the site moves onto the mode it connected—
   so a new publisher no longer lands on “Stripe is not configured” straight after
   connecting. A publisher already selling live who tries a test account keeps their
   working checkout.
 * Improvement: The free article meter now defaults to one article instead of five,
   so readers see a sample of the writing and are asked for an email address sooner.
   Sites that already saved a meter value are unaffected.
 * Fix: The “Set Up Webhook” button no longer appears on sites that have no Stripe
   keys to use it — connecting handles webhooks anyway.
 * Fix: Changing the email address on the checkout now clears a free-access offer
   raised for the previous address, so the code and the new account always go to
   the address on screen.

#### 3.0.0

 * Feature: Connect with Stripe — connect the Stripe account you already have in
   one click, with no API keys to paste and no webhooks to configure. Renewals, 
   cancellations and failed payments keep working on their own, and your customers,
   payouts and Stripe dashboard stay yours. The platform fee is stated on the button
   before you agree to it, and nothing is offered if it cannot be retrieved. Sites
   that already take payments with their own Stripe keys keep working exactly as
   before and are not asked to switch.
 * Feature: New setup wizard — six steps (payments, plan, pages, access, checkout,
   signup protection) that leave a site able to sell. It creates the five pages 
   the paywall needs with their shortcodes, turns on IP metering, applies the recommended
   checkout, and sets up captcha. Every step can be skipped, and each skip says 
   plainly what it costs. Setup now has its own menu entry, and a notice on PaywallProject
   screens lists anything still outstanding with a link to the step that fixes it.
   Running a step again never duplicates a page or a plan, and never overwrites 
   the restriction rules you already have.
 * Improvement: Monthly renewals now appear in a subscriber’s status history as “
   Renewed”, once per paid invoice. Zapier, analytics and emails are not sent anything
   extra.
 * Security: Stripe webhooks with a signature older than five minutes are now refused,
   so a captured webhook cannot be replayed to grant access again. Several signatures
   are accepted while a signing secret is being rotated. A server clock more than
   five minutes out will reject webhooks; this is logged as `stripe.webhook.signature_stale`,
   separately from an invalid signature, and the window can be adjusted with the`
   ppaccess_webhook_signature_tolerance` filter.
 * Security: Uninstalling the plugin revokes the Stripe Connect credentials before
   removing them.
 * Fix: Clearing a subscriber’s Expires date in the admin now makes them never expire,
   instead of silently keeping the old date.

Older releases are listed in changelog.txt.

## Meta

 *  Version **3.1.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [memberships](https://wordpress.org/plugins/tags/memberships/)[paywall](https://wordpress.org/plugins/tags/paywall/)
   [Publishers](https://wordpress.org/plugins/tags/publishers/)[stripe](https://wordpress.org/plugins/tags/stripe/)
   [subscriptions](https://wordpress.org/plugins/tags/subscriptions/)
 *  [Advanced View](https://wordpress.org/plugins/paywallproject/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/paywallproject/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/paywallproject/)