Renewals
Renewals are the recurring charges that keep a subscription active. Milo Subscriptions handles scheduling the next payment, creating the renewal order, and charging the customer.
How renewals are scheduled
When a subscription is created, the plugin stores the next payment date based on the billing period and interval. After every successful renewal, the next payment date moves forward by one billing cycle.
Renewal processing runs through Action Scheduler (bundled with WooCommerce), so renewals happen in the background and can be inspected from Tools → Scheduled Actions.
Automatic vs manual renewals
Automatic renewals
With automatic renewals, the customer’s saved payment method is charged on the next payment date. This is the default for any subscription created with a gateway that supports tokenization (Milo Payments and most subscription-capable WooCommerce gateways).
Manual renewals
With manual renewals, the subscription is placed on hold at renewal time and the customer receives a renewal invoice email with a payment link. They pay through your checkout.
To enable manual renewals:
- Go to Subscriptions → Settings → Checkout.
- Turn on Accept manual renewals.
- Optionally turn on Turn off automatic payments to force every subscription to manual renewal.
Failed renewals
The core plugin does not ship with a built-in retry schedule. When a renewal payment fails and no retry add-on is active, the subscription is marked on-hold.
For automatic retries with configurable intervals and dunning-style behavior, install the Failed Payment Retry add-on. That add-on provides the retry rules stored under failed_payment_retry_rules and the logic to execute them.
Manually processing a renewal
Admins can generate a renewal from the subscription detail page:
- Create renewal order: creates a pending renewal order for the subscription.
- Create & send invoice: creates the renewal and emails the customer the invoice email with a payment link.
Early renewal
When Early renewal is enabled under Subscriptions → Settings → Checkout, customers can pay for the next period before the scheduled date from their account page.
Pause and resume
A subscription can be put on-hold (by an admin or by the customer if self-suspend is allowed). While on-hold, no renewals are attempted and entitlements (downloads, roles) are revoked. Reactivating restores the subscription to Active and reschedules renewals from the reactivation date.
Emails related to renewals
The customer-facing emails related to renewals are:
- Renewal invoice (manual renewals, and when an admin creates and sends an invoice).
- Processing renewal payment.
- Completed renewal.
- Subscription on-hold.
- Subscription cancelled.
- Subscription expired.
See Emails for the full list.
Troubleshooting
Renewals are not firing
Open Tools → Scheduled Actions and check whether subscription renewal actions are stuck in Pending. If they are, WP-Cron or system cron is not running often enough.
Renewals charge the wrong amount
Changes to a product’s price do not automatically update existing subscriptions. To change pricing for existing customers, enable Update prices on renewal under Subscriptions → Settings → Checkout; the subscription total will be recalculated at renewal time.
Customer’s card was declined
With no retry add-on, the subscription moves to on-hold and the customer receives the on-hold email. Install the Failed Payment Retry add-on for automatic retries.
Next steps
Did this page miss something?
Tell us and we rewrite it, usually the same day.