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:

  1. Go to Subscriptions → Settings → Checkout.
  2. Turn on Accept manual renewals.
  3. 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.

Send a note