# Switch product

By using this method, merchants can update the product in the active subscription with a new one. After the switch request is made, a callback confirms the update and includes the new subscription product. The updated settings take effect on the next billing date.


  The switch is subject to conditions related to currency and location compatibility between the current and new products.

Endpoint: POST /subscription/switch-subscription-product
Version: 1.0.0
Security: MerchantID

## Header parameters:

  - `merchant` (string, required)
    Unique public key provided upon registration and must be shared for identification purposes.
    Example: "api_pk_7b197...ba108f842"

  - `signature` (string, required)
    Request signature that allows verification of merchant authenticity on the payment gateway server.
    Example: "M2E3OTkyNzcz...xMmExODI4"

## Request fields (application/json):

  - `subscription_id` (string, required)
    Unique subscription identifier.
    Example: "83b19018-cbc4-45f0-899a-dda84fd2705e"

  - `new_product_id` (string, required)
    Unique product identifier to apply to the specified subscription.
    Example: "ac43b415-5522-4373-b026-a365462f9657"

## Response 200 fields (application/json):

  - `body` (object) — one of:
    - Success:
      - `status` (string)
        Product has been switched.
        Example: "ok"
    - Error:
      - `error` (object)
        Error object.
      - `error.code` (string, required)
        Error code that identifies the validation failure.


  This code is returned when the input data does not meet the expected criteria.
        Enum: "2.01"
      - `error.messages` (object, required)
        Contains field-specific error messages.


  Each key is a field name. Each value is an array of strings that describe validation issues.
        Example: {"subscription":["Validation error"]}

## Response 400 fields (application/json):

  - `error` (object, required)
    Error object.

  - `error.code` (string, required)
    Error code.
    Example: "2.01"

  - `error.message` (string, required)
    Error message.
    Example: "Validation error"

  - `error.constraints` (object)
    Map of constraints.

## Response 401 fields (application/json):

  - `error` (object, required)
    Error object.

  - `error.code` (string, required)
    Error code indicating the specific authorization failure.
    Example: "1.01"

  - `error.message` (string, required)
    Descriptive message providing more details about the authorization failure.
    Example: "Authorization failed"

## Response 403 fields (application/json):

  - `error` (object, required)
    Error object.

  - `error.code` (string, required)
    Error code indicating that access to the service is denied.
    Example: "1.02"

  - `error.message` (string, required)
    Message informing that the service is not allowed for the account.
    Example: "Access denied"

## Response 404 fields (application/json):

  - `error` (object, required)
    Error object.

  - `error.code` (string, required)
    Error code.
    Example: "2.01"

  - `error.message` (string, required)
    Error message.
    Example: "{entityName} not found with id: {entityId}"


