AAdvanced Subscriptions
Features Pricing Docs Changelog Contact — Español
Sign in Buy the plugin →
Lifecycle · 5 min read

Configuring retry attempts

When a renewal payment fails, the plugin doesn't give up immediately. It schedules retries with exponential backoff, sends dunning emails to the customer, and only marks the subscription as cancelled once the retry budget is exhausted. This page covers the default policy, the admin toggles, and the manual-payment escape hatch.

Last reviewed 2026-05-27 Plugin v2.0.0

Default retry policy

Out of the box, when a renewal charge fails the plugin schedules up to 3 retries:

AttemptWhenWhat happens
OriginalScheduled renewal timeSubscription moves to on-hold, dunning email sent.
Retry 1+1 dayRe-charge. On success → active. On failure → schedule next retry.
Retry 2+3 daysRe-charge. Same logic.
Retry 3+7 daysFinal attempt. If it fails, subscription moves to cancelled.

Total grace window: ~11 days. Long enough for a customer to update an expired card, short enough to keep your churn books honest.

Admin settings

Find the toggles in WooCommerce → Settings → Advanced Subscriptions → Payments:

Enable automatic retry of failed attempts
Master switch (aswc_enable_automatic_retry_failed_attempts). Off = renewal fails once and the subscription is cancelled immediately. Recommended: on.
Cancel after N failed attempts
The threshold (aswc_after_no_failed_attempt_cancel). Default 3. Increase if you want a longer grace period, decrease if you want to cut off bad accounts faster.
Accept manual payment
(aswc_enbale_accept_manual_payment — typo in the option key is intentional, it ships that way.) Adds a "Pay now" button in the customer's My Account so they can rescue a failed renewal without waiting for the next retry. Recommended: on.

Dunning emails

The customer receives an email on the original failure and (optionally) on each retry attempt:

  • First failure: "Your renewal payment failed. We'll retry in 24h. Click here to pay manually now."
  • Last retry exhausted: "We couldn't process your renewal. Your subscription has been cancelled. Reactivate button."

Templates live in /includes/loader/emails/ and can be overridden via your theme (your-theme/woocommerce/emails/). See Emails overview.

The manual-payment escape hatch

With Accept manual payment on, the customer sees a Pay now button on the failed renewal order in My Account. Clicking it:

  1. Opens a one-page form pre-filled with the renewal amount and the saved payment method.
  2. Lets the customer optionally pick a different payment method (e.g. a fresh card).
  3. Attempts the charge on-session (so 3DS challenges work).
  4. On success, marks the renewal paid and re-activates the subscription. All scheduled retries for this renewal are cancelled.

This is the single most effective recovery mechanism. Most "wallet" failures (expired card, blocked card, low balance) are resolved when the customer is told and given a one-click fix.

Customising the policy from code

You can override the retry schedule per-subscription with a filter:

PHP — functions.php
// VIP customers: more retries, longer window
add_filter( 'aswc_retry_schedule', function ( $schedule, $subscription ) {
    if ( $subscription->get_user()->has_role( 'vip' ) ) {
        return [ '+2 days', '+7 days', '+14 days', '+30 days' ];
    }
    return $schedule;
}, 10, 2 );

Relevant hooks