---
title: "Create Plan"
method: POST
path: "/subscription/api/v1/subscription-plans"
tags: ["Subscription Plans"]
---

# Create Plan

`POST /subscription/api/v1/subscription-plans`

This endpoint creates a new subscription plan.

**Note:**

- Save the generated `planCode` after creating a plan. This value is required when creating subscriptions.

## Request body

- CreateSubscriptionPlanRequest
  - `name` string, required — The name of the subscription plan.
  - `description` string — A brief overview or summary explaining what the plan offer entails.
  - `amount` number, required — The amount to charge on each billing cycle. Must be greater than or equal to zero.
  - `currency` string, required — The 3-letter ISO currency code for the billing.
  - `interval` string, required — Billing frequency. Supported values are **DAILY**, **WEEKLY**, **MONTHLY**, **QUARTERLY**, and **ANNUAL**.
  - `trialPeriodDays` integer, required — Number of free trial days before billing begins. Defaults to 0.
  - `billingLimit` integer — The maximum number of billing cycles. Leave empty for unlimited billing.

## Response `200`

Funding Successful

- CreateSubscriptionPlanResponse
  - `success` boolean — Indicates if the request was successful.
  - `message` string — Descriptive message regarding the plan creation operation.
  - `data` object — The payload containing the details of the created plan.
    - `id` integer — Unique internal identifier for the plan.
    - `name` string — The name of the subscription plan.
    - `description` string — A brief overview or summary explaining what the plan offer entails.
    - `amount` number — The price of the plan.
    - `currency` string — The 3-letter ISO currency code for the billing.
    - `interval` string — The frequency of the billing cycle (e.g., MONTHLY).
    - `intervalCount` integer — The number of intervals between subscription billings.
    - `trialPeriodDays` integer — The number of free trial days given to subscribers before the first charge.
    - `billingLimit` integer — The maximum number of times a subscriber can be charged on this plan.
    - `status` string — The operational status of the plan.
    - `planCode` string — The unique, system-generated code used to identify this plan across endpoints.
    - `billingDaysOfWeek` string[], nullable — Specific days of the week scheduled for billing, if applicable.
    - `metadata` object, nullable — Key-value pairs for storing additional custom information.
    - `createdAt` string, date-time — Timestamp indicating exactly when the plan was created.
    - `updatedAt` string, date-time — Timestamp indicating when the plan record was last updated.

## Other responses

- `400` — Invalid request

---

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