ReCurr – Subscription Billing

Description

ReCurr is the WooCommerce subscription billing plugin built specifically for South African businesses using PayFast. Sell annual subscriptions with automatic renewal, secure card tokenisation, and customer self-management — all native to WordPress and WooCommerce.

Whether you run a membership organisation, an annual SaaS, a recurring donation programme, or any business with annual recurring revenue, ReCurr gives you the foundation to bill your customers reliably every year on the same date.

Why ReCurr?

Most subscription plugins built for WooCommerce focus on US/EU payment gateways. ReCurr is built from the ground up for PayFast, South Africa’s leading payment gateway, with proper handling of:

  • PayFast tokenisation for secure recurring payments
  • Anniversary-based annual billing (renews on the same date each year)
  • PayFast ITN (Instant Transaction Notification) verification
  • Failed-payment retry logic with customer notifications
  • Customer self-cancellation from the WooCommerce My Account area

Features

  • Annual subscription billing — customers pay once a year, automatically renewed via PayFast tokenised card
  • PayFast integration — full tokenisation, ITN handling, and recurring payment support
  • Customer self-cancellation — from the standard WooCommerce My Account area
  • Failed-payment retry — automatic retry on failed renewals (3 attempts, then on-hold)
  • Email notifications — activation, renewal success, payment failed, cancellation
  • Customisable email templates — edit every transactional email’s subject and body with merge-tag placeholders
  • Admin dashboard — view, filter, search, and manually manage all subscriptions
  • CSV export — export the subscriptions list (respects the active filter and search)
  • At-a-glance widget — WordPress dashboard widget with active counts, annual recurring value, and upcoming renewals
  • WooCommerce Blocks support — works with both Classic and Blocks checkout
  • HPOS-compatible — declared compatible with WooCommerce High-Performance Order Storage
  • GPL-licensed, plain readable PHP — no obfuscation, no phone-home calls, no telemetry

About this plugin

This plugin provides annual subscription billing only. It is fully functional with no licence required, no time limits, and no usage restrictions. A separate, more advanced subscription plugin is sold by the same developer at https://recurr.co.za — it is not bundled with, downloadable from, or required by this plugin.

Requirements

  • WordPress 5.8 or higher
  • WooCommerce 5.0 or higher
  • PHP 7.4 or higher
  • SSL certificate (HTTPS) — required for PayFast
  • PayFast Merchant Account with tokenisation enabled

Privacy

ReCurr does NOT collect any usage data, telemetry, or analytics. The plugin makes no outbound calls to any server other than PayFast (for processing payments) and your own WordPress site. No data is shared with the plugin author.

PayFast itself is a third-party payment service. When customers complete a subscription purchase, their card is tokenised by PayFast and the token is stored in your database for future renewals. See PayFast’s privacy policy at https://payfast.io/privacy-policy/ for details on how PayFast handles cardholder data.

External services

This plugin connects to one external service: PayFast, the South African payment gateway. PayFast is required — the plugin cannot process subscription payments without it, and this processing cannot be performed locally. You must have your own PayFast merchant account to use this plugin.

