What Is the WooCommerce Failed Payment Grace Period?
How It Works
When a renewal payment fails, WooCommerce Subscriptions doesn't necessarily cut access immediately — the subscription moves to a status (often "On hold") while the retry schedule runs its course. In practice, this retry window functions as the grace period: the customer has that many days to resolve the payment issue (usually by updating their card) before the subscription is treated as genuinely lapsed.
Where Store Owners Get This Wrong
- Assuming a grace period exists without configuring retries at all. If Failed Payment Retry isn't enabled for the gateway, there's effectively no grace period — a single failed charge moves straight to whatever the immediate on-hold/cancel behavior is.
- Access control not actually tied to subscription status. If a membership, download access, or custom feature gate doesn't check the subscription's current status correctly, a customer might keep access indefinitely regardless of payment failures — or lose it immediately with no grace at all, if the integration is overly strict.
- Confusing the retry schedule with a fixed calendar grace period like "30 days." The actual grace window is only as long as the configured retry schedule, which defaults to a few days, not weeks.
How to Set the Grace Period You Actually Want
- Configure the retry schedule deliberately under the gateway's Failed Payment Retry settings, choosing intervals that match how long you actually want to give customers to fix a payment issue.
- Confirm what "On hold" actually does to access in your specific setup — test it directly rather than assuming, especially if access is controlled through Memberships or a custom integration.
- Communicate the grace period clearly in the failed-payment email, so customers know exactly how long they have before losing access.
- For a grace period longer than what retries alone provide, that needs custom logic explicitly keeping access active for a defined extra window after the final retry fails.
See custom WooCommerce development for grace-period logic beyond what the retry schedule provides by default.