+27 66 341 7545 (Whatsapp only) [email protected]

ReCurr Plus Tutorial Series — Part 5: Cancellation Refunds & Retention

ReCurr Plus feature — Requires an active ReCurr Plus licence (RECPLUS-XXXX-XXXX-XXXX-XXXX). New in v2.7.0.

By default, when a customer cancels a subscription they keep access until the end of the period they’ve already paid for, and no money changes hands. That’s still the default. ReCurr Plus adds two optional tools on top of it:

  • Pro-rata cancellation refunds — refund a quarterly or annual customer for the time they haven’t used when they cancel mid-term.
  • A retention “save” flow — a short, friendly step before the cancel completes that asks why and offers a relevant alternative, so some customers stay instead of leaving.

Both are off by default and controlled by their own settings. With both off, cancellation behaves exactly as it always has.


Before You Begin

  • ReCurr Plus is installed and your Plus licence key is active
  • You understand your normal cancellation policy — refunds are real money leaving your PayFast account, so enable them deliberately

Part A — Pro-Rata Cancellation Refunds

How the refund is calculated

The quarterly / annual discount is a reward for completing the term. When a customer cancels mid-term, ReCurr refunds the portion of time they haven’t used — valued at the full monthly rate — and the unearned share of the discount (the “free months”) is not refundable:

