=== Payment Page – Stripe Payment Forms for Donations, Subscriptions & Recurring Payments ===
Contributors: gauchoplugins, brandonfire, freemius
Author URI: https://www.gauchoplugins.com/
Plugin URI: https://paymentpageplugin.com/
Donate link: https://paymentpageplugin.com/pricing/
Tags: stripe, payment-form, donation-form, subscriptions, recurring-payments
Requires at least: 6.4
Tested up to: 7.1
Stable tag: 1.5.2
Requires PHP: 7.4
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Accept Stripe payments, donations & subscriptions with a beautiful payment form. Apple Pay, Google Pay & ACH. Free; pay only when you earn.

== Description ==

**[Payment Page](https://paymentpageplugin.com "Visit the Payment Page website")** is the easiest way to build a **Stripe payment form** on WordPress and accept **payments, donations, subscriptions, and recurring payments** — no code. Pick a template, connect Stripe, and start collecting money in 60 seconds. **Free to start — only pay when you earn.**

[youtube https://www.youtube.com/watch?v=Nl4axLj5Hp8]

## 🎯 BUILT FOR

* **Freelancers** invoicing clients and collecting retainer deposits
* **Coaches & Consultants** taking deposits and selling session packages
* **Yoga, Fitness & Wellness** studios selling memberships and class packs
* **Nonprofits** accepting one-time and recurring donations
* **Agencies** invoicing monthly maintenance and managing client billing
* **Creators & Educators** selling courses, gated content, and subscriptions

## ⚡ KEY FEATURES

* **One-page Stripe checkout** — Apple Pay, Google Pay, SEPA, ACH (Stripe Financial Connections), recurring & one-time payments
* **Beautiful payment form templates** — 10 bundled in-plugin (work offline) plus a growing library of remote templates; all customizable and mobile-first
* **Connect Stripe in 60 seconds** — Stripe Connect onboarding handled for you, no API keys to copy-paste
* **Recurring subscriptions** — any frequency, any currency Stripe supports
* **Donation forms & custom amounts** — let customers choose the amount for donations or invoices
* **Custom form fields** — capture any data, stored in Stripe metadata
* **Prefill form fields** — pass values into a form via query strings
* **Elementor widget** — place a payment form anywhere with a native widget
* **HTTP webhooks** — automate with Zapier, Fluent Forms, or custom endpoints
* **PayPal Standard Checkout** — an alternative gateway with no platform fee

## 💰 PRICING — FREE TO START, ONLY PAY WHEN YOU EARN

The free version includes the full feature set. We charge a small **2% platform fee** on Stripe transactions to keep the plugin sustainable — only when you actually collect money. No subscriptions, no hidden costs, no surprises.

Upgrade to **Pro at $99/year** to:

* **Remove the 2% platform fee** — keep 100% of your Stripe revenue
* **Priority support** with a 24-hour first response

[See pricing →](https://paymentpageplugin.com/pricing/) — **30-day money-back guarantee** on Pro.

## 🔌 INTEGRATES WITH

* **Stripe** — Stripe Connect platform integration (cards, SEPA, Apple Pay, Google Pay, ACH via Stripe Financial Connections, Alipay, WeChat Pay)
* **PayPal** — Standard Checkout
* **Elementor** — native payment-form widget
* **Zapier** — via HTTP webhooks

## 🔒 SECURITY

Card data never touches your WordPress site — Stripe Elements collects payment details directly in Stripe-hosted fields, so there is no PCI burden on you. Payments run through your own Stripe account via Stripe Connect, and duplicate webhook deliveries are processed idempotently, so a customer is never double-charged or double-emailed.

## 🆚 WHY CHOOSE PAYMENT PAGE

Most Stripe form plugins are built for one-off payments. Payment Page is built on **Stripe Connect** from the ground up — the same architecture that powers platforms like Substack and Shopify — which means one-click onboarding via Stripe's official OAuth flow, no API keys to paste, no PCI burden, and idempotent webhook processing so a duplicate Stripe delivery never re-charges or re-emails a customer. ACH payments settle asynchronously and are tracked correctly (processing → succeeded) the whole way.

[Read the documentation →](https://docs.paymentpageplugin.com/) · [See pricing →](https://paymentpageplugin.com/pricing/)

== Installation ==

= Minimum Requirements =

* WordPress 6.4 or greater
* PHP version 7.4 or greater
* MySQL 5.6+ or MariaDB 10+
* cURL (required for the Stripe API)
* An SSL certificate (required for payments)

= 5-Step Setup =

1. **Install** the plugin from the WordPress.org plugin directory, or upload the .zip via Plugins → Add New.
2. **Activate** the plugin.
3. **Connect Stripe** — click "Connect Stripe" on the welcome screen and complete Stripe's onboarding flow (~60 seconds for existing Stripe customers).
4. **Choose a template** — pick from the gallery (10 bundled in-plugin, plus a growing remote library) and customize.
5. **Add the form** to any page via the shortcode `[payment-page-payment-form id=N]` or the Elementor widget.

You're now accepting payments. Your Stripe dashboard reflects every transaction in real time.

== Frequently Asked Questions ==

= Is Payment Page free? =

Yes. The full feature set is free. We charge a 2% platform fee on Stripe transactions only — when you actually collect money. No subscriptions, no hidden costs. Upgrade to Pro at $99/year to remove the fee.

= How does the 2% platform fee work? =

When a customer pays through your Stripe Connect account, Stripe routes 2% to Payment Page automatically as the platform application fee. You keep 98% (minus standard Stripe processing). The fee is visible in your Stripe dashboard and applies to Stripe payments only — PayPal payments have no platform fee.

= How do I remove the 2% fee? =

Upgrade to Pro at $99/year. The fee is removed instantly for all future transactions. Pro also includes priority support with a 24-hour first response.

= What payment methods are supported? =

**Stripe** (free + Pro): credit & debit cards, SEPA Direct Debit, Apple Pay, Google Pay, ACH (via Stripe Financial Connections), Alipay, WeChat Pay, and recurring subscriptions. **PayPal** (free + Pro): PayPal Standard Checkout.

= Does Payment Page work with Elementor? =

Yes. Payment Page includes a native Elementor widget. Drop it into any section, point it at a form, and the form renders inline.

= Can I use Payment Page alongside WooCommerce? =

Yes. Payment Page is a standalone payment plugin — it runs independently of WooCommerce, so you can use it next to a WooCommerce store for cases where a full storefront is overkill: deposits, donations, retainers, and single-product checkout.

= Are recurring subscriptions supported? =

Yes, on both free and Pro. Choose any frequency (daily, weekly, monthly, annual, custom) and any currency Stripe supports.

= Can I accept custom donation or invoice amounts? =

Yes. Leave the price field empty on any plan and a "custom amount" input appears for the customer. Works for one-time payments and recurring donations.

= Does Payment Page support Apple Pay and Google Pay? =

Yes — both are free-tier features. Apple Pay requires a one-time domain-verification step in Stripe (the plugin walks you through it). Google Pay works automatically on Chrome and Android.

= How does ACH work? =

Payment Page uses **Stripe Financial Connections** for ACH Direct Debit. Customers link their bank in-browser through Stripe's hosted UI; PaymentIntents settle asynchronously over 2–4 business days, and Payment Page records the `processing` → `succeeded` lifecycle correctly. No Plaid configuration required.

= Is Payment Page Stripe Connect or single-account Stripe? =

Stripe Connect. You connect your own Stripe account via Stripe's official OAuth flow — Payment Page never sees your Stripe API keys. That means one-click onboarding, no PCI burden, and full ownership of your customer data.

= Where can I get support? =

Docs: [docs.paymentpageplugin.com](https://docs.paymentpageplugin.com/). Free support via the WordPress.org plugin forum. Pro-tier priority support with a 24-hour first response at [paymentpageplugin.com/support](https://paymentpageplugin.com/support/).

== Screenshots ==

1. Template gallery — pick a payment form design in seconds (10 bundled in-plugin, plus a remote library).
2. Form builder admin UI — design every detail of your payment form.
3. Apple Pay and Google Pay live on a published payment page.
4. Stripe Connect onboarding — one-click via Stripe OAuth.
5. Live-rendered confirmation page across desktop, tablet, and mobile.

== Changelog ==

= 1.5.2 =
* Fix: Public checkout requests no longer fail with "Cookie check failed" when a page cache serves an expired WordPress REST nonce. Guest checkout calls omit the authentication nonce, logged-in calls refresh it once when needed, and payment-form responses now send explicit no-store headers. Shortcut #7468.
* Compat: Polyfill `wp_admin_notice()` / `wp_get_admin_notice()` for WordPress older than 6.4 so Payment Form add/edit/list admin screens no longer fatal; declare `Requires at least: 6.4` and `Requires PHP: 7.4` in the plugin header so core enforces the floor already published in readme.txt.
* Compat: Tested up to WordPress 7.1; Freemius SDK 2.13.4.
* Note: the no-store cache headers are sent on every request that renders a payment form; sites that force-enable the universal interface site-wide via `add_filter( 'payment_page_force_universal_interface', '__return_true' )` will therefore send no-store headers on every page.

= 1.5.1 =
Critical Stripe Connect hotfix — three 1.5.0 regressions combined to break a fresh Stripe connection end-to-end. All fixed and verified against a live Stripe test connect.

* Fresh Stripe Connect no longer fails with a 403 after completing OAuth.
* Fixed a fatal error in the Stripe connect callback on some setups.
* Webhooks are now registered automatically during connect, so payment events are delivered.

If you connected Stripe on 1.5.0, re-run Payment Gateways → Connect with Stripe once.

= 1.5.0 =
* ACH Direct Debit migrated to Stripe Financial Connections — no Plaid setup required.
* Stripe PHP SDK updated to 20.1.0.
* 10 new bundled, fully-styled form templates.
* Reliability: idempotent webhooks (no duplicate charges or emails), plus money-math and failed-payment hardening.
* Security: hardened Stripe Connect callback, safer template import, and endpoint rate-limiting.
* Performance: plugin assets now load only on pages that contain a payment form.
* New Confirmation Email Builder, and webhooks set up automatically during connect.

= 1.4.10 =
* WordPress 7.0 readiness; requires PHP 7.4.

= 1.4.9 =
* Fix: admin "Connect Stripe" button no longer spins forever on fresh installs.
* Fix: "Cookie check failed" no longer blocks the form on browsers that restrict third-party cookies.
* Fix: Elementor's widget editor no longer breaks when Payment Page is active.
* Fix: page-cache plugins (WP Rocket, etc.) no longer serve stale payment forms.

See the full changelog at [docs.paymentpageplugin.com/changelog](https://docs.paymentpageplugin.com/changelog/changelog).

== Upgrade Notice ==

= 1.5.2 =
Fixes "Cookie check failed" on cached checkout pages, adds a wp_admin_notice() polyfill, and updates the Freemius SDK to 2.13.4. Tested up to WordPress 7.1. Recommended for all merchants.

= 1.5.1 =
Critical Stripe Connect hotfix — fixes a fresh-connect 403, a REST fatal, and webhook auto-provisioning. Recommended for all merchants; if you connected Stripe on 1.5.0, re-run Connect with Stripe once.
