---
title: "Create a Plan"
method: POST
path: "/v1/subscriptions/plans"
---

# Create a Plan

`POST /v1/subscriptions/plans`

Use secret API key to create a Plan.

## Request body

- object
  - `data` object
    - `attributes` object
      - `plan_type` string — Determines the type of Plan. Possibles values are `scheduled` and `on_demand`. If no value is set, default value is `scheduled`. If value is set to `scheduled`, it requires you to set the `interval` and `interval_count` attribute to determine the schedule of the payments. If the value is set to `on_demand`, the `interval`, `interval_count`, and `cycle_count` attributes are optional.
      - `amount` integer, required — Amount to be collected from the customer. A positive integer with a minimum amount of 100. 100 is the smallest unit in cents. If you want to receive an amount of 1.00, the value that you should pass is 100. If you want to receive an amount of 1500.50, the value that you should pass is 150050.
      - `currency` string, required — Three-letter ISO currency code, in uppercase. PHP is the only supported currency as of the moment.
      - `cycle_count` integer — Defines how long the subscription will be active. The count includes the first payment to activate the subscription. If the value is not provided, the subscription will run indefinitely. Minimum value is 2. Value will be ignored if plan type is `on_demand`
      - `description` string, required — Description of the Plan.
      - `interval` string, required — Defines how frequent the customer will be billed. Possible values are weekly, monthly, or yearly. Optional if plan type is `on_demand`. Value will also be ignored if plan type is `on_demand`
      - `interval_count` integer, required — The number of intervals between the subscription’s next billing schedule. Possible values are **1** to **10**. <br/> Example: Monthly: Set the `interval` to monthly and the `interval_count` to 1. Quarterly: Set the `interval` to monthly and the `interval_count` to 3. Optional if plan type is `on_demand`. Value will also be ignored if plan type is `on_demand`
      - `metadata` object — Object of a key value pair for storing other plan details.
      - `name` string, required — Name of the Plan.

## Response `200`

200

- object

## Other responses

- `400` — 400

---

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