The Plan Benefits API tells you which pricing plans a customer can purchase in order to use a specific item, such as a class or a session. For each plan it also returns the benefit that grants access to that item.
With the Plan Benefits API, you can retrieve the purchasable plans that cover a given item, narrowed to the pricing variants a customer can actually buy, together with what the item costs in that plan's credits.
Call the API with an item identifier supplied by the app that provides the item, for example Wix Bookings for a class. Only plans that are public and not archived are considered, and each returned plan carries just the pricing variants available for purchase. A variant is dropped when the target date is in the past, falls outside the plan's duration, or falls outside the plan's start date limits. A plan is dropped entirely when the member has reached its purchase limits or when none of its variants survive, and so is a benefit whose credit price can't cover the number of items requested.
Plan availability is evaluated for the member the call is made for. When there's no member, per-member purchase limits are skipped and only site-wide limits apply, so the same customer can see a plan as a visitor that disappears once they sign in.
Returned prices reflect any pricing overrides active for the current context, so they can differ from the same plan retrieved from the Pricing Plans API.
It's important to note the following points before starting to code:
itemIdentifier.category is matched exactly and isn't a wildcard when omitted. If the provider app stores a category for its items, you must pass it.targetDate is ignored.planInfo.plan.benefitInfo; use poolDefinitionId together with benefitKey to identify one.externalId, providerAppId, and category. The same item can be covered by several benefits, which is why a plan can be returned more than once.itemSetId, but not the developer-facing identifier. Use poolDefinitionId and benefitKey instead.providerAppId. Item IDs are defined by the provider app, so they're only unique within it.class, post, or group.benefitInfo.price when the benefit has credit-based pricing, and described by creditConfiguration.For a comprehensive glossary of benefit terms, see the Benefit Programs terminology.
Last updated: 22 September 2026