> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# Resource: Plan Benefits

# Type: Plan Benefit Object

# Link: https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/plan-benefits/plan-benefit-object.md

## Description: A plan benefit pairs a pricing plan with the benefit that grants access to a specific item, such as a class or a session.

The same plan is returned once for every benefit that covers the item, so a plan can appear more than once with
different benefit details.

## Schema:

```json
 Type: Plan Benefit Object | type: PlanBenefit
 Description: A plan benefit pairs a pricing plan with the benefit that grants access to a specific item, such as a class or a session.

The same plan is returned once for every benefit that covers the item, so a plan can appear more than once with
different benefit details.
       - name: planInfo  | type: PlanInfo | description: Pricing plan that includes the benefit.
           - name: plan  | type: Plan | description: Pricing plan, containing only the variants available for purchase.  Prices reflect any pricing overrides active for the current context, so they may differ from the same plan returned by the Pricing Plans API.
               - name: id  | type: string | description: Plan ID.
               - name: revision  | type: string | description: Revision number, which increments by 1 each time the plan is updated.
               - name: createdDate  | type: string | description: Date and time the plan was created.
               - name: updatedDate  | type: string | description: Date and time the plan was last updated.
               - name: name  | type: string | description: Plan name displayed to customers.
               - name: description  | type: string | description: Plan description that explains what customers get with this plan.
               - name: image  | type: Image | description: Plan image displayed during checkout and on the site's **Plans & Pricing** page.
               - name: slug  | type: string | description: Unique identifier for this plan within the Wix site. If not provided, generated automatically from the plan name.
               - name: termsAndConditions  | type: string | description: Terms and conditions text that customers must agree to when purchasing this plan.
               - name: maxPurchasesPerBuyer  | type: number | description: Deprecated. Use `purchase_limits` with `PER_MEMBER_LIFETIME` type instead. Maximum number of times the same customer can purchase this plan. Use `0` for unlimited purchases or `1` to limit to one purchase per customer.
               - name: pricingVariants  | type: Array<PricingVariant> | description: Pricing variants that define different billing and pricing options for this plan. Currently limited to 1 variant per plan.
               - name: perks  | type: Array<Perk> | description: List of text snippets describing what the plan offers. For display purposes only.
               - name: visibility  | type: string | description: Plan visibility.
               - name: buyable  | type: boolean | description: Whether customers can currently purchase this plan. If set to `false`, customer won't be able to buy a plan themselves. In this case a Wix user has to assign the plan through the [dashboard](https://support.wix.com/en/article/pricing-plans-selling-plans-offline).
               - name: formId  | type: string | description: ID of the form associated with the plan at checkout.
               - name: buyerCanCancel  | type: boolean | description: Whether buyers can cancel their subscription to this plan.
               - name: currency  | type: string | description: Three-letter currency code in [ISO-4217 alphabetic](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) format. When the site currency changes, monetary amounts stored on the plan (prices, fees, and override amounts) are automatically rounded to the number of decimal places supported by the new currency.
               - name: purchaseLimits  | type: Array<PurchaseLimit> | description: Caps how many subscriptions buyers can have or the site can sell for this plan. When multiple types are present, all must pass (AND logic). Duplicate types are rejected by the server.
               - name: benefitDistributionSettings  | type: BenefitDistributionSettings | description: The settings of the benefit distribution for subscriptions to this plan
               - name: startDateSettings  | type: StartDateSettings | description: Settings that control when subscriptions to this plan start. Applied during purchase to calculate the subscription start date and validate customer-selected start dates. The settings apply only to pricing variants with a compatible `billing_terms.start_type`: `FIXED_DATE` and `DAY_OF_MONTH` apply to variants with the `ON_PURCHASE` start type, while `DATE_RANGE` applies to variants with the `CUSTOM` start type.
               - name: tags  | type: Tags | description: Tags that can be assigned to this plan for classification and filtering.
               - name: extendedFields  | type: ExtendedFields | description: Data extensions. Learn more about [extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions.md).
           - name: nextStartDate  | type: string | description: Date the plan becomes active when purchased now.  Returned only when at least one available variant has `ON_PURCHASE` start type and a start date rule is configured. Absent in two cases: the plan starts immediately on purchase, or the buyer chooses the start date. Check the variant's `billing_terms.start_type` to tell which.
               - name: seconds  | type: string | description: 
               - name: nanos  | type: number | description: 
       - name: benefitInfo  | type: BenefitInfo | description: Benefit that grants access to the item.
           - name: externalId  | type: string | description: ID of the item in the provider app's own system.  For example, if the benefit items are products, this ID corresponds to the specific product ID in the provider's system.
           - name: category  | type: string | description: Item category. Groups benefit items together for organization and management purposes. For example, classes, posts, groups.  Always the same value passed in `item_identifier.category`. Categories are defined by the provider app, not by Wix. An empty string means the item has no category.
           - name: providerAppId  | type: string | description: ID of the application providing the benefit item.  ID of the external application supplying the items. Each item's external ID is unique to its respective provider's application.
           - name: poolDefinitionId  | type: string | description: ID of the Benefit Programs pool definition that this benefit belongs to.  Use together with `benefit_key` to identify a benefit.
           - name: itemSetId  | type: string | description: Link between the benefit outlined in a pool definition and the specific item included in that benefit.  Defined by the Benefit Programs API. To identify a benefit, use `pool_definition_id` together with `benefit_key`.
           - name: price  | type: string | description: Price of the benefit, expressed in the credit unit given by `credit_configuration.unit_type`.  The price is the same for all of this benefit's items. Not a currency amount.
               - name: value  | type: string | description: 
           - name: creditConfiguration  | type: CreditConfiguration | description: Credit settings of the pool that this benefit belongs to.  When absent, benefits do not support credit-based pricing.
               - name: amount  | type: string | description: Number of credits granted when the plan is purchased, expressed in `unit_type`.  This is the starting balance and doesn't reflect credits already used.
               - name: unitDisplayName  | type: string | description: Name of the credit unit to display to buyers. For example, `Sessions`.
               - name: unitType  | type: string | description: Machine-readable credit unit type. For example, `PUNCH_CARD`.  Defined by the provider app rather than by a fixed Wix set, so treat it as opaque. Use `unit_display_name` for anything shown to buyers.
           - name: benefitKey  | type: string | description: Identifier of the benefit, unique within its pool definition.  Stable across requests, so it's safe to store and compare. The format is defined by the provider app, so treat it as opaque.
           - name: displayName  | type: string | description: Benefit name.
           - name: description  | type: string | description: Benefit description.

```