---
title: "Update a subscription"
method: POST
path: "/subscriptions"
tags: ["Subscriptions"]
---

# Update a subscription

`POST /subscriptions`

Updates active subscriptions, including product changes, discounts, add-ons, renewal settings, and more.

## Request body

- object
  - `subscriptions` object[], required — List of subscription changes to apply.
    - `subscription` string, required — Unique identifier for the subscription.
    - `product` string, required — Catalog product path of the new subscription product.
    - `quantity` integer, required — Quantity of the product or add-on.
    - `next` string, date-time — The next charge date for the subscription (UTC format or epoch time in milliseconds).
    - `end` string, date — The end date for the subscription (YYYY-MM-DD format) or 0 for indefinite renewal.
    - `isEndDateSet` boolean — Indicates whether the end date is explicitly set.
    - `coupons` string[] — Array of coupon codes applied to the subscription. Pass an empty array to remove coupons.
    - `addons` object[] — List of add-on products to add, update, or remove for the subscription.
      - `product` string — Add-on product path.
      - `quantity` integer — Quantity of the add-on product. Set to 0 to remove the add-on.
      - `pricing` object — Pricing details for the add-on.
        - `price` object — Price for the add-on in various currencies.
          - `USD` number — Price in USD.
    - `pricing` object — Pricing and discount details for the subscription.
      - `price` object — Base price for the subscription in various currencies.
        - `USD` number — Price in USD.
      - `discount` DiscountSubscription — Discount applied to the subscription.
        - `type` 'amount' | 'percent' — Type of discount (amount or percent).
        - `amount` number — Fixed discount amount.
        - `percentage` number — Percentage discount.
        - `duration` string — Duration of the discount (number of billing periods or "all" for indefinite).
    - `manualRenew` boolean — If true, changes the subscription to manual renewal.
    - `taxExemptId` string — Tax exemption ID to add or update for the subscription.
    - `deactivation` string, nullable — Set to null to resume a canceled subscription.
    - `prorate` boolean — If true, calculates prorated charges or credits based on changes made. Any refunds are applied as a credit to the remaining period. The `prorate` parameter is not supported when updating the next charge date.
    - `preview` boolean — If true, returns a preview of prorated charges and credits without committing the changes.
    - `remainingPeriods` integer, nullable — Number of remaining billing periods for the subscription. Set to null for indefinite renewal.

## Response `200`

OK

- UpdateSubscriptionResponse — Comprehensive schema for the response returned by the "Update a Subscription" endpoint.
  - `subscriptions` object[] — List of subscription updates.
    - `subscription` string — The unique identifier of the subscription.
    - `action` string — The action performed on the subscription.
    - `result` string — The result of the action (e.g., success or error).
    - `prorated` boolean — Indicates whether proration was applied to the subscription update.
    - `proration` object — Details of proration calculations, if applicable.
      - `productPath` string — The product path for the subscription item.
      - `currency` string — The currency used for the proration calculations.
      - `nextPeriodStartDate` string, date-time — The start date of the next billing period.
      - `nextPeriodEndDate` string, date-time — The end date of the next billing period.
      - `previousRemainingDays` number — The remaining days in the previous billing period before the change.
      - `periodPastDays` number — The days elapsed in the current billing period.
      - `nextRemainingDays` number — The remaining days in the new billing period after the change.
      - `regularPeriod` object — Details about the regular billing period.
        - `unit` string — Time unit for the billing period.
        - `unitCount` integer — Number of units in the billing period.
      - `nextPricePerPeriod` object — Pricing details for the next billing period.
        - `amount` number — The price amount for the next period.
        - `period` object — The period details for the price.
          - `count` integer — The number of periods.
          - `unit` string — The unit of time for the period.
      - `previousPricePerPeriod` object — Pricing details for the previous billing period.
        - `amount` number — The price amount for the previous period.
        - `period` object — The period details for the price.
          - `count` integer — The number of periods.
          - `unit` string — The unit of time for the period.
      - `utilizedAmount` number — The prorated amount for the used portion of the subscription.
      - `creditAmount` number — The credit amount applied for unused portions.
      - `proratedAmount` number — The prorated price for the new item.
      - `chargeAmount` number — The charge applied after proration.
      - `prorateAdjustment` number — The prorated price for the unused portion of the subscription.
      - `refundAmount` number — The refunded amount for unused portions.

## Other responses

- `401` — Authentication credentials are missing or invalid.
- `429` — Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header.
- `500` — Internal server error.

---

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