Skip to main content
This API only works if the subscription is published to RETAIL. If using a development sandbox, first publish the subscription to either a private flight group or as hidden in RETAIL, before calling this API. If the subscription isn’t published to RETAIL, the response is an HTTP 400 error with a message stating “Requested catalog product data wasn’t found.”
This endpoint is used to change the billing state of the user’s subscription product in the Microsoft Store. You can cancel, extend, refund, or disable automatic renewal for a subscription. The Microsoft.StoreServices library (GitHub) provides the functionality of this method through the StoreServicesClient.RecurrenceChangeAsync API.

Prerequisites

Review Prerequisites for service-to-service APIs. This API only supports the Microsoft Entra ID auth type. If product configuration isn’t published in Partner Center, can succeed but return no results.

Request

Request syntax

Request header

Request parameters

Request body

Change type operations

Request example

The following example demonstrates how to use this method to extend the subscription period by five days. Replace the b2bKey value with the User Store ID key that represents the identity of the user whose subscription you want to change.

Response

This method returns a JSON response body describing the updated subscription add-on, including modified fields.
This method has the same RETAIL publishing requirement described at the beginning of this article.

Response body

The RecurrenceItem object contains the following parameters.

Recurrence states

  • Inactive/Canceled/Failed are terminal states. When a subscription enters one of these states, the user must repurchase the subscription to activate it again. The user isn’t entitled to use the services in these states.
  • When a subscription is Canceled, the expirationTime is updated with the date and time of the cancellation.
  • The ID of the subscription remains the same during its entire lifetime. It doesn’t change if the auto-renew option is turned on or off. If a user repurchases a subscription after reaching a terminal state, a new subscription ID will be created.
  • The ID of a subscription should be used to execute any operation on an individual subscription.
  • When a user repurchases a subscription after canceling or discontinuing it, if you query the results for the user you’ll get two entries: one with the old subscription ID in a terminal state, and one with the new subscription ID in an active state.
  • It’s always a good practice to check both recurrenceState and expirationTime, since updates to recurrenceState can be delayed a few minutes (or occasionally hours).

Response example

purchase.mp.microsoft.com/v8.0/b2b/recurrences/query Manage products from your services Managing refunds and chargebacks from your service Authenticating your service with the Microsoft Store APIs Using publisherQuery (Collections v9) to query a user’s products and entitlements
Last modified on October 20, 2026