A complete guide on Apple's Billing Grace Period

Disha Sharma
Disha Sharma
6 min read
A complete guide on Apple's Billing Grace Period

When an iOS subscription renewal payment fails, subscribers lose access to their premium features—even though they never intended to cancel. This involuntary churn accounts for up to 20% of all subscription payment attempts and can silently drain your app's revenue.

Apple's Billing Grace Period is your first line of defense against this revenue leak. By enabling it, you give subscribers continued access while Apple attempts to recover failed payments—and the data shows it works: apps with grace period enabled recover 15-20% more subscriptions than those without.

What is Apple's Billing Grace Period?

Billing Grace Period is an App Store feature that maintains subscriber access to your app's premium content when their renewal payment fails. Instead of immediately losing access, subscribers continue enjoying full service while Apple attempts to collect payment in the background.

Without Grace Period enabled:

When a subscription renewal fails, the subscriber immediately enters the billing retry state and loses access. They may not even realize there's a problem until they open your app and find their premium features gone.

With Grace Period enabled:

When a renewal fails, the subscriber enters the grace period first. They retain full access to your app for the duration you've configured (3, 16, or 28 days) while Apple works to recover the payment. If successful within this window, there's zero interruption to service—and zero lost revenue for you.

Image

Grace period and billing retry: Complete timeline

PhaseDurationUser accessWhat's happening
Active subscriptionVaries✅ FullNormal subscription state
Grace period3, 16, or 28 days✅ FullPayment failed; Apple retrying; user retains access
Billing retryUp to 60 days❌ NoneGrace period ended; Apple still retrying; access revoked
Expired❌ NoneAll retry attempts failed; subscription ended

Why you should enable Grace Period

  1. Preserve revenue: If payment recovers within the grace period, you don't lose any days of paid service.
  2. Protect user experience: Users who lose access unexpectedly are more likely to churn permanently.
  3. Accumulate paid service days: Grace period days count toward the 85% revenue share tier.
  4. Handle regional disruptions: Grace period gives time for users to update payment methods during policy changes.

Involuntary churn: Numbers you need to know

MetricValue
Subscription payments entering billing issue state~20%
Annual revenue lost to involuntary churn~10%
Recovery rate with grace period + proactive communication15-20%
Best-in-class recovery rate (full dunning strategy)70%+
Subscription-based payment decline rates18-20%
Most common failure reason: Insufficient Funds~40%

Common payment failure reasons

Failure reasonPercentageTypeRecovery likelihood
Insufficient funds~40%Soft DeclineHigh (retry in 2-7 days)
Expired card10-12%Hard DeclineMedium (requires user action)
Do not honor~7.5%Soft DeclineHigh (retry with different timing)
Fraud15-20%Hard DeclineMedium (user verification needed)
Credit limit exceeded6-8%Soft DeclineHigh (wait for payment cycle)
Invalid card number~5%Hard DeclineLow (card data error)

How to enable Apple's Billing Grace Period?

Enabling grace period takes just a few minutes in App Store Connect:

Step 1: Sign in to App Store Connect and select your app.

Step 2: In the sidebar, click Subscriptions under the Features section.

Step 3: Locate the Billing Grace Period section and click Set Up Billing Grace Period.

Step 4: Choose your grace period duration (3, 16, or 28 days).

Step 5: Select which renewals qualify (All Renewals or Only Paid to Paid).

Step 6: Choose deployment environment (start with Sandbox Only for testing).

Step 7: Click Turn On to activate.

Image 1

Grace Period duration by subscription type

Subscription DurationMaximum Grace PeriodRecommended
Weekly6 days (auto-capped)6 days
Monthly28 days16 days
2-Month28 days16 days
3-Month28 days28 days
6-Month28 days28 days
Annual28 days28 days

Image 2

Implementing Grace Period with StoreKit 2

StoreKit 2 provides clean, modern APIs for detecting and handling grace period states. Here's how to implement proper subscription status checking:

StoreKit 2 renewal states reference