refund = amount paid for the current term
         − (days elapsed × the plan's full monthly price × 12 ÷ 365)
  • The refund can never go negative. Late in the term the figure floors to R0 — at which point the customer is offered a normal end-of-period cancellation instead (see below).
  • The refund is capped at the cash actually charged on that term’s payment. (In the rare case where a customer part-funded the term with switch credit, the value-based figure can exceed the cash taken — ReCurr caps it and flags the excess for you in the admin email.)

Worked example — Annual plan at R2,990 (list monthly R299), customer cancels in month 4:

Consumed:  4 months × R299  = R1,196  (valued at the full monthly rate)
Refund:    R2,990 − R1,196  = R1,794

What happens when a customer cancels (refund flow)

With Pro-rata cancellation refunds on, and the customer on a quarterly/annual card subscription with a completed payment:

  1. The confirmation screen tells the customer their exact refund and that the free-month benefit is not refundable, e.g. “You’ll receive a refund of R1,794 (unused time at the full monthly rate — the free-month benefit is not refundable). Your access ends within 24 hours.”
  2. On confirming, ReCurr refunds the money via the PayFast Refund API, records a native WooCommerce refund on the paying order (with a note of the amount refunded via PayFast), and cancels the subscription.
  3. Access ends within 24 hours — the subscription ends immediately (not at period end) and the licence key is expired, so the customer’s remote install loses access at its next daily licence check.
  4. The customer and admin both receive a refund confirmation email showing the amount and access-end time. PayFast also emails the customer about the refund (v2.8.8).

Refund failed? If PayFast declines the refund, the cancellation is aborted cleanly — the subscription stays active and nothing is cancelled or refunded — so you’re never left having cancelled a customer without refunding them. The customer is told “Your refund could not be processed, so your subscription has NOT been cancelled. Please try again later, or contact us at …” (your store’s “From” address, set in WooCommerce → Settings → Emails — v2.8.8; before, your site’s administration email address), and PayFast’s reply goes to a note on the subscription’s screen and to WooCommerce → Status → Logs, not to the customer (v2.8.7).

Test one refund first (v2.8.8). Before ReCurr 2.8.8 these refunds did not go through: PayFast requires every refund request to say whether PayFast emails the customer about the refund, ReCurr’s request did not, and PayFast refused it — the subscription stayed active and nothing was refunded. From 2.8.8 the request says it, and refunds go through, in PayFast’s sandbox as well as live. Once you are on 2.8.8 or later, test one small refund with your own card on your live store before you rely on the setting.

When the refund flow does not apply

  • Monthly / weekly subscribers — nothing to pro-rate; standard end-of-period cancel.
  • Manual EFT subscriptions — no card to refund automatically; standard end-of-period cancel (refund handled by you manually if appropriate).
  • Late in the term where the refund works out to R0 — the customer is shown “No refundable value remains — your plan stays active until [date]” and offered a normal cancellation.

Part B — Retention “Save” Flow

The retention flow is a second, independent toggle. When either cancellation setting is on, the bare “Are you sure?” browser prompt is replaced by a short in-page flow:

  1. Reason survey — the customer picks why they’re leaving from a short list (e.g. Too expensive, Not using it, Missing a feature, Technical issues, Other).
  2. A tailored alternative — based on the reason:
    • Too expensive / Not using it → a link to change plan (shown when the product belongs to a plan group), so they can downsize instead of leaving.
    • Missing a feature / Technical / Other → a support contact link so you get a chance to help before they go.
  3. Confirm — the final confirmation shows the refund consent text (if the refund flow applies) or the normal end-of-period message, and the customer confirms.

Whatever they choose, the reason is saved against the subscription and emailed to you (cancellation feedback) so you can follow up personally and spot patterns over time.

No discount save-offers (yet). This first version deliberately keeps the flow simple — it surveys and redirects but does not auto-generate discount offers.

Screenshot 1: The retention flow — reason survey step.

Screenshot 2: The retention flow — tailored alternative (change-plan link or support contact).

Screenshot 3: The final confirmation showing the refund amount (or period-end message).

Screenshot 4: The cancellation-feedback admin email.


Turning It On

Both toggles live under Subscriptions → Settings → General:

Setting Default Effect
Pro-rata cancellation refunds Off Enables the mid-term refund flow (Part A)
Cancellation retention flow Off Enables the reason survey + alternatives + feedback email (Part B)

You can run either one on its own — a retention survey with no refunds, refunds with no survey, or both together.

Screenshot 5: Subscriptions → Settings → General showing the two cancellation toggles.

See Tutorial 8: Settings Reference for the full settings list.


Filterable Options (for developers)

  • crb_cancel_reasons — customise the reason-survey options.
  • crb_cancel_support_url — set the support link shown for feature/technical/other reasons (defaults to a mailto to your store’s “From” address, WooCommerce → Settings → Emails — v2.8.8).
  • crb_payfast_min_charge — the R5 gateway floor used across the refund/credit maths.

Quick Checklist

  • [ ] Decided whether refunds suit your business (real money leaves PayFast)
  • [ ] Enabled Pro-rata cancellation refunds and/or Cancellation retention flow in settings
  • [ ] Tested a mid-term cancel on a quarterly/annual sandbox subscription — refund amount matches the formula
  • [ ] Tested one small live refund with your own card (v2.8.8 or later) — the refund shows in your PayFast dashboard and the subscription is cancelled
  • [ ] Confirmed access ends within 24h and the licence key is expired after a refunded cancel
  • [ ] Confirmed a late-term (R0) cancel falls back to end-of-period with the correct message
  • [ ] Confirmed a monthly / EFT cancel still uses the standard end-of-period flow
  • [ ] Received the cancellation-feedback admin email and saw the saved reason

What’s Next?

Up next: Plus Tutorial 6: Pause & Resume — let customers freeze a subscription and pick it up later.

For the full core ReCurr tutorial series, start at Tutorial 1: Getting Started.


This is Part 5 of the ReCurr Plus Tutorial Series.

Tutorial Topic
Plus 1. Billing Cycle Toggle Monthly/annual toggle on one product
Plus 2. Flexible Trials 7/14/21/28-day trial options
Plus 3. Quarterly Discounts Configuring quarterly pricing and discounts
Plus 4. Plan Switching Plan groups, customer upgrades and downgrades
Plus 5. Cancellation, Refund & Retention Pro-rata refunds on cancel + retention save flow (you are here)
Plus 6. Pause & Resume Freeze a subscription and resume later
Plus 7. Variable Subscription Products Sizes, plans and buy-once-or-subscribe as subscription options
Plus 8. Troubleshooting Variable Subscriptions Every message, what causes it, where to look

We Are Here To Help!

Office

Queenswood
Pretoria
SA

Hours

M-T: 9am – 4pm
F: 9am – 12pm
S-S: Closed