Skip to main content
{
	"adaptive_pricing_enabled": true,
	"billing_period": 42,
	"collect_tax": true,
	"company": {
		"id": "biz_xxxxxxxxxxxxxx",
		"title": "Pickaxe"
	},
	"created_at": "2023-12-01T05:00:00.401Z",
	"currency": "usd",
	"custom_fields": [
		{
			"field_type": "text",
			"id": "field_xxxxxxxxxxxx",
			"name": "<string>",
			"order": 42,
			"placeholder": "<string>",
			"required": true
		}
	],
	"description": "Monthly access to all premium analytics dashboards and data exports.",
	"expiration_days": 42,
	"id": "plan_xxxxxxxxxxxxx",
	"initial_price": 6.9,
	"internal_notes": "Black Friday 2024 promo plan - expires Dec 1",
	"invoice": {
		"id": "inv_xxxxxxxxxxxxxx"
	},
	"member_count": 42,
	"metadata": {},
	"payment_method_configuration": {
		"disabled": ["acss_debit"],
		"enabled": ["acss_debit"],
		"include_platform_defaults": true
	},
	"plan_type": "renewal",
	"product": {
		"id": "prod_xxxxxxxxxxxxx",
		"title": "Pickaxe Analytics"
	},
	"purchase_url": "https://whop.com/pickaxe-analytics/checkout/plan_abc123",
	"release_method": "buy_now",
	"renewal_price": 6.9,
	"split_pay_required_payments": 42,
	"stock": 42,
	"tax_type": "inclusive",
	"three_ds_level": "mandate_challenge",
	"title": "Pro Monthly",
	"trial_period_days": 42,
	"unlimited_stock": true,
	"updated_at": "2023-12-01T05:00:00.401Z",
	"visibility": "visible"
}
adaptive_pricing_enabled
boolean
required
Whether the creator has turned on adaptive pricing for this plan. Raw setting — does not check processor compatibility or feature flags.
billing_period
integer | null
required
The number of days between each recurring charge. Null for one-time plans. For example, 30 for monthly or 365 for annual billing.Example: 42
collect_tax
boolean
required
Whether tax is collected on purchases of this plan, based on the company’s tax configuration.
company
object | null
required
The company that sells this plan. Null for standalone invoice plans not linked to a company.
created_at
string<date-time>
required
The datetime the plan was created.Example: 2023-12-01T05:00:00.401Z
currency
Currencies
required
The currency used for all prices on this plan (e.g., ‘usd’, ‘eur’). All monetary amounts on the plan are denominated in this 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, bgn, idr, dop, php, try, krw, twd, vnd, pkr, clp, uyu, ars, zar, dzd, tnd, mad, kes, kwd, jod, all, xcd, amd, bsd, bhd, bob, bam, khr, crc, xof, egp, etb, gmd, ghs, gtq, gyd, ils, jmd, mop, mga, mur, mdl, mnt, nad, ngn, mkd, omr, pyg, pen, qar, rwf, sar, rsd, lkr, tzs, ttd, uzs, rub, btc, cny, usdt, kzt, awg, whop_usd, xau
custom_fields
array<object>
required
Custom input fields displayed on the checkout form that collect additional information from the buyer.
description
string | null
required
A text description of the plan visible to customers. Maximum 1000 characters. Null if no description is set.Example: Monthly access to all premium analytics dashboards and da…
expiration_days
integer | null
required
The number of days until the membership expires (for expiration-based plans). For example, 365 for a one-year access pass.Example: 42
id
string
required
The unique identifier for the plan.Example: plan_xxxxxxxxxxxxx
initial_price
number
required
The initial purchase price in the plan’s base_currency (e.g., 49.99 for $49.99). For one-time plans, this is the full price. For renewal plans, this is charged on top of the first renewal_price.Example: 6.9
internal_notes
string | null
required
Private notes visible only to the company owner and team members. Not shown to customers. Null if no notes have been added.Example: Black Friday 2024 promo plan - expires Dec 1
invoice
object | null
required
The invoice this plan was generated for. Null if the plan was not created for a specific invoice.
member_count
integer | null
required
The number of users who currently hold an active membership through this plan. Only visible to authorized team members.Example: 42
metadata
object | null
required
Custom key-value pairs stored on the plan. Included in webhook payloads for payment and membership events.
payment_method_configuration
object | null
required
The explicit payment method configuration specifying which payment methods are enabled or disabled for this plan. Null if the plan uses default settings.
plan_type
PlanTypes
required
The billing model for this plan: ‘renewal’ for recurring subscriptions or ‘one_time’ for single payments.Available options: renewal, one_time
product
object | null
required
The product that this plan belongs to. Null for standalone one-off purchases not linked to a product.
purchase_url
string
required
The full URL where customers can purchase this plan directly, bypassing the product page.Example: https://whop.com/pickaxe-analytics/checkout/plan_abc123
release_method
ReleaseMethod
required
The method used to sell this plan: ‘buy_now’ for immediate purchase or ‘waitlist’ for waitlist-based access.Available options: buy_now, waitlist
renewal_price
number
required
The recurring price charged every billing_period in the plan’s base_currency (e.g., 9.99 for $9.99/period). Zero for one-time plans.Example: 6.9
split_pay_required_payments
integer | null
required
The total number of installment payments required before the subscription pauses. Null if split pay is not configured. Must be greater than 1.Example: 42
stock
integer | null
required
The number of units available for purchase. Only visible to authorized team members. Null if the requester lacks permission.Example: 42
tax_type
TaxTypes
required
How tax is handled for this plan: ‘inclusive’ (tax included in price), ‘exclusive’ (tax added at checkout), or ‘unspecified’ (tax not configured).Available options: inclusive, exclusive, unspecified
three_ds_level
PlanThreeDsLevels | null
required
The 3D Secure behavior for this plan. Null means the plan inherits the account default.Available options: mandate_challenge, frictionless
title
string | null
required
The display name of the plan shown to customers on the product page and at checkout. Maximum 30 characters. Null if no title has been set.Example: Pro Monthly
trial_period_days
integer | null
required
The number of free trial days before the first charge on a renewal plan. Null if no trial is configured or the current user has already used a trial for this plan.Example: 42
unlimited_stock
boolean
required
When true, the plan has unlimited stock (stock field is ignored). When false, purchases are limited by the stock field.
updated_at
string<date-time>
required
The datetime the plan was last updated.Example: 2023-12-01T05:00:00.401Z
visibility
Visibility
required
Controls whether the plan is visible to customers. When set to ‘hidden’, the plan is only accessible via direct link.Available options: visible, hidden, archived, quick_link