recurring payments in wordpress

Setting up recurring payments directly through your WordPress site can transform the way you collect payments for subscriptions, memberships, or even donations. Instead of needing to chase down invoices every month, you can automate the entire process and ask your customers to approve the purchase only once.

You just need two elements to pull this off: a Stripe account, and a free WordPress plugin called WP Full Pay.

In this post, I’ll show you how to handle the setup. We’ll start from scratch and go step by step, so by the end, you’ll have a fully functional form that charges recurring payments each month. Let’s dive in!

Step 1: Sign up for a Stripe account

We’re going to use Stripe for this setup for a couple of reasons:

  • Signing up for a Stripe account is free.
  • Stripe will handle all the heavy lifting when it comes to handling the payments from a legal point of view.
  • It will also enable you to set up your recurring products in Stripe directly – so that you don’t need a separate ecommerce plugin or solution.
  • In exchange for that, Stripe does charge a small(ish) fee. You can check your rates here (they vary depending on your country of origin).

To sign up for Stripe:

  1. Go to the Stripe website – Head to Stripe.com enter your email address in the main box and click Start now.
  2. Create your account – Enter your email, name, and a secure password. Depending on your location, Stripe might ask for more details.
  3. Set up your business profile – Stripe will ask for basic details like your business name, type, and website.
  4. Complete your profile and verify – Depending on your location and the type of payments you want to process, there might be additional steps required for you to go through in the Stripe dashboard. The setup guide will take you through those.

Step 2: Create a recurring product/service in Stripe

Once your Stripe account is fully active, you’ll be able to add a new product.

in the Stripe dashboard, go to Product catalog and then click on Create product:

create stripe product

You’ll see a rather sizable form, but the most important setting there is the one that sets the product to Recurring:

add recurring product

Apart from the basic fields like name, description, and so on, I also encourage you to take full advantage of Stripe’s features and perks. For instance, Stripe allows you to set up a simple recurring subscription on a flat rate, but you can also take it up a notch and do things like:

  • package pricing – charged based on the number of “units” used,
  • tiered pricing – where you can offer different tiers of the same product and charge based on quantity bought,
  • usage-based pricing – a classic pas-as-you-go model where customers get charged based on metered usage of a resource.

To use any of these options, click on the More pricing options button visible in the image above.

There, you’ll get to set additional details of your product based on the pricing model you’ve chosen.

add tiered product

When you’re done setting up your recurring product(s), make sure it’s visible in Stripe’s product catalog and that it’s set to active.

recurring product catalog in Stripe

Step 3: Install WP Full Pay

WP Full Pay is a WordPress plugin that allows you to set up the entire integration for recurring payments for free.*

The great thing about this setup is that your recurring payment forms can then be added to any post or page in WordPress. Plus what’s also a great perk is that you don’t need to have WooCommerce installed on your site or any other ecommerce plugin for that matter.

Let me emphasize this again, WP Full Pay allows you to sell recurring subscriptions on your site without any other ecommerce plugin working underneath – it’s all based on recurring products added in Stripe – the thing we set up in the previous step.

The plugin installs like any other WordPress plugin. Simply log in to your WordPress dashboard, go into Plugins → Add New and enter “WP Full Pay” into the search box. You’ll see the plugin on the list:

plugin listing

Click on Install Now and then Activate.

*️⃣ DISCLAIMER

The WP Full Pay plugin is being maintained by the same team that’s behind Themeisle. The plugin keeps things simple by offering you two options: free and paid.

Both plans give you access to the full range of features – nothing is locked behind a paywall. The only difference is how transaction fees are handled. With free, again, you get full functionality with zero upfront cost, but there’s an additional 5% fee per transaction on top of Stripe’s standard processing fees. The paid plans start at €79.50 per year, also include full functionality but with no extra fees beyond Stripe’s usual charges.

Connect WP Full Pay with Stripe

As soon as you activate WP Full Pay, you’ll be taken to the installation wizard:

WP Full Pay install wizard

Click on the main button to get started. Stripe will have additional authentication steps ready for you depending on whether you’ve completed your Stripe account setup and verified it.

authenticate

When you’re through all of that, you’ll be taken back to the WP Full Pay interface:

opt-in

Here you have an option to subscribe for payment tips via email. It’s optional.

And with that, the core of the integration is done!

done

Step 4: Add a recurring payments form in WP Full Pay

Go to Full Pay → Payment Forms. Click on Add form to begin:

add form

You’ll see a simple form setup panel with a handful of options:

form settings for recurring products

As you can see here, there’s a handful of different types of forms you can set up with WP Full Pay, but the one we’re after here now is called Subscription, so click on that one – just like I did in the screenshot above.

As for the other options:

  • Display name – just a name for your form; use something that’s going to be clear for you; this name won’t be visible to your customers
  • Identifier – ignore; it’s going to be added automatically
  • Form layout – in most cases, you’ll want to go with “checkout” as your form layout.
