POST
/
v2
/
plans
curl --request POST \
  --url https://api.whop.com/api/v2/plans \
  --header 'Content-Type: application/json' \
  --data '{
  "product_id": "<string>",
  "access_pass_id": "<string>",
  "plan_type": "renewal",
  "allow_multiple_quantity": true,
  "base_currency": "usd",
  "billing_period": 123,
  "card_payments": true,
  "coinbase_commerce_accepted": true,
  "custom_fields": [
    "<string>"
  ],
  "expiration_days": 123,
  "grace_period_days": 123,
  "initial_price": 123,
  "internal_notes": "<string>",
  "one_per_user": true,
  "pegged_currencies": [
    "<string>"
  ],
  "refillable": true,
  "release_method": "buy_now",
  "release_method_settings": {},
  "renewal_price": 123,
  "requirements": {},
  "short_link": "<string>",
  "stock": 123,
  "trial_period_days": 123,
  "unlimited_stock": true,
  "visibility": "visible",
  "metadata": {}
}'
{
  "id": "<string>",
  "product": "<string>",
  "plan_type": "<string>",
  "release_method": "<string>",
  "visibility": "visible",
  "billing_period": 123,
  "internal_notes": "<string>",
  "metadata": {},
  "direct_link": "<string>",
  "renewal_price": 123,
  "initial_price": 123,
  "base_currency": "<string>",
  "requirements": {},
  "release_method_settings": {},
  "accepted_payment_methods": [
    [
      "<any>"
    ]
  ],
  "stock": 123,
  "unlimited_stock": true,
  "created_at": 123,
  "access_pass": "<string>",
  "card_payments": true
}

Headers

Authorization
string

Your API key, which can be found on the Whop Business Dashboard. You must prepend your key with the word 'Bearer', which will look like Bearer ***************************

Query Parameters

expand
enum<string>[]

Whether or not to expand the Product on the returned Plan(s). Pass an array with each object(s) you want to expand, e.g. [product]

Available options:
product

Body

application/json
product_id
string

The Plan's Product ID, which will look like prod_************* or pass_*************

access_pass_id
string

Access Pass has been deprecated for Product. Please use product instead and do not use access_pass.

plan_type
enum<string>
default: one_time

Whether the Plan is a renewal or one-time purchase

Available options:
renewal,
one_time
allow_multiple_quantity
boolean

Marks whether customers can purchase multiple quantity of the Plan.

base_currency
enum<string>
default: usd

The base currency

Available options:
usd,
sgd,
inr,
aud,
brl,
cad,
dkk,
eur,
nok,
gbp,
sek,
chf,
hkd,
huf,
jpy,
mxn,
myr,
pln,
czk,
nzd,
aed,
eth,
ape,
cop,
ron,
thb
billing_period
integer

How often a user will get charged for their membership (if it is a renewal plan), in number of days

card_payments
boolean

Deprecated. Please use accepted_payment_methods instead.

coinbase_commerce_accepted
boolean

Whether or not Coinbase Commerce payments are accepted.

custom_fields
string[]

An array of custom field objects.

expiration_days
integer

The interval at which the Plan charges (expiration plans).

grace_period_days
integer

The time period (in days) after a Membership expires where the customer can still top-up.

initial_price
number

The price to be initially charged when a user first purchases the Plan

internal_notes
string

A nickname for the Plan set by the company and not visible to the customer

one_per_user
boolean

Marks whether or not a Plan can be purchased multiple times by a user. Used most likely for free trial plans. Default is false

pegged_currencies
string[]

An array of currencies that will be pegged to the base currency

refillable
boolean

Marks whether an expiration Plan can/can't be topped-up.

release_method
enum<string>

The method the customer will use to gain access to this Plan's Product

Available options:
buy_now,
waitlist,
raffle
release_method_settings
object

Configurable settings on how this Plan is released.

renewal_price
number

The price to be charged for each successive billing period

requirements
object

Represents the different restrictions (if any) in place for purchasing the Plan

short_link
string

The short link identifier for the Plan.

stock
integer

The amount of stock left in the Plan

trial_period_days
integer

The number of free trial days added before a renewal Plan.

unlimited_stock
boolean

Whether or not the Plan offers unlimited stock

visibility
enum<string>

The level of visibility of the Plan

Available options:
visible,
hidden,
archived,
quick_link
metadata
object

A key value pair of metadata. Whatever you put on here will be assigned to any memberships that are created on this plan

Response

201 - application/json
id
string

The ID of the Plan, which will look like plan_*************

product
string

The Product this Plan is tied to. By default this will just be the ID of the Product, but you can expand it to get more information about the Product by passing [product] in the expand parameter.

plan_type
string

Whether the Plan is a renewal or one-time purchase

release_method
string

The method the customer will use to gain access to this Plan's Product

visibility
enum<string>

The level of visibility of the Plan

Available options:
visible,
hidden,
archived,
quick_link
billing_period
integer

How often a user will get charged for their membership (if it is a renewal plan), in number of days

internal_notes
string

A nickname for the Plan set by the company and not visible to the customer

metadata
object

A polymorphic object containing information that can be user defined

direct_link
string

A URL that targets a customer on this specific Plan

renewal_price
number

The price to be charged for each successive billing period

initial_price
number

The price to be initially charged when a user first purchases the Plan

base_currency
string

The base currency

requirements
object

Represents the different restrictions (if any) in place for purchasing the Plan

release_method_settings
object

Configurable settings on how this Plan is released.

accepted_payment_methods
array

An array of payment methods that are accepted for this Plan

stock
integer

The amount of stock left in the Plan

unlimited_stock
boolean

Whether or not the Plan offers unlimited stock

created_at
integer

The time at which the Plan was created. Measured in seconds since the Unix epoch.

access_pass
string

Access Pass has been deprecated for Product. Please use product instead and do not use access_pass.

card_payments
boolean

Deprecated. Please use accepted_payment_methods instead.