RenewalStateValueAccess levelYour action
.subscribed1✅ FullNormal service
.expired2❌ NoneShow resubscribe options
.inBillingRetryPeriod3❌ NonePrompt payment update
.inGracePeriod4✅ FullMaintain access, optionally notify
.revoked5❌ NoneHandle refund case

Swift code example: Checking subscription status

func checkSubscriptionStatus() async {    guard let statuses = try? await Product.SubscriptionInfo.status(        for: "your_subscription_group_id"    ) else { return }        for status in statuses {        switch status.state {        case .subscribed:            grantFullAccess()        case .inGracePeriod:            grantFullAccess()  // Maintain access!            showPaymentUpdatePrompt()        case .inBillingRetryPeriod:            revokeAccess()            showPaymentFailedScreen()        case .expired, .revoked:            revokeAccess()        default: break        }    }}
JavaScript

Server-side: App Store server notifications V2

For robust subscription management, implement server-side handling of Apple's notifications. Version 2 notifications provide granular events for every stage of the grace period lifecycle.

Key notification types for Grace Period

Notification typeSubtypeMeaningYour action
DID_FAIL_TO_RENEWGRACE_PERIODUser entered grace periodLog event, send notification
DID_FAIL_TO_RENEW(none)Payment failed, no grace periodRestrict access
GRACE_PERIOD_EXPIRED(none)Grace period endedRestrict access, send email
DID_RENEWBILLING_RECOVERYPayment recovered!Restore access
EXPIREDBILLING_RETRY60-day retry endedTrigger win-back campaign

Best practices for user communication

Proactive communication dramatically improves recovery rates.

Timing:

  • Send first notification immediately upon grace period entry
  • Send reminder at 50% of grace period elapsed
  • Send urgent reminder 24-48 hours before expiration

Messaging tips:

  • Be helpful, not alarming—the user didn't do anything wrong
  • Clearly explain the issue and how to fix it
  • Include a direct link to payment settings
  • Mention the deadline without being threatening

Sample push notification sequence

TimingMessage
Day 1Quick heads up: There's an issue with your subscription payment. Tap here to update your payment method and keep your premium features.
Day 8 (50%)Reminder: Your subscription payment still needs attention. Update your payment method to avoid any interruption to your service.
Day 14 (2 days left)Last chance: Update your payment method in the next 48 hours to keep your premium access.

Testing Grace Period in development

Always test your grace period implementation before deploying to production.

Testing with Xcode StoreKit configuration

  1. Create or open your StoreKit Configuration file in Xcode
  2. Enable Billing Grace Period: Editor → Enable Billing Grace Period
  3. Enable Billing Retry: Editor → Enable Billing Retry
  4. Set subscription renewal rate for faster testing
  5. Make a test purchase in your app
  6. Open StoreKit Transaction Manager: Debug → StoreKit → Manage Transactions
  7. Observe lifecycle: Purchased → Grace Period → Billing Retry → Expired
  8. Test recovery: Click card icon to simulate resolving payment

Conclusion

Apple's Billing Grace Period is a straightforward feature with significant revenue impact. By enabling it, you protect both your subscribers' experience and your bottom line from the silent drain of involuntary churn.

To maximize your recovery rates:

  • Enable grace period with an appropriate duration (16 or 28 days for most apps)
  • Implement proper StoreKit 2 status checking to maintain access during grace period
  • Set up App Store Server Notifications V2 for real-time event handling
  • Communicate proactively with grace period users through push notifications
  • Test thoroughly in sandbox before production deployment

The data is clear: most payment failures are recoverable. Billing Grace Period gives your subscribers the time they need to fix the issue—and keeps your revenue growing.

FAQ

Related articles

Apple Subscription Offers: Everything you need to know
10 min read

Apple Subscription Offers: Everything you need to know

Discover the latest Apple Subscription Offers and learn how to integrate them into your app. This comprehensive guide for developers provides insights and practical tips to help you make the most of Apple's subscription services.

Mstislav GrivachevMstislav GrivachevRead