🤔 Inline forms vs checkout forms?
  • Inline forms let users enter their payment details and complete the purchase without leaving the current page.
  • Checkout forms, on the other hand, take users to a separate, secure page hosted by Stripe to finish the payment.

“Inline” forms work well when you want to keep everything on one page, like within a pricing table, while “checkout” forms are handy if you have limited space or prefer a simple, separate checkout experience. Also, some customers might feel safer entering their credit card information on Stripe’s official site, and that’s the main reason I recommend going wth “checkout.”

You can read the official docs for more info on the differences between these form types.

When you’re done filling out the details, click on Create & edit form.

Each form you create comes with a variety of settings you can customize. You can start with simple options like the display name, then adjust payment preferences, taxes, and other details to fit your needs:

options for each form

The first screen – General – will already be filled out based on the main details you’ve set in the previous step. If you don’t want to adjust what happens after a successful transaction, you can go straight to the Payment tab.

The main thing you have to do in there is pick the recurring product(s) that you want to sell through this form. This is where those Stripe products that you set up a couple of minutes ago come in handy.

Click on Add plan from Stripe:

You’ll see a panel where you’ll be able to select the product:

Important; while you can add more than one Stripe product to the form, you’ll need to select those products one by one.

If you want to, you can also optionally set up additional elements:

With that done, you should see your product on the list:

At this stage, you can continue to add subsequent products to the same form by clicking on that Add plan from Stripe button again. I’m going to do just that so that the form turns into a better demonstration.

Next, you should go to the Tax tab and decide what you want to do about everyone’s favorite aspect of doing business. You have a couple of options here:

  • No tax – Stripe will do nothing about taxes and simply allow you to sell your products for the amount listed.
  • Stripe auto tax – This is where Stripe takes care of automatically collect the right amounts based on the customer’s location. It says it works worldwide.
  • Strip tax rates – Set the exact tax settings with Stripe.

I’m afraid I cannot help you much with this step, given that it’s up to everyone’s individual situation, business setup and market. I’m sure you’re going to figure it out. 💪

Next tab, everyone’s favorite, Appearance.

This is where you get to customize the little details about your form to make it fit your site design better. Plus, perhaps more importantly, to fit your locale. I’m talking about things like setting up your decimals and currency symbols the correct way.

What you also might have noticed in the image above is that you can add custom CSS code to further modify your form. Read this docs page for more info.

With appearance taken care of, let’s move on to Form fields – the next tab:

This is where you can add extra form fields like the customer’s billing address, consent/agreement, and more. In most cases, you will want users to accept your terms of use before selling them a subscription (not legal advice). This tab in the settings allows you to do this. Plus, you can also add any number of custom fields here if you wish to.

Next tab, Email notifications.

It’s up to you to decide what types of receipts you want/have to be sending, but let me just highlight the main differences between the options here:

  • There are fundamentally two types of notifications you can be sending: notifications sent by the plugin itself (the first two on the list), and notifications sent by Stripe (the last one).
  • The “subscription ending” notification can only be sent by the plugin – not directly from Stripe.

The last tab, Webhooks is a bit more advanced, and will mostly be useful in custom development scenarios. Feel free to read this docs page to learn more about it.

Once you’re done with the above, click the SAVE CHANGES button.

You can now start using your form in any of your WordPress posts or pages.

Step 5: Add your recurring payment form to any WordPress page or post

At this point, the rest of the setup is pretty simple. All the heavy lifting has been done in the previous steps.

All that’s left now is to create a new page or post, or working with an existing one.

On the page edit screen, place your cursor in a new line and start typing /full. This will show you the block selection module where you can pick a block called “Form by WP Full Pay.” Like so:

Click on it, and then from the drop-down, select your freshly created form:

That’s pretty much it. When you save the page now, the form will be embedded into the content. If you don’t do anything else to make it look nicely, this is roughly what you’ll see:

Right, not a lot going on there in terms of design…yet!

But let’s keep in mind that this is WordPress and the block editor! This means that you can use any blocks or block patterns that you have at your disposal to make it look a lot better.

For example, just a couple of minutes of work, plus a template pricing table from our plugin Otter Blocks is how I built a page like this:

Much nicer, right?

(Pro tip; if you’re interested, let me know in the comments and I’ll share the template of that page.)

This is it! If anyone clicks the subscribe button now, they will see Stripe’s standard checkout page, like this one:

Ready to sell?

And that’s it! You now have a fully functional recurring payments form on your WordPress site, powered by WP Full Pay and Stripe.

With this setup, you can easily collect subscription payments without any manual follow-up!

If you have any questions about this setup, don’t hesitate to ask in the comments.

Yay! 🎉 You made it to the end of the article!

1 Comment
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Chris
February 27, 2025 6:14 pm

It is a pity you need a Stripe account. Stripe does not work for all countries.

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!