Skip to content
Gaurav TiwariDocs

Renewals, Failed Payments and Retries

Updated November 7, 2026

The first sale is the easy part. The money in a subscription business comes from the hundredth renewal, and most of the support load comes from the ones that fail: an expired card, a bank that wants another approval, a customer who never opened the invoice.

The Subscriptions module creates every renewal as a normal WooCommerce order, charges it or emails it, and when payment fails, it retries on your schedule before cancelling. You set the rules once under Stackless → Settings → Subscriptions.

How a Renewal Order Is Built

On the next payment date, the module creates a pending renewal order from the subscription itself:

  • the subscription’s own line items, quantities and line totals, not today’s product prices
  • its billing and shipping addresses
  • its currency, shipping lines, fees and taxes
  • any coupon still discounting it

The order is linked to the subscription, so it shows under Related orders on both sides. A duplicate or late scheduled action never bills the same period twice.

Automatic vs Manual Renewals

Each subscription has a renewal mode, decided at checkout from the product’s Renewal mode and the gateway the customer used.

  • Automatic: the renewal order is charged straight away. The built-in Stripe, PayPal, Square, Mollie and Razorpay gateways charge the saved payment method. Polar, Dodo Payments, Creem, Paddle and Stripe Managed Payments run their own schedule, and the order is marked paid when the provider reports the charge.
  • Manual: the customer gets the Subscription renewal invoice email with a link to pay the order. This is how every other WooCommerce gateway renews.

If an automatic subscription’s gateway can’t charge on its own, the module adds a note to the subscription and sends the renewal invoice instead.

Renewals That Start Before the Due Date

Some payment methods need time. Razorpay notifies the customer at least 24 hours before each debit, card debits take about 36 hours, and eNACH takes two working days. So for automatic renewals through Razorpay, the module creates the renewal order and starts the charge a few days before the due date.

  • Set how early under WooCommerce → Settings → Payments → Razorpay (Stackless), in Start renewal charges early (days): 1 to 7, default 3.
  • The next payment date and the billing period don’t change. The early order pays for the period that starts on the due date.
  • Manual renewals still invoice on the due date.
  • If the debit fails, the failed-payment steps below start from that day.

Mandates and the rest of the setup are in Razorpay.

Set the Renewal and Retry Rules

The Renewals and failed payments section has seven settings:

  • Retry schedule (days): comma-separated days between retries, default 1,3,5. Up to 10 entries are used, and each is capped at 60 days.
  • Declined for good: on by default. Stops retrying a card the bank says it will never approve. Covered below.
  • Manual renewal grace period (days): how long an unpaid manual renewal keeps the subscription active, 0 to 60, default 0.
  • Renewal reminders: email customers before each renewal, on by default.
  • Days before renewal: when that reminder goes out, default 3.
  • Days before trial ends: when the trial ending email goes out, default 3. 0 turns it off.
  • Card-expiring email (days before renewal): when to warn about a card that expires before the renewal, default 14, up to 60. 0 turns it off. Covered below.

During a trial, the regular reminder is skipped when the trial ending email already covers the first charge.

What Happens When an Automatic Payment Fails

  1. The renewal order is marked Failed.
  2. The subscription goes On hold, and the customer gets the Subscription payment failed email with a link to pay.
  3. A retry is scheduled using the first number in your schedule.
  4. Each retry charges the same renewal order again. Another failure schedules the next retry.
  5. When the last retry fails, the renewal order and the subscription are both cancelled.

With the default 1,3,5, retries run 1 day after the failure, 3 days after that, then 5 days after that. The subscription is cancelled if the third retry fails.

If the payment goes through at any point, the subscription returns to Active, pending retries are removed and the next payment date moves forward.

How Retries Follow the Decline Reason

When a gateway reports why the bank declined a renewal, retries follow the reason instead of the plain schedule. The built-in Stripe, PayPal, Square, Mollie and Razorpay gateways report it.