The plugin contacts PayFast in three ways:

  1. Hosted checkout (https://www.payfast.co.za/eng/process, sandbox: https://sandbox.payfast.co.za/eng/process). When a customer places a subscription order, the customer is redirected to PayFast to enter and tokenise their card. The data sent is the order amount, a signed request signature, the customer’s billing first name, last name and email address, the order ID, the item name, and your PayFast merchant ID/key. This happens once per signup, at checkout.

  2. Instant Transaction Notification validation (https://www.payfast.co.za/eng/query/validate, sandbox: https://sandbox.payfast.co.za/eng/query/validate). When PayFast notifies your site of a payment result, the plugin posts the received notification back to PayFast to confirm it is genuine. The data sent is the exact notification payload PayFast sent. This happens once per payment event (signup and each renewal).

  3. Ad Hoc charge API (https://api.payfast.co.za/subscriptions). On each annual renewal, the plugin charges the stored card token. The data sent is the renewal amount, item name, your merchant ID, a timestamp, and a signed request signature. This happens once per subscription per year (on renewal).

No data is sent to the plugin author or any analytics/telemetry service. PayFast’s general terms and conditions: https://payfast.io/legal/general-terms-conditions/ — PayFast’s privacy policy: https://payfast.io/privacy-policy/

Screenshots

  • Admin subscriptions list — view, filter, search, and export all subscriptions
  • Subscription detail — full payment history with admin status controls
  • At-a-glance dashboard widget — active counts and annual recurring value
  • Customer self-service — subscriptions and cancellation from My Account
  • One-click setup — enable annual billing from the product editor
  • Customisable transactional emails with merge-tag placeholders
  • PayFast gateway configuration under WooCommerce Payments

Installation

  1. Install the plugin via Plugins Add New Search “ReCurr” in your WordPress admin, or upload the zip via Plugins Add New Upload Plugin.
  2. Activate the plugin.
  3. Make sure WooCommerce is active first (ReCurr requires it).
  4. Go to WooCommerce Settings Payments, find PayFast Subscriptions (ReCurr), click Manage.
  5. Enter your PayFast Merchant ID, Merchant Key, and Passphrase. The Passphrase is required. It must be set on your PayFast account (PayFast dashboard Settings Security passphrase) and the value entered here must match it exactly (no leading or trailing spaces). ReCurr signs every PayFast request with this passphrase; if it is missing or does not match, PayFast rejects the payment with a signature error.
  6. Confirm Tokenisation is enabled on your PayFast account (contact PayFast support if not).
  7. Set the PayFast ITN URL in your PayFast dashboard to: https://yourdomain.com/?wc-api=recurr_payfast (replace yourdomain.com with your actual domain).
  8. Create a subscription product: Products Add New, set price, then in the Product Data section check Enable Annual Subscription.
  9. Test the flow with PayFast Sandbox Mode before going live.

FAQ

Does this plugin support monthly billing?

No. This plugin supports annual subscriptions only — the renewal interval is fixed at one year.

Does this plugin support free trials?

No. Customers are charged the annual amount at signup; there is no trial period.

Does this plugin work with payment gateways other than PayFast?

Not at this time. ReCurr is built specifically for PayFast. If you need a different gateway, this is not the right plugin for you.

Does this work with WooCommerce Blocks checkout?

Yes. ReCurr is compatible with both Classic and Blocks checkout.

What happens to my data if I uninstall the plugin?

By default, your subscription history is preserved when you uninstall this plugin, so you can reinstall it later or migrate to another plugin without losing data. If you want all subscription data permanently deleted on uninstall, tick the “Permanently delete all subscription data when the plugin is uninstalled” checkbox in ReCurr Settings Data Management before uninstalling.

Is the plugin obfuscated?

No. The free plugin is plain readable PHP, GPL-licensed. You can audit every line of code in the plugin folder.

Does ReCurr send any data to your servers?

No. This plugin makes no outbound calls to ReCurr or any analytics/telemetry service. The only external service it contacts is PayFast, your payment gateway (see the “External services” section above for details).

Do customers need an account to subscribe?

Yes. Because a subscription must be managed over time, ReCurr requires customers to create an account at checkout when the cart contains a subscription product (guest checkout is automatically disabled for those carts only). This lets every subscriber view, manage, and cancel their own subscription from My Account. Non-subscription products in your store are unaffected and can still be bought as a guest.

How do I cancel a customer’s subscription?

In WordPress admin: ReCurr Subscriptions click the subscription Cancel. Customers can also cancel from their My Account area.

PayFast says “signature mismatch” or returns a 400 Bad Request at checkout.

This is almost always a Passphrase problem. ReCurr signs every PayFast request using your Passphrase, so it must be configured correctly:

  1. In your PayFast dashboard, go to Settings set a Security passphrase (if you have not already).
  2. In WooCommerce Settings Payments PayFast Subscriptions (ReCurr) Manage, enter the exact same passphrase — type it manually rather than copy/pasting, as trailing spaces or hidden characters will break the signature.
  3. Save and try the checkout again.

If you use PayFast Sandbox Mode for testing, the sandbox account has its own separate passphrase — make sure you are entering the sandbox passphrase while sandbox mode is enabled, and the live passphrase when it is disabled.

I’m getting “Tokenisation not enabled” errors from PayFast.

PayFast requires you to request Tokenisation activation on your merchant account. Email PayFast support at [email protected] and ask them to enable subscription tokenisation on your Merchant ID.

Where can I get help?

  • ww.wp.xz.cn plugin support forum (https://ww.wp.xz.cn/support/plugin/recurr-subscriptions/)
  • ReCurr support: [email protected]

Reviews

There are no reviews for this plugin.

Contributors & Developers

“ReCurr – Subscription Billing” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • Initial release.
  • Annual subscription billing via PayFast tokenisation.
  • Customer self-cancellation from My Account.
  • Admin subscriptions list with status filter and search.
  • Subscriptions CSV export.
  • At-a-glance dashboard widget (active counts, annual recurring value, upcoming renewals).
  • Customisable transactional email templates with merge-tag placeholders.
  • Failed-payment retry with email notifications.
  • WooCommerce Blocks checkout compatibility.
  • HPOS-compatible.