How to take recurring payments on WordPress without running a shop
Stripe on its own, a membership plugin, a hosted platform or a full WooCommerce store: an honest look at the four usual answers, what each one really costs you, and how to pick.
By Rémi Corson · July 31, 2026 · 6 min read
You want to charge people every month. A membership, a paywall, access to a tool, a patron button. What you do not want is a shopping cart, a product catalogue, shipping settings and a tax engine, for something that has no products and nothing to ship.
This is one of those problems where WordPress gives you five answers and no way to choose between them. Here is an honest look at the options, what each one actually costs you, and how to pick.
The four ways this is usually done
Stripe on its own
Stripe Payment Links or a small custom integration. You create a recurring price in the Stripe dashboard, drop the link on a page, and you are taking money in ten minutes. Nothing to install, nothing to maintain, and the lowest possible cost: Stripe’s processing fee and nothing else.
The catch arrives the day after the first payment. Your WordPress site knows nothing. It cannot tell a subscriber from a visitor, so it cannot restrict a page, show someone their plan, or stop serving a download when a card fails. You end up either building that yourself or copying email addresses between two systems by hand.
Good for: a donation button, a tip jar, anything where paying does not unlock something on your site.
A membership plugin
MemberPress, Paid Memberships Pro, Restrict Content Pro and their peers. Built exactly for this: levels, content protection, member dashboards, drip content, often with their own gateway integrations.
They work, and if memberships are the whole of your business they are a reasonable place to land. The cost is that you are adopting a second, fairly opinionated system: its own idea of what a member is, its own user interface, its own way of gating content, and usually an annual licence in the low hundreds. It is a lot of machinery if all you needed was to charge nine euros a month for access to a documentation site.
Good for: membership as the product, with courses, levels, communities, drip content.
A hosted platform
SureCart, Lemon Squeezy, Paddle, Gumroad. Checkout, billing, invoices, tax and dunning are all handled off your site, and you embed a button.
The appeal is real: someone else deals with EU VAT and the sales tax paperwork, which alone is worth money. The trade-offs are equally real. Your customer data lives on their platform, your checkout is on their domain or in their iframe, and you pay a platform percentage on every payment on top of the processing fee. Read what happens to your data and your subscribers if you leave: that answer varies a lot, and it is the question people skip.
Good for: digital products sold worldwide where tax compliance is the thing you most want to outsource.
A full WooCommerce store
Install WooCommerce, add a subscriptions plugin, and you have a proper store with recurring products.
Nothing wrong with it, and if you already run WooCommerce it is obviously the answer. But standing up a whole shop to sell one recurring plan means configuring shipping zones you will never use, tax classes for a product with no physical form, and a cart and checkout flow for something bought in a single click. Every one of those is a page that can break and a setting that can be wrong.
Good for: you already sell things, or you are going to.
The gap
Look at what those four have in common: each one asks you to accept something you did not want. Stripe alone leaves your site ignorant. A membership plugin makes memberships your architecture. A hosted platform takes your customers off your site. A store makes you run a store.
What is missing is small: charge on a schedule, and let WordPress know who paid. That is the whole requirement for a great many sites, and until recently nothing filled it without dragging something larger behind it.
What we built instead
Milo Subscriptions has a standalone mode. Turn it on and the plugin runs recurring subscriptions on your site with no WooCommerce, no products, no cart, and no checkout pages to build.
The flow is deliberately the simplest one that works:
Someone clicks a Subscribe button you placed with a block or a shortcode. They land on a secure Stripe Checkout page and enter their card. Stripe Billing then handles everything that follows: the recurring charges, failed payment retries, strong customer authentication, and the self-service portal where customers update their card or cancel. A webhook syncs the status back to your site, so what your pages show always matches what Stripe knows.
Stripe is the source of truth. Your site stores only what it needs in order to gate content and show members where they stand. There are no orders, no cart sessions and no background queues to go wrong, because none of that exists in this mode.
On your side you get blocks and shortcodes for the parts that touch your pages: a subscribe button, a members area, a “my subscription” panel, restricted content, and gated downloads. Content restriction, subscriber analytics, transactional emails and GDPR export and erase are all included.
What it costs
Standalone mode is free to switch on. No licence, no feature gating, unlimited plans and unlimited subscribers.
We take one percent of each subscription payment, on top of Stripe’s own processing fee. That is how the free plugin is funded, and it is shown to you during setup, in the settings and on the plans screen, because a fee you discover later is not a fee, it is a surprise.
One percent is deliberately below what hosted platforms charge for the same job, and the reason is structural rather than generous: they are running your checkout, your tax compliance and your customer records, and that costs them money. We are not. Your subscribers stay on your site, in your database, in your WordPress users table. We only sit in the payment path.
It also means we only earn when you do. If your subscribers stop paying, we stop being paid, which puts us on the same side of the table as you regarding failed payments and churn.
How to choose
Ask what you actually need, in this order.
Does paying unlock something on your site? If not, use Stripe on its own and stop reading. A payment link is genuinely the right answer for a donation button.
Is membership your product, with levels, courses, drip content and a community? Then a membership plugin will fit you better than we will, and you should use one.
Do you sell physical goods, or need shipping, per-line tax, or coupons on orders? Use WooCommerce, and Milo in its standard mode on top of it.
Is cross-border tax compliance the thing you most want off your plate, and are you comfortable with your customers living on someone else’s platform? A hosted platform earns its percentage.
Is what you need “charge every month, and let my site know who paid”? That is what standalone mode is, and it is the case nothing served well.
Getting started
You need the free Milo Subscriptions plugin, Milo Payments connected to Stripe, and a Stripe account. The connection is one click and stores no API keys on your site. Then you switch standalone mode on in the settings, create a plan, and place a subscribe button.
Turning standalone mode on has no effect on an existing WooCommerce store. The two modes are independent, and a site that already sells subscriptions through WooCommerce does not need this at all.
The full walkthrough is in the standalone mode documentation.
Try the engine, it costs nothing
Free on WordPress.org, and one percent only when you get paid.