<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="androidpublisher_v3.html">Google Play Android Developer API</a> . <a href="androidpublisher_v3.purchases.html">purchases</a> . <a href="androidpublisher_v3.purchases.subscriptions.html">subscriptions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#acknowledge">acknowledge(packageName, subscriptionId, token, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Acknowledges a subscription purchase.</p>
<p class="toc_element">
  <code><a href="#cancel">cancel(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Cancels a user's subscription purchase. The subscription remains valid until its expiration time. Newer version is available at purchases.subscriptionsv2.cancel for better client library support.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#defer">defer(packageName, subscriptionId, token, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Defers a user's subscription purchase until a specified future expiration time.</p>
<p class="toc_element">
  <code><a href="#get">get(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Deprecated: Use purchases.subscriptionsv2.get instead. Checks whether a user's subscription purchase is valid and returns its expiry time.</p>
<p class="toc_element">
  <code><a href="#refund">refund(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Deprecated: Use orders.refund instead. Refunds a user's subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.</p>
<p class="toc_element">
  <code><a href="#revoke">revoke(packageName, subscriptionId, token, x__xgafv=None)</a></code></p>
<p class="firstline">Deprecated: Use purchases.subscriptionsv2.revoke instead. Refunds and immediately revokes a user's subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="acknowledge">acknowledge(packageName, subscriptionId, token, body=None, x__xgafv=None)</code>
  <pre>Acknowledges a subscription purchase.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, Note: Since May 21, 2025, subscription_id is not required, and not recommended for subscription with add-ons. The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for the purchases.subscriptions.acknowledge API.
  &quot;developerPayload&quot;: &quot;A String&quot;, # Payload to attach to the purchase.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="cancel">cancel(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Cancels a user&#x27;s subscription purchase. The subscription remains valid until its expiration time. Newer version is available at purchases.subscriptionsv2.cancel for better client library support.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, Note: Since May 21, 2025, subscription_id is not required, and not recommended for subscription with add-ons. The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="defer">defer(packageName, subscriptionId, token, body=None, x__xgafv=None)</code>
  <pre>Defers a user&#x27;s subscription purchase until a specified future expiration time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for the purchases.subscriptions.defer API.
  &quot;deferralInfo&quot;: { # A SubscriptionDeferralInfo contains the data needed to defer a subscription purchase to a future expiry time. # The information about the new desired expiry time for the subscription.
    &quot;desiredExpiryTimeMillis&quot;: &quot;A String&quot;, # The desired next expiry time to assign to the subscription, in milliseconds since the Epoch. The given time must be later/greater than the current expiry time for the subscription.
    &quot;expectedExpiryTimeMillis&quot;: &quot;A String&quot;, # The expected expiry time for the subscription. If the current expiry time for the subscription is not the value specified here, the deferral will not occur.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for the purchases.subscriptions.defer API.
  &quot;newExpiryTimeMillis&quot;: &quot;A String&quot;, # The new expiry time for the subscription in milliseconds since the Epoch.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Deprecated: Use purchases.subscriptionsv2.get instead. Checks whether a user&#x27;s subscription purchase is valid and returns its expiry time.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A SubscriptionPurchase resource indicates the status of a user&#x27;s subscription purchase.
  &quot;acknowledgementState&quot;: 42, # The acknowledgement state of the subscription product. Possible values are: 0. Yet to be acknowledged 1. Acknowledged
  &quot;autoRenewing&quot;: True or False, # Whether the subscription will automatically be renewed when it reaches its current expiry time.
  &quot;autoResumeTimeMillis&quot;: &quot;A String&quot;, # Time at which the subscription will be automatically resumed, in milliseconds since the Epoch. Only present if the user has requested to pause the subscription.
  &quot;cancelReason&quot;: 42, # The reason why a subscription was canceled or is not auto-renewing. Possible values are: 0. User canceled the subscription 1. Subscription was canceled by the system, for example because of a billing problem 2. Subscription was replaced with a new subscription 3. Subscription was canceled by the developer
  &quot;cancelSurveyResult&quot;: { # Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey). # Information provided by the user when they complete the subscription cancellation flow (cancellation reason survey).
    &quot;cancelSurveyReason&quot;: 42, # The cancellation reason the user chose in the survey. Possible values are: 0. Other 1. I don&#x27;t use this service enough 2. Technical issues 3. Cost-related reasons 4. I found a better app
    &quot;userInputCancelReason&quot;: &quot;A String&quot;, # The customized input cancel reason from the user. Only present when cancelReason is 0.
  },
  &quot;countryCode&quot;: &quot;A String&quot;, # ISO 3166-1 alpha-2 billing country/region code of the user at the time the subscription was granted.
  &quot;developerPayload&quot;: &quot;A String&quot;, # A developer-specified string that contains supplemental information about an order.
  &quot;emailAddress&quot;: &quot;A String&quot;, # The email address of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
  &quot;expiryTimeMillis&quot;: &quot;A String&quot;, # Time at which the subscription will expire, in milliseconds since the Epoch.
  &quot;externalAccountId&quot;: &quot;A String&quot;, # User account identifier in the third-party service. Only present if account linking happened as part of the subscription purchase flow.
  &quot;familyName&quot;: &quot;A String&quot;, # The family name of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
  &quot;givenName&quot;: &quot;A String&quot;, # The given name of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
  &quot;introductoryPriceInfo&quot;: { # Contains the introductory price information for a subscription. # Introductory price information of the subscription. This is only present when the subscription was purchased with an introductory price. This field does not indicate the subscription is currently in introductory price period.
    &quot;introductoryPriceAmountMicros&quot;: &quot;A String&quot;, # Introductory price of the subscription, not including tax. The currency is the same as price_currency_code. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.
    &quot;introductoryPriceCurrencyCode&quot;: &quot;A String&quot;, # ISO 4217 currency code for the introductory subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is &quot;GBP&quot;.
    &quot;introductoryPriceCycles&quot;: 42, # The number of billing period to offer introductory pricing.
    &quot;introductoryPricePeriod&quot;: &quot;A String&quot;, # Introductory price period, specified in ISO 8601 format. Common values are (but not limited to) &quot;P1W&quot; (one week), &quot;P1M&quot; (one month), &quot;P3M&quot; (three months), &quot;P6M&quot; (six months), and &quot;P1Y&quot; (one year).
  },
  &quot;kind&quot;: &quot;A String&quot;, # This kind represents a subscriptionPurchase object in the androidpublisher service.
  &quot;linkedPurchaseToken&quot;: &quot;A String&quot;, # The purchase token of the originating purchase if this subscription is one of the following: 0. Re-signup of a canceled but non-lapsed subscription 1. Upgrade/downgrade from a previous subscription For example, suppose a user originally signs up and you receive purchase token X, then the user cancels and goes through the resignup flow (before their subscription lapses) and you receive purchase token Y, and finally the user upgrades their subscription and you receive purchase token Z. If you call this API with purchase token Z, this field will be set to Y. If you call this API with purchase token Y, this field will be set to X. If you call this API with purchase token X, this field will not be set.
  &quot;obfuscatedExternalAccountId&quot;: &quot;A String&quot;, # An obfuscated version of the id that is uniquely associated with the user&#x27;s account in your app. Present for the following purchases: * If account linking happened as part of the subscription purchase flow. * It was specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid when the purchase was made.
  &quot;obfuscatedExternalProfileId&quot;: &quot;A String&quot;, # An obfuscated version of the id that is uniquely associated with the user&#x27;s profile in your app. Only present if specified using https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid when the purchase was made.
  &quot;orderId&quot;: &quot;A String&quot;, # The order id of the latest recurring order associated with the purchase of the subscription. If the subscription was canceled because payment was declined, this will be the order id from the payment declined order.
  &quot;paymentState&quot;: 42, # The payment state of the subscription. Possible values are: 0. Payment pending 1. Payment received 2. Free trial 3. Pending deferred upgrade/downgrade Not present for canceled, expired subscriptions.
  &quot;priceAmountMicros&quot;: &quot;A String&quot;, # Price of the subscription, For tax exclusive countries, the price doesn&#x27;t include tax. For tax inclusive countries, the price includes tax. Price is expressed in micro-units, where 1,000,000 micro-units represents one unit of the currency. For example, if the subscription price is €1.99, price_amount_micros is 1990000.
  &quot;priceChange&quot;: { # Contains the price change information for a subscription that can be used to control the user journey for the price change in the app. This can be in the form of seeking confirmation from the user or tailoring the experience for a successful conversion. # The latest price change information available. This is present only when there is an upcoming price change for the subscription yet to be applied. Once the subscription renews with the new price or the subscription is canceled, no price change information will be returned.
    &quot;newPrice&quot;: { # Definition of a price, i.e. currency and units. # The new price the subscription will renew with if the price change is accepted by the user.
      &quot;currency&quot;: &quot;A String&quot;, # 3 letter Currency code, as defined by ISO 4217. See java/com/google/common/money/CurrencyCode.java
      &quot;priceMicros&quot;: &quot;A String&quot;, # Price in 1/million of the currency base unit, represented as a string.
    },
    &quot;state&quot;: 42, # The current state of the price change. Possible values are: 0. Outstanding: State for a pending price change waiting for the user to agree. In this state, you can optionally seek confirmation from the user using the In-App API. 1. Accepted: State for an accepted price change that the subscription will renew with unless it&#x27;s canceled. The price change takes effect on a future date when the subscription renews. Note that the change might not occur when the subscription is renewed next.
  },
  &quot;priceCurrencyCode&quot;: &quot;A String&quot;, # ISO 4217 currency code for the subscription price. For example, if the price is specified in British pounds sterling, price_currency_code is &quot;GBP&quot;.
  &quot;profileId&quot;: &quot;A String&quot;, # The Google profile id of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
  &quot;profileName&quot;: &quot;A String&quot;, # The profile name of the user when the subscription was purchased. Only present for purchases made with &#x27;Subscribe with Google&#x27;.
  &quot;promotionCode&quot;: &quot;A String&quot;, # The promotion code applied on this purchase. This field is only set if a vanity code promotion is applied when the subscription was purchased.
  &quot;promotionType&quot;: 42, # The type of promotion applied on this purchase. This field is only set if a promotion is applied when the subscription was purchased. Possible values are: 0. One time code 1. Vanity code
  &quot;purchaseType&quot;: 42, # The type of purchase of the subscription. This field is only set if this purchase was not made using the standard in-app billing flow. Possible values are: 0. Test (i.e. purchased from a license testing account) 1. Promo (i.e. purchased using a promo code)
  &quot;startTimeMillis&quot;: &quot;A String&quot;, # Time at which the subscription was granted, in milliseconds since the Epoch.
  &quot;userCancellationTimeMillis&quot;: &quot;A String&quot;, # The time at which the subscription was canceled by the user, in milliseconds since the epoch. Only present if cancelReason is 0.
}</pre>
</div>

<div class="method">
    <code class="details" id="refund">refund(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Deprecated: Use orders.refund instead. Refunds a user&#x27;s subscription purchase, but the subscription remains valid until its expiration time and it will continue to recur.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, &quot;The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="revoke">revoke(packageName, subscriptionId, token, x__xgafv=None)</code>
  <pre>Deprecated: Use purchases.subscriptionsv2.revoke instead. Refunds and immediately revokes a user&#x27;s subscription purchase. Access to the subscription will be terminated immediately and it will stop recurring.

Args:
  packageName: string, The package name of the application for which this subscription was purchased (for example, &#x27;com.some.thing&#x27;). (required)
  subscriptionId: string, The purchased subscription ID (for example, &#x27;monthly001&#x27;). (required)
  token: string, The token provided to the user&#x27;s device when the subscription was purchased. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

</body></html>