Subscription Lifecycle: Pauses, Plan Changes, Dunning and Refunds
Pro featurePro feature. Requires Learnomy Pro with the Membership Pro extension active.
Once someone subscribes, Membership Pro handles what happens next: members can pause and resume, switch plans with fair credit for unused time, and the site keeps their access safe when a renewal charge fails or a refund is issued. This page covers the ongoing lifecycle. For plans, gift memberships, and the retry-cadence and refund settings themselves, see Membership Plans.
What you can do
- Let a member pause a subscription and resume it later, with the paid time they had left preserved.
- Let a member switch to another plan and see a fair-credit proration quote -- credit for unused days on the old plan, charge for the new plan -- before they commit.
- Apply a plan change immediately, or schedule it to take effect at the end of the current billing period.
- Retry a failed renewal charge automatically on a cadence you choose, instead of cancelling on the first failure.
- Cancel a subscription automatically only after the last retry fails.
- Issue a refund against a subscription payment, with the option to cancel the subscription at the same time.
- Keep a full audit trail of every pause, resume, plan change, and refund on the subscription.

How to use it
Pause and resume (member)
- The member opens their subscription on the membership manage page (or the billing area of My Account).
- They click Pause. Access pauses now and no charge is taken during the pause.
- When they click Resume, access comes back and the billing period is extended by however long the pause lasted, so they do not lose paid time.
A pause can also carry an auto-resume date, in which case Learnomy resumes it for them on that date.
Change plan with proration (member)
- On the same manage surface, the member clicks Change plan.
- Learnomy shows the plans they can switch to and a live quote: a credit for the unused days on their current plan and a charge for the new plan, netted to a single "Due today" or "Credited to your account" figure.
- They choose when it takes effect:
- Immediately -- the provider charge or credit runs now and they move to the new plan straight away.
- At the end of my billing period -- they keep the current plan until the period ends, then the switch and the next charge happen on the new plan. Learnomy schedules this and executes it automatically when the period ends.
- On confirm, Learnomy applies the change, moves them onto the new plan's courses, and removes access to any courses that were only on the old plan.
Proration only runs when the site's plan-change setting is on; with it off, the new plan's price is charged in full.
Payment retries when a renewal fails (automatic)
When a renewal charge fails, the subscription goes past-due and Learnomy schedules retries on the cadence set in the Billing & retries settings:
- Conservative -- retries at 14, 28, and 56 days.
- Standard -- retries at 7, 14, and 28 days (default).
- Aggressive -- retries at 3, 7, and 14 days.
- Off -- no retries; the subscription is cancelled on the first failure.
If a retry succeeds, the member is billed, the period is extended, and the remaining retries are cancelled. If the final retry fails, the subscription is cancelled. Every attempt is logged so you can see what happened.
Refund a payment (admin)
- From the transactions or refundable-transactions list, an admin issues a refund against a subscription payment.
- Learnomy calls the gateway's refund API and records a refund transaction linked to the original charge.
- If the "refund cancels the subscription" setting is on (the default), the subscription is cancelled immediately. With it off, the refund is recorded but the member keeps access until the end of the current billing period.
Settings and options
The site-wide controls for retries, plan changes, and refunds live in Membership Pro's Billing & retries settings card, documented in Membership Plans. In short:
| Setting | What it controls |
|---|---|
| Payment retries | The retry cadence (Conservative / Standard / Aggressive / Off) used when a renewal charge fails. |
| Plan changes | Whether switching plans mid-cycle credits the unused time from the old plan (proration on) or charges the new plan in full (proration off). |
| Refunds | Whether issuing a refund also cancels the subscription immediately. |
These apply to all plans on the site and cannot be overridden per plan.
Admin views:
- A Paused subscriptions tab lists paused members and lets an admin resume any of them.
- A Dunning attempts view shows the retry history for a past-due subscription, with the option to force a retry now.
For developers
Services (Learnomy_Pro\Extensions\Membership_Pro):
Pause_Service::pause( $sub_id, $resume_at = null )/::resume( $sub_id )-- pause sets statuspaused; resume extendscurrent_period_endby the paused duration. An optional auto-resume is scheduled via Action Scheduler (learnomy_pro_auto_resume_subscription).Proration_Service::calculate( $sub, $new_plan, $effective = null )-- returns the credit / charge / net quote (provider-independent).provider_for( $sub )returns the Stripe / PayPal / Test proration provider that executes it.Plan_Change_Service::change( $sub_id, $new_plan_id, $effective )--effectiveisimmediateorscheduled(scheduled runs atcurrent_period_endvia Action Scheduler).Dunning_Service-- listens on Free'slearnomy_subscription_past_due; schedules retries (learnomy_pro_dunning_retry) per thelearnomy_pro_dunning_cadenceoption; records each inlrn_pro_dunning_attempts.Refund_Service::refund( $transaction_id, $amount, $reason )-- refunds via the provider, records arefundtransaction, and honours thelearnomy_pro_refund_cancelsoption.
Options:
learnomy_pro_dunning_cadence(conservative/standard/aggressive/off).learnomy_pro_proration_enabled(bool).learnomy_pro_refund_cancels(bool).
Actions fired:
learnomy_subscription_paused,learnomy_subscription_resumed.learnomy_pro_plan_changed,learnomy_pro_plan_change_queued,learnomy_pro_plan_changed_at_provider,learnomy_pro_plan_change_failed.learnomy_pro_refund_issued.
Filters:
learnomy_pro_allow_pause-- gate whether a given subscription may be paused.learnomy_pro_proration_provider-- swap in a custom proration provider for a subscription.
REST (learnomy-pro/v1):
POST /memberships/me/pause, and resume through Free'sPOST /learnomy/v1/memberships/me/resume(Pro participates via thelearnomy_membership_resume_pausedfilter).POST /memberships/me/change-plan(+ read-only/change-plan/optionsand/change-plan/quote).GET /memberships/dunning-attempts/{sub_id}and/retry-now(admin).GET /admin/refundable-transactions(admin); the refund itself runs through Free's canonicalPOST /learnomy/v1/admin/transactions/{id}/refundsolearnomy_payment_refundedstill fires.