7

Apple introduced Grace Period for subscriptions.

https://developer.apple.com/app-store-connect/whats-new/?id=billinggraceperiod

I still can't tell if I need to set up the server-side to support this feature or just checking the receipt on the server is just an recommended way and I can use Grace Period without the server-side?

For example, you can check the receipt in the device to use auto-renewable subscriptions on iOS without the server-side, but checking the receipt with the server is a recommended way to avoid scum.

The grace period descriptions say you need to check receipts and server notifications, I guess you can check receipts on the device only if you want, but not sure about server notifications part.

Any help is appreciated!

Umeumeume
  • 1,952
  • 3
  • 21
  • 40

1 Answers1

1

You can do it without server but not with offline on-device receipt validation as you need fresh receipt info from /verifyReceipt endpoint from Apple servers. That's why it's recommended to use server-to-server validation as direct network request is vulnerable to man-in-the-middle attack.

Parsing receipt validation response you can get info whether subscription is in grace period by looking for grace_period_expires_date_ms in pending_renewal_info and also check is_in_billing_retry_period to indicate Apple is still trying to collect payment.

Receipt response documentation: https://developer.apple.com/documentation/appstorereceipts/verifyreceipt Handling billing grace period documentation: https://developer.apple.com/documentation/storekit/in-app_purchase/reducing_involuntary_subscriber_churn

Palli
  • 510
  • 6
  • 14