> ## Documentation Index
> Fetch the complete documentation index at: https://docs.whop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Plan

<ResponseExample>
  ```json Example theme={null}
  {
  	"account": {},
  	"adaptive_pricing_enabled": true,
  	"billing_period": 0,
  	"collect_tax": true,
  	"created_at": "<string>",
  	"currency": "usd",
  	"custom_fields": [
  		{
  			"field_type": "text",
  			"id": "<string>",
  			"name": "<string>",
  			"order": 0,
  			"placeholder": "<string>",
  			"required": true
  		}
  	],
  	"description": "<string>",
  	"expiration_days": 0,
  	"id": "<string>",
  	"initial_price": 0,
  	"internal_notes": "<string>",
  	"invoice": {},
  	"member_count": 0,
  	"metadata": {},
  	"payment_method_configuration": {},
  	"plan_type": "renewal",
  	"product": {},
  	"purchase_url": "<string>",
  	"release_method": "buy_now",
  	"renewal_price": 0,
  	"split_pay_required_payments": 0,
  	"stock": 0,
  	"tax_type": "inclusive",
  	"three_ds_level": "mandate_challenge",
  	"title": "<string>",
  	"trial_period_days": 0,
  	"unlimited_stock": true,
  	"updated_at": "<string>",
  	"visibility": "visible"
  }
  ```
</ResponseExample>

<ResponseField name="account" type="object | null" required>
  Account that sells this plan; `null` for standalone invoice plans.
</ResponseField>

<ResponseField name="adaptive_pricing_enabled" type="boolean" required>
  Whether this plan accepts local currency payments via adaptive pricing.
</ResponseField>

<ResponseField name="billing_period" type="number | null" required>
  Recurring billing interval in days, such as 30 for monthly or 365 for annual.
  `null` for one-time plans.
</ResponseField>

<ResponseField name="collect_tax" type="boolean" required>
  Whether tax is collected on purchases of this plan.
</ResponseField>

<ResponseField name="created_at" type="string" required>
  When the plan was created, as an ISO 8601 timestamp.
</ResponseField>

<ResponseField name="currency" type="string" required>
  Three-letter ISO currency code for this plan's prices.

  Example: `usd`
</ResponseField>

<ResponseField name="custom_fields" type="array<PlanCustomField>" required />

<ResponseField name="description" type="string | null" required>
  Customer-visible plan description.
</ResponseField>

<ResponseField name="expiration_days" type="number | null" required>
  Access duration in days for expiration-based plans.
</ResponseField>

<ResponseField name="id" type="string" required>
  Plan ID, prefixed `plan_`.
</ResponseField>

<ResponseField name="initial_price" type="number" required>
  Initial purchase price in plan currency.
</ResponseField>

<ResponseField name="internal_notes" type="string | null" required>
  Private notes visible only to authorized team members.
</ResponseField>

<ResponseField name="invoice" type="object | null" required>
  Invoice this plan was generated for; `null` unless created for an invoice.
</ResponseField>

<ResponseField name="member_count" type="number | null" required>
  Active memberships through this plan, when visible to the requester.
</ResponseField>

<ResponseField name="metadata" type="object | null" required>
  Custom key-value pairs stored on the plan.
</ResponseField>

<ResponseField name="payment_method_configuration" type="object | null" required>
  Payment method configuration (`enabled`, `disabled`,
  `include_platform_defaults`); `null` when plan uses default settings.
</ResponseField>

<ResponseField name="plan_type" type="string" required>
  Billing model for this plan: `renewal` (recurring) or `one_time` (single payment).

  Example: `renewal`
</ResponseField>

<ResponseField name="product" type="object | null" required>
  Product this plan belongs to; `null` for standalone plans.
</ResponseField>

<ResponseField name="purchase_url" type="string" required>
  URL where customers can purchase this plan directly.
</ResponseField>

<ResponseField name="release_method" type="string" required>
  Sales method for this plan, such as `buy_now` or `waitlist`.

  Example: `buy_now`
</ResponseField>

<ResponseField name="renewal_price" type="number" required>
  Recurring price charged every billing period.
</ResponseField>

<ResponseField name="split_pay_required_payments" type="number | null" required>
  Installment payments required before the subscription pauses.
</ResponseField>

<ResponseField name="stock" type="number | null" required>
  Units available for purchase, when visible to the requester.
</ResponseField>

<ResponseField name="tax_type" type="string" required>
  How tax is handled for this plan.

  Example: `inclusive`
</ResponseField>

<ResponseField name="three_ds_level" type="string | null" required>
  3D Secure behavior for this plan; `null` inherits account default.

  Example: `mandate_challenge`
</ResponseField>

<ResponseField name="title" type="string | null" required>
  Plan display name shown to customers.
</ResponseField>

<ResponseField name="trial_period_days" type="number | null" required>
  Free trial days before the first renewal charge. `null` if no trial is
  configured or the user has already used a trial for this plan.
</ResponseField>

<ResponseField name="unlimited_stock" type="boolean" required>
  Whether the plan has unlimited stock.
</ResponseField>

<ResponseField name="updated_at" type="string" required>
  When the plan was last updated, as an ISO 8601 timestamp.
</ResponseField>

<ResponseField name="visibility" type="string" required>
  Whether the plan is visible to customers or hidden from public view.

  Example: `visible`
</ResponseField>
