---
title: "POST /v1/{+parent}/subscriptions"
method: POST
path: "/v1/{+parent}/subscriptions"
tags: ["partners"]
---

# POST /v1/{+parent}/subscriptions

`POST /v1/{+parent}/subscriptions`

Used by partners to create a subscription for their customers. The created subscription is associated with the end user inferred from the end user credentials. This API must be authorized by the end user using OAuth.

## Path parameters

- `parent` string, required

## Query parameters

- `subscriptionId` string

## Request body

- Subscription — Acts as a central billing entity between an external partner and Google. Google services use the subscription state to grant or revoke the user's service entitlement. Note: The subscription state might not perfectly align with the user's service entitlement. Some services might continue providing access until the current cycle ends, even if the subscription is immediately canceled. Consult the relevant contract or product policy for specific details.
  - `cycleEndTime` string, google-datetime — Output only. The time at which the subscription is expected to be extended, in ISO 8061 format. UTC timezone. For example: "2019-08-31T17:28:54.564Z"
  - `promotions` string[] — Optional. Deprecated: consider using the top-level `promotion_specs` as the input. Optional. Resource name that identifies one or more promotions that can be applied on the product. A typical promotion for a subscription is Free trial. The format will be 'partners/{partner_id}/promotions/{promotion_id}'.
  - `name` string — Identifier. Resource name of the subscription. It will have the format of "partners/{partner_id}/subscriptions/{subscription_id}". This is available for authorizeAddon, but otherwise is response only.
  - `promotionSpecs` SubscriptionPromotionSpec[] — Optional. Subscription-level promotions. Only free trial is supported on this level. It determines the first renewal time of the subscription to be the end of the free trial period. Specify the promotion resource name only when used as input.
    - `promotion` string — Required. Promotion resource name that identifies a promotion. The format is 'partners/{partner_id}/promotions/{promotion_id}'.
    - `introductoryPricingDetails` PromotionIntroductoryPricingDetails — The details of a introductory pricing promotion.
      - `introductoryPricingSpecs` PromotionIntroductoryPricingDetailsIntroductoryPricingSpec[] — Output only. Specifies the introductory pricing periods.
        - `regionCode` string — Output only. 2-letter ISO region code where the product is available in. Ex. "US".
        - `discountAmount` Amount — Describes the amount unit including the currency code.
          - `currencyCode` string — Required. Currency codes in accordance with [ISO-4217 Currency Codes] (https://en.wikipedia.org/wiki/ISO_4217). For example, USD.
          - `amountMicros` string, int64 — Required. Amount in micros (1_000_000 micros = 1 currency unit)
        - `discountRatioMicros` string, int64 — Output only. The discount percentage in micros. For example, 50,000 represents 5%.
        - `recurrenceCount` integer — Output only. The duration of an introductory offer in billing cycles.
    - `type` 'PROMOTION_TYPE_UNSPECIFIED' | 'PROMOTION_TYPE_FREE_TRIAL' | 'PROMOTION_TYPE_INTRODUCTORY_PRICING' — Output only. The type of the promotion for the spec.
    - `freeTrialDuration` Duration — Describes the length of a period of a time.
      - `unit` 'UNIT_UNSPECIFIED' | 'MONTH' | 'DAY' | 'HOUR' — The unit used for the duration
      - `count` integer — number of duration units to be included.
  - `endUserEntitled` boolean — Output only. Indicates if the subscription is entitled to the end user.
  - `partnerUserToken` string — Required. Identifier of the end-user in partner’s system. The value is restricted to 63 ASCII characters at the maximum.
  - `upgradeDowngradeDetails` SubscriptionUpgradeDowngradeDetails — Details about the previous subscription that this new subscription upgrades/downgrades from.
    - `previousSubscriptionId` string — Required. The previous subscription id to be replaced. The format can be one of the following: 1. `subscription_id`: the old subscription id under the same partner_id. 2. `partners/{partner_id}/subscriptions/{subscription_id}`. A different partner_id is allowed. But they must be under the same partner group.
    - `billingCycleSpec` 'BILLING_CYCLE_SPEC_UNSPECIFIED' | 'BILLING_CYCLE_SPEC_ALIGN_WITH_PREVIOUS_SUBSCRIPTION' | 'BILLING_CYCLE_SPEC_START_IMMEDIATELY' | 'BILLING_CYCLE_SPEC_DEFERRED_TO_NEXT_RECURRENCE' — Required. Specifies the billing cycle spec for the new upgraded/downgraded subscription.
  - `migrationDetails` SubscriptionMigrationDetails — Describes the details of the migrated subscription.
    - `migratedSubscriptionId` string — Output only. The migrated subscription id in the legacy system.
  - `purchaseTime` string, google-datetime — Optional. The timestamp when the user transaction was made with the Partner. Specify for the case of "bundle with choice", and it must be before the provision_time (when the user makes a selection).
  - `cancellationDetails` SubscriptionCancellationDetails — Describes the details of a cancelled or cancelling subscription.
    - `reason` 'CANCELLATION_REASON_UNSPECIFIED' | 'CANCELLATION_REASON_FRAUD' | 'CANCELLATION_REASON_REMORSE' | 'CANCELLATION_REASON_ACCIDENTAL_PURCHASE' | 'CANCELLATION_REASON_PAST_DUE' | 'CANCELLATION_REASON_ACCOUNT_CLOSED' | 'CANCELLATION_REASON_UPGRADE_DOWNGRADE' | 'CANCELLATION_REASON_USER_DELINQUENCY' | 'CANCELLATION_REASON_SYSTEM_ERROR' | 'CANCELLATION_REASON_SYSTEM_CANCEL' | 'CANCELLATION_REASON_BILLING_SYSTEM_SWITCH' | 'CANCELLATION_REASON_OTHER' — Output only. The reason of the cancellation.
  - `updateTime` string, google-datetime — Output only. System generated timestamp when the subscription is most recently updated. UTC timezone.
  - `createTime` string, google-datetime — Output only. System generated timestamp when the subscription is created. UTC timezone.
  - `products` string[] — Optional. Deprecated: consider using `line_items` as the input. Required. Resource name that identifies the purchased products. The format will be 'partners/{partner_id}/products/{product_id}'.
  - `processingState` 'PROCESSING_STATE_UNSPECIFIED' | 'PROCESSING_STATE_CANCELLING' | 'PROCESSING_STATE_RECURRING' | 'PROCESSING_STATE_RESUMING' | 'PROCESSING_STATE_SUSPENDING' — Output only. Describes the processing state of the subscription. See more details at [the lifecycle of a subscription](/payments/reseller/subscription/reference/index/Receive.Notifications#payments-subscription-lifecycle).
  - `serviceLocation` Location — Describes a location of an end user.
    - `regionCode` string — 2-letter ISO region code for current content region. Ex. “US” Please refers to: https://en.wikipedia.org/wiki/ISO_3166-1
    - `postalCode` string — The postal code this location refers to. Ex. "94043"
  - `redirectUri` string — Output only. The place where partners should redirect the end-user to after creation. This field might also be populated when creation failed. However, Partners should always prepare a default URL to redirect the user in case this field is empty.
  - `state` 'STATE_UNSPECIFIED' | 'STATE_CREATED' | 'STATE_ACTIVE' | 'STATE_CANCELLED' | 'STATE_IN_GRACE_PERIOD' | 'STATE_CANCEL_AT_END_OF_CYCLE' | 'STATE_SUSPENDED' — Output only. Describes the state of the subscription. See more details at [the lifecycle of a subscription](/payments/reseller/subscription/reference/index/Receive.Notifications#payments-subscription-lifecycle).
  - `renewalTime` string, google-datetime — Output only. The time at which the subscription is expected to be renewed by Google - a new charge will be incurred and the service entitlement will be renewed. A non-immediate cancellation will take place at this time too, before which, the service entitlement for the end user will remain valid. UTC timezone in ISO 8061 format. For example: "2019-08-31T17:28:54.564Z"
  - `lineItems` SubscriptionLineItem[] — Required. The line items of the subscription.
    - `lineItemFreeTrialEndTime` string, google-datetime — Output only. The free trial end time will be populated after the line item is successfully processed. End time of the line item free trial period, in ISO 8061 format. For example, "2019-08-31T17:28:54.564Z". It will be set the same as createTime if no free trial promotion is specified.
    - `recurrenceType` 'LINE_ITEM_RECURRENCE_TYPE_UNSPECIFIED' | 'LINE_ITEM_RECURRENCE_TYPE_PERIODIC' | 'LINE_ITEM_RECURRENCE_TYPE_ONE_TIME' — Output only. The recurrence type of the line item.
    - `productPayload` ProductPayload — Specifies product specific payload.
      - `googleOnePayload` GoogleOnePayload — Payload specific to Google One products.
        - `salesChannel` 'CHANNEL_UNSPECIFIED' | 'CHANNEL_RETAIL' | 'CHANNEL_ONLINE_WEB' | 'CHANNEL_ONLINE_ANDROID_APP' | 'CHANNEL_ONLINE_IOS_APP' — The type of sales channel through which the subscription was sold.
        - `storeId` string — The identifier for the partner store where the subscription was sold.
        - `campaigns` string[] — Campaign attributed to sales of this subscription.
        - `offering` 'OFFERING_UNSPECIFIED' | 'OFFERING_VAS_BUNDLE' | 'OFFERING_VAS_STANDALONE' | 'OFFERING_HARD_BUNDLE' | 'OFFERING_SOFT_BUNDLE' — The type of offering the subscription was sold by the partner. e.g. VAS.
      - `youtubePayload` YoutubePayload — Payload specific to Youtube products.
        - `partnerPlanType` 'PARTNER_PLAN_TYPE_UNSPECIFIED' | 'PARTNER_PLAN_TYPE_STANDALONE' | 'PARTNER_PLAN_TYPE_HARD_BUNDLE' | 'PARTNER_PLAN_TYPE_SOFT_BUNDLE' — Optional. Specifies the plan type offered to the end user by the partner.
        - `partnerEligibilityIds` string[] — The list of eligibility_ids which are applicable for the line item.
        - `accessEndTime` string, google-datetime — Output only. The access expiration time for this line item.
      - `googleHomePayload` GoogleHomePayload — Payload specific for Google Home products.
        - `partnerStructureId` string — Optional. This identifies the structure ID on partner side that the subscription should be applied to. Only required when the partner requires structure mapping.
        - `googleStructureId` string — Optional. Structure identifier on Google side.
        - `attachedToGoogleStructure` boolean — Output only. This identifies whether the subscription is attached to a Google Home structure.
    - `product` string — Required. Product resource name that identifies the product associated with this line item. The format is 'partners/{partner_id}/products/{product_id}'.
    - `finiteBillingCycleDetails` FiniteBillingCycleDetails — Details for a subscription line item with finite billing cycles.
      - `billingCycleCountLimit` string, int64 — The number of a subscription line item billing cycles after which billing will stop automatically.
    - `oneTimeRecurrenceDetails` SubscriptionLineItemOneTimeRecurrenceDetails — Details for a ONE_TIME recurrence line item.
      - `servicePeriod` ServicePeriod — A description of what time period or moment in time the product or service is being delivered over.
        - `startTime` string, google-datetime — Required. The start time of the service period. Time is inclusive.
        - `endTime` string, google-datetime — Optional. The end time of the service period. Time is exclusive.
    - `state` 'LINE_ITEM_STATE_UNSPECIFIED' | 'LINE_ITEM_STATE_ACTIVE' | 'LINE_ITEM_STATE_INACTIVE' | 'LINE_ITEM_STATE_NEW' | 'LINE_ITEM_STATE_ACTIVATING' | 'LINE_ITEM_STATE_DEACTIVATING' | 'LINE_ITEM_STATE_WAITING_TO_DEACTIVATE' | 'LINE_ITEM_STATE_OFF_CYCLE_CHARGING' — Output only. The state of the line item.
    - `description` string — Output only. Description of this line item.
    - `amount` Amount — Describes the amount unit including the currency code.
      - `currencyCode` string — Required. Currency codes in accordance with [ISO-4217 Currency Codes] (https://en.wikipedia.org/wiki/ISO_4217). For example, USD.
      - `amountMicros` string, int64 — Required. Amount in micros (1_000_000 micros = 1 currency unit)
    - `lineItemIndex` integer — Output only. A unique index of the subscription line item.
    - `lineItemPromotionSpecs` SubscriptionPromotionSpec[] — Optional. The promotions applied on the line item. It can be: - an introductory pricing promotion. - a free trial promotion. This feature is not enabled. If used, the request will be rejected. When used as input in Create or Provision API, specify its resource name only.
      - `promotion` string — Required. Promotion resource name that identifies a promotion. The format is 'partners/{partner_id}/promotions/{promotion_id}'.
      - `introductoryPricingDetails` PromotionIntroductoryPricingDetails — The details of a introductory pricing promotion.
        - `introductoryPricingSpecs` PromotionIntroductoryPricingDetailsIntroductoryPricingSpec[] — Output only. Specifies the introductory pricing periods.
          - `regionCode` string — Output only. 2-letter ISO region code where the product is available in. Ex. "US".
          - `discountAmount` Amount — Describes the amount unit including the currency code.
            - `currencyCode` string — Required. Currency codes in accordance with [ISO-4217 Currency Codes] (https://en.wikipedia.org/wiki/ISO_4217). For example, USD.
            - `amountMicros` string, int64 — Required. Amount in micros (1_000_000 micros = 1 currency unit)
          - `discountRatioMicros` string, int64 — Output only. The discount percentage in micros. For example, 50,000 represents 5%.
          - `recurrenceCount` integer — Output only. The duration of an introductory offer in billing cycles.
      - `type` 'PROMOTION_TYPE_UNSPECIFIED' | 'PROMOTION_TYPE_FREE_TRIAL' | 'PROMOTION_TYPE_INTRODUCTORY_PRICING' — Output only. The type of the promotion for the spec.
      - `freeTrialDuration` Duration — Describes the length of a period of a time.
        - `unit` 'UNIT_UNSPECIFIED' | 'MONTH' | 'DAY' | 'HOUR' — The unit used for the duration
        - `count` integer — number of duration units to be included.
    - `name` string — Identifier. Resource name of the line item. Format: partners/{partner}/subscriptions/{subscription}/lineItems/{lineItem}
    - `bundleDetails` SubscriptionLineItemBundleDetails — The bundle details for a line item corresponding to a hard bundle.
      - `bundleElementDetails` SubscriptionLineItemBundleDetailsBundleElementDetails[] — Output only. The details for each element in the hard bundle.
        - `product` string — Output only. Product resource name that identifies the bundle element. The format is 'partners/{partner_id}/products/{product_id}'.
        - `userAccountLinkedTime` string, google-datetime — Output only. The time when this product is linked to an end user.
  - `freeTrialEndTime` string, google-datetime — Output only. End of the free trial period, in ISO 8061 format. For example, "2019-08-31T17:28:54.564Z". It will be set the same as createTime if no free trial promotion is specified.

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/paymentsresellersubscription.md) · [All operations](https://skmtc.net/google/apis/paymentsresellersubscription/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/paymentsresellersubscription/versions/c3d2f15ca50d/schema)