DeclineWhat happens
Declined for good: the card is lost, stolen, closed or invalidWith Declined for good on, it isn’t retried. The customer is asked to pay or change the payment method. With it off, it follows the retry schedule like any other decline.
The bank needs the customer to confirm the payment, such as 3D SecureNever retried automatically. The customer gets a link to pay and confirm.
Insufficient funds or over a limitRetried on the schedule, but never sooner than 3 days after the failure, so the retry can land after payday.
Anything else, or no reason givenThe retry schedule as set.

A renewal that isn’t retried stays payable for the rest of the retry period, which is the days left in your schedule. With 1,3,5 and a first failure, that’s 9 days. If it’s still unpaid then, the renewal order and the subscription are cancelled. The subscription’s notes say why retries stopped and until when the customer can pay.

If the customer picks or adds a new payment method during that time, the new method is charged within a minute.

The Subscription payment failed email matches the reason. A card declined for good asks for another payment method, a payment the bank wants confirmed asks the customer to pay now, and other declines say a retry is coming.

What Happens When a Manual Renewal Isn’t Paid

  1. The renewal invoice is emailed when the order is created.
  2. After the grace period, the subscription goes On hold. With a grace period of 0, that happens right away.
  3. The same retry schedule then sends the renewal invoice again as a reminder.
  4. If the order is still unpaid at the last step, it’s cancelled and so is the subscription.

With 1,3,5 and no grace period, reminders go out after 1 day and after 4 days, and the subscription is cancelled at day 9. An empty retry schedule leaves it on hold until it’s paid or you cancel it.

Customers Can Always Pay

A failed or unpaid renewal stays payable. Customers see a Pay renewal button on their subscription in My Account and a Subscription link next to renewal orders in their order list. Paying with any available gateway reactivates the subscription.

If a customer picks or adds a new payment method for the subscription while an automatic renewal is waiting, the new method is charged within a minute instead of at the next retry.

Renewals that the payment provider bills itself are the exception. Polar, Dodo Payments, Creem, Paddle and Stripe Managed Payments retry the charge on their own, so those renewal orders get no Pay renewal button, and the pay page explains why. Paying the order another way would charge the customer twice.

Warn Customers Before a Card Expires

A card that expires before its next renewal is a failed payment waiting to happen. With Card-expiring email set, 14 days by default, the module checks each automatic renewal that many days before it’s due. If the saved card expires before the renewal date, the customer gets the Card expiring email with an Update payment method button.

  • It goes out once per renewal, and the subscription gets a note naming the card and its expiry.
  • Only automatic renewals with a saved card count. Subscriptions the payment provider bills itself are skipped.
  • The check reads the card when it runs. When the gateway refreshes card details from the card network, as Stripe does, an updated card doesn’t trigger the email.

Subscription Statuses

  • Pending: created at checkout, waiting for the first payment.
  • Trial: in a free trial. It moves to Active when the trial ends.
  • Active: paid and renewing.
  • On hold: a renewal is unpaid or you put it on hold.
  • Paused: the customer or you paused it. Nothing renews, and it resumes on its date or by hand. See What Customers Can Do from My Account.
  • Pending cancellation: cancelled at the end of the period. Access continues until then.
  • Cancelled: ended early, by you, the customer or the final failed retry.
  • Expired: a fixed-length plan reached its end.

On a fixed-length plan, the next payment date clears after the last paid period and the subscription expires on its end date.

The Scheduled actions box on each subscription’s edit screen shows what’s queued next.

Good to Know

  • Renewals, retries and reminders are Action Scheduler jobs in the group stackless-subscriptions.
  • Find Billing Problems with Billing Health lists on-hold subscriptions, overdue renewals and renewal charges that never finished on one screen.
  • If you delete a renewal order, the module won’t recreate it for that period.
  • A renewal paid after the subscription was cancelled or expired is recorded, but no dates change.
  • Gateway-specific behavior, like Stripe’s 3D Secure handling, is in Set Up Stripe Payments and Sell Through Polar as Merchant of Record.

For a step-by-step walkthrough, see How to Recover Failed Subscription Payments.

Share

Was this helpful?

Still stuck? Open a support ticket