A payment-recovery window in which a subscriber keeps access even though the scheduled renewal charge failed.
A grace period is a store-controlled interval after an unsuccessful subscription renewal. The subscriber remains entitled to paid content while the store retries the payment and prompts the customer to repair a card, balance, or billing profile. Grace is therefore different from an ordinary active period: access continues, but the renewal has not yet been collected. A backend should record that distinction so support, analytics, and recovery messaging can explain the real state without prematurely removing benefits.
Google Play reports grace explicitly through purchases.subscriptionsv2.get: subscriptionState becomes SUBSCRIPTION_STATE_IN_GRACE_PERIOD. An RTDN message of SUBSCRIPTION_IN_GRACE_PERIOD tells the server to fetch that source-of-truth resource. Play keeps expiryTime in the future during grace, and a recovered subscription retains its original renewal date. Developers configure recovery behavior for the base plan; Play also applies a short silent retry interval before some visible lifecycle notifications.
Apple calls the feature Billing Grace Period. App Store Connect currently offers app-wide choices of 3, 16, or 28 days. Weekly subscriptions use 3 days or are capped at 6 days when the longer choices are selected; monthly and yearly products can use the full configured option. Apple describes a subscriber in grace as also being in billing retry, but the concepts are not interchangeable: grace is the entitled portion of recovery, while billing retry can continue after entitlement ends. Apps must inspect StoreKit renewal information and server notifications rather than guessing from a date alone.
Suppose a monthly Play renewal fails on Tuesday. An RTDN arrives, the backend calls subscriptionsv2, sees the grace-period state, and leaves the premium entitlement active. If the customer updates the payment method on Friday, Play sends a recovery or renewal event and service continues without a gap. If recovery does not occur before grace ends, the subscription can enter account hold; at that boundary the backend revokes access. This event-driven sequence avoids inferring lifecycle state from unrelated legacy fields.
The Play recovery state after grace in which paid access must be suspended.
The store’s broader sequence of attempts to collect a failed renewal.
The notification channel that tells a Play backend to refresh subscription state.
React to store events without trusting a client-side guess.
Start free