---
title: "Create a subscription product"
method: POST
path: "/v1/subscription-products"
tags: ["SubscriptionProduct"]
---

# Create a subscription product

`POST /v1/subscription-products`

## Request

- Base URL: `https://api.payretailers.com`
- URL: `https://api.payretailers.com/v1/subscription-products`
- Auth: HTTP basic

Creates a reusable subscription product template that can be used to create multiple subscriptions with the same configuration.

## Request body

- SubscriptionProductRequest
  - `channel` string, nullable: Payment channel/method
  - `authorizationType` string, nullable: Authorization type
  - `frequency` string, nullable: Payment frequency
  - `retryPolicy` RetryPolicy, required
    - `type` string, required: Retry policy type. Valid values: PIX_SPECIFIC (auto-configured for PIX), FIXED_RETRY (requires maxRetries and retryIntervalDays), NOT_ALLOWED (no retries).
    - `maxRetries` integer, nullable: Maximum number of retry attempts. Required when type is FIXED_RETRY.
    - `retryIntervalDays` integer, nullable: Days between retry attempts. Required when type is FIXED_RETRY.
  - `amount` AmountModel, required
    - `type` string, nullable: Amount type. Valid values: FIXED (requires fixedValue), VARIABLE (requires minValue and maxValue).
    - `fixedValue` integer, nullable: Fixed payment amount in cents. Required when type is FIXED.
    - `minValue` integer, nullable: Minimum payment amount in cents. Required when type is VARIABLE.
    - `maxValue` integer, nullable: Maximum payment amount in cents. Required when type is VARIABLE.
    - `currency` string, required: ISO currency code (3 characters)
  - `notificationUrl` string, uri, required: Webhook URL for receiving events
  - `country` string, required: ISO country code
  - `automaticScheduleAllowed` boolean
  - `description` string, nullable
  - `language` string, required: ISO language code
  - `internalReferenceId` string, nullable
  - `metadata` object, nullable

## Response `201`

Product created successfully

- SubscriptionProductResponseWrapper
  - `data` object, nullable
    - `subscriptionProductId` string, uuid
    - `shopId` integer
    - `channel` string
    - `authorizationType` string
    - `frequency` string
    - `retryPolicy` RetryPolicy
      - `type` string, required: Retry policy type. Valid values: PIX_SPECIFIC (auto-configured for PIX), FIXED_RETRY (requires maxRetries and retryIntervalDays), NOT_ALLOWED (no retries).
      - `maxRetries` integer, nullable: Maximum number of retry attempts. Required when type is FIXED_RETRY.
      - `retryIntervalDays` integer, nullable: Days between retry attempts. Required when type is FIXED_RETRY.
    - `amount` AmountModel
      - `type` string, nullable: Amount type. Valid values: FIXED (requires fixedValue), VARIABLE (requires minValue and maxValue).
      - `fixedValue` integer, nullable: Fixed payment amount in cents. Required when type is FIXED.
      - `minValue` integer, nullable: Minimum payment amount in cents. Required when type is VARIABLE.
      - `maxValue` integer, nullable: Maximum payment amount in cents. Required when type is VARIABLE.
      - `currency` string, required: ISO currency code (3 characters)
    - `automaticScheduleAllowed` boolean
    - `notificationUrl` string, uri
    - `country` string
    - `language` string
    - `description` string, nullable
    - `internalReferenceId` string, nullable
    - `isActive` boolean
    - `metadata` object, nullable
  - `errors` ApiError[]
    - `errorCode` string
    - `errorMessage` string
  - `status` boolean: Indicates if the request was successful

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/payretailers/apis/subscriptions-module-api.md) - [All operations](https://skmtc.dev/payretailers/apis/subscriptions-module-api/llms.txt) - [OpenAPI document](https://skmtc.dev/payretailers/apis/subscriptions-module-api/revisions/dd2464c871f8?raw)
