This document lists the Google Play Developer APIs and the related features which are in a deprecation period.
Deprecation timeline - May 19, 2026 to August 31, 2028
The features and APIs in this section are deprecated as of May 19, 2026, and will be shut down on August 31, 2028. For deprecated items, you may request an extension until November 1, 2028 by submitting a support ticket through the Play Console > Help.
Deprecated subscription APIs
This section lists the API deprecations.
Deprecation timeline - May 21, 2025 to August 31, 2027
The features and APIs in this section are deprecated as of May 21, 2025, and will be shut down on August 31, 2027. For deprecated items, you may request an extension until November 1, 2027 by submitting a support ticket through the Play Console > Help.
Deprecated subscription APIs
This section lists the API deprecations.
| API | Available replacement |
|---|---|
| subscriptions.get | subscriptionsv2.get |
| subscriptions.refund | Call subscriptionsv2.get to get SubscriptionPurchaseLineItem. latest_successful_order_id, and then call Orders.refund to refund the orders. |
| subscriptions.revoke | subscriptionsv2.revoke |
| SubscriptionPurchaseV2. latestOrderId | SubscriptionPurchaseLineItem. latest_successful_order_id |
| RealTimeDeveloperNotification. SubscriptionNotification.subscriptionId | No replacement |
| RealTimeDeveloperNotification. SubscriptionNotification. notificationType SUBSCRIPTION_PRICE_CHANGE_CONFIRMED | SUBSCRIPTION_PRICE _CHANGE_UPDATED |
SubscriptionPurchaseV2 fields for recurring subscriptions
purchases.subscriptionv2 contains new fields that provide more detail
about new subscription objects. The following table shows how fields from
the legacy subscription endpoint map to corresponding fields in
purchases.subscriptionv2.
| SubscriptionPurchase | SubscriptionPurchaseV2 |
|---|---|
countryCode |
regionCode |
orderId |
lineItems.latestSuccessfulOrderIdYou can get the pending order ID from inGracePeriodStateContext.renewalDeclined.pendingOrderId or
onHoldStateContext.renewalDeclined.pendingOrderId. |
startTimeMillis |
startTime |
expiryTimeMillis |
lineItems.expiryTime (each subscription acquired
in the purchase has its own expiryTime) |
autoResumeTimeMillis |
pausedStateContext.autoResumeTime |
autoRenewing |
lineItems.autoRenewingPlan.autoRenewEnabled |
priceCurrenceCode,
priceAmountMicros |
lineItems.autoRenewingPlan.recurringPrice |
introductoryPriceInfo |
lineItems.offerPhase.introductoryPriceThis information can also be found in the offer for
each of the subscriptions purchased. |
developerPayload |
(no equivalent field) developer payload has been deprecated |
paymentState |
(no equivalent field) You can infer the payment state from subscriptionState:
|
cancelReason,
userCancellationTimeMillis,
cancelSurveyResult |
canceledStateContext |
linkedPurchaseToken |
linkedPurchaseToken (no change) |
purchaseType |
Test: through testPurchasePromotion: signupPromotion |
priceChange |
lineItems.autoRenewingPlan.priceChangeDetails |
profileName,
emailAddress,
givenName,
familyName,
profileId |
subscribeWithGoogleInfo |
acknowledgementState |
acknowledgementState (no change) |
promotionType,
promotionCode |
signupPromotion |
externalAccountId,
obfuscatedExternalAccountId,
obfuscatedExteranlProfileId |
externalAccountIdentifiers |