---
title: "Create Price"
method: POST
path: "/products/variants/{variant_id}/prices"
tags: ["Products::Price"]
---

# Create Price

`POST /products/variants/{variant_id}/prices`

## Request

- Base URL: `https://myworkspace.myclickfunnels.com/api/v2`
- URL: `https://myworkspace.myclickfunnels.com/api/v2/products/variants/{variant_id}/prices`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://accounts.myclickfunnels.com/oauth/authorize`
    - Token URL: `https://accounts.myclickfunnels.com/oauth/token`
- TypeScript: <https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/docs/products/variants/:variant_id/prices/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new price for a given variant.
Note that you must set a `variant_id` in the path.

## Path parameters

- `variant_id` string, required

## Request body

- object
  - `products_price` ProductsPriceParameters: Prices
    - `name` string, nullable: Name
    - `amount` string, required: Amount, as a decimal string. Omitting it does not fail — it silently creates a free price ('0.00') — so always send it.
    - `cost` string, nullable: Cost
    - `currency` string: Currency. Ignored on write — a price always takes its workspace's currency, so sending a different one has no effect.
    - `duration` integer, nullable: Amount of payments. Required when payment_type is payment_plan; ignored for one_time and subscription.
    - `interval` 'days' | 'weeks' | 'months' | 'quarters' | 'years' | 'null', nullable: Billing period unit — note the values are plural ('months', not 'month'). Required when payment_type is subscription or payment_plan; ignored for one_time.
    - `trial_interval` 'days' | 'weeks' | 'months' | 'quarters' | 'years' | 'null', nullable: Trial period unit — same plural values as interval. An active recurring trial needs BOTH trial_interval and a positive trial_duration. Send both together: trial_duration alone is stored but inactive until trial_interval is added later, while trial_interval alone is cleared. Trial fields are cleared on a one_time price.
    - `trial_duration` integer, nullable: Length of the trial, in trial_interval units. Send a positive value together with trial_interval to create an active trial. Sent alone, it is stored but remains inactive until trial_interval is added later.
    - `trial_amount` string, nullable: Amount charged for the trial. Leave at '0.00' for a free trial, or set it above 0 for a paid one. Only applies when trial_interval and trial_duration are both set.
    - `setup_amount` string, nullable: Setup amount
    - `self_cancel` boolean, nullable: Customer can cancel
    - `self_upgrade` boolean, nullable: Legacy setting with no effect: no checkout, customer portal or API plan change reads it. `GET /products/prices/{price_id}/change_options` lists the upgrades and downgrades the API allows from this price.
    - `self_downgrade` boolean, nullable: Legacy setting with no effect: no checkout, customer portal or API plan change reads it. `GET /products/prices/{price_id}/change_options` lists the upgrades and downgrades the API allows from this price.
    - `self_reactivate` boolean, nullable: Customer can reactivate
    - `interval_count` integer, nullable: How many intervals between charges — interval 'months' with interval_count 3 bills every 3 months. Required when payment_type is subscription or payment_plan.
    - `payment_type` 'one_time' | 'subscription' | 'payment_plan' | 'null', nullable: Defaults to 'one_time' if left blank
    - `visible` boolean, nullable: Visible
    - `compare_at_amount` string, nullable: Compare at amount
    - `key` string, nullable: Key
    - `archived` boolean, nullable: Archived

## Response `201`

Created

- ProductsPriceAttributes: Prices
  - `id` integer: ID
  - `public_id` string, nullable: Price public ID
  - `variant_id` integer, nullable: Variant
  - `name` string, nullable: Name
  - `amount` string: Amount
  - `cost` string, nullable: Cost
  - `currency` string: Currency
  - `duration` integer, nullable: Amount of payments
  - `interval` string, nullable: Interval
  - `trial_interval` string, nullable: Trial interval
  - `trial_duration` integer, nullable: Trial duration
  - `trial_amount` string: Trial Amount
  - `setup_amount` string, nullable: Setup amount
  - `self_cancel` boolean, nullable: Customer can cancel
  - `self_upgrade` boolean, nullable: Legacy setting with no effect: no checkout, customer portal or API plan change reads it. `GET /products/prices/{price_id}/change_options` lists the upgrades and downgrades the API allows from this price.
  - `self_downgrade` boolean, nullable: Legacy setting with no effect: no checkout, customer portal or API plan change reads it. `GET /products/prices/{price_id}/change_options` lists the upgrades and downgrades the API allows from this price.
  - `self_reactivate` boolean, nullable: Customer can reactivate
  - `interval_count` integer, nullable: Interval count
  - `payment_type` 'one_time' | 'subscription' | 'payment_plan' | 'null', nullable: Defaults to 'one_time' if left blank
  - `visible` boolean, nullable: Visible
  - `compare_at_amount` string, nullable: Compare at amount
  - `key` string, nullable: Key
  - `archived` boolean, nullable: Archived
  - `created_at` string, date-time, nullable: Added
  - `updated_at` string, date-time, nullable: Updated

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `422`: Unprocessable Entity - validation failed

## Changes

- **2026-11-03** `511d88b30aea`: 13 breaking, 1 warning, 30 info
  - request property `products_price/interval` was restricted to a list of enum values
  - request property `products_price/trial_interval` was restricted to a list of enum values
  - the `products_price/duration` request property type changed from `string` to `integer, null`
  - the `products_price/interval_count` request property type changed from `string` to `integer, null`
  - …40 more

[Operation history](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/changes/products/variants/:variant_id/prices/post.md)

---

[API](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api.md) - [All operations](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myclickfunnels/apis/clickfunnels-api/revisions/511d88b30aea?raw)
