payment-recovery
Installation
SKILL.md
Payment Recovery: Grace Period and Account Hold
Google Play does not cancel a subscription the moment a renewal charge fails. It runs a two stage recovery process: grace period (user keeps access while Google retries) then account hold (access revoked while Google keeps retrying). Your job is to react to the right RTDNs, toggle entitlements at the right moments, and prompt the user to fix payment without forcing them to leave your app.
Phase 1: Understand
Map the stages, the RTDN for each transition, and the entitlement you should hold.
| Stage | Entry RTDN | Duration | User access | SubscriptionPurchaseV2 state |
|---|---|---|---|---|
| Silent grace period | none (always applies) | ~1 day | Active | SUBSCRIPTION_STATE_ACTIVE |
| Configured grace period | SUBSCRIPTION_IN_GRACE_PERIOD |
0 to 30 days (per base plan) | Keep full access | SUBSCRIPTION_STATE_IN_GRACE_PERIOD |
| Account hold | SUBSCRIPTION_ON_HOLD |
0 to 30 days | Revoke | SUBSCRIPTION_STATE_ON_HOLD |
| Recovered | SUBSCRIPTION_RECOVERED |
n/a | Restore immediately | SUBSCRIPTION_STATE_ACTIVE |
| Terminal failure | SUBSCRIPTION_CANCELED or SUBSCRIPTION_EXPIRED |
n/a | Gone | canceled/expired |
Key facts to internalize before writing any code: