> 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: Sample Flows

## Article: Sample Flows

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

## Article Content:

# Plan Benefits API: Sample Flows

This article presents possible use cases and corresponding sample flows that you can support. It provides a useful starting point as you plan your implementation.

## Offer a customer the plans that unlock a specific session

A booking site wants to show a customer who is trying to book a specific session which pricing plans they could buy in order to attend it. For example, a customer selects a Tuesday 09:00 yoga class and the site shows "Buy one of these plans to book this class".

> **Prerequisite:** The site must have the Pricing Plans app installed, and the session's provider app must have at least one benefit that covers the item.

To offer a customer the plans that unlock a specific session:

1. Get the item identifier from the provider app. For a Wix Bookings session, the `externalId` is the ID of the bookable item in Bookings, and the `providerAppId` is the Bookings app ID. Include `category` only if the provider stores one for that item.
2. Call [List Plans by Item Identifier](https://dev.wix.com/docs/api-reference/business-solutions/pricing-plans/plan-benefits/list-plans-by-item-identifier.md) with that `itemIdentifier`, a `targetDate` set to the session's start time, and `count` set to the number of items the customer wants to redeem.
3. Deduplicate the results by `planInfo.plan.id`. A plan is returned once per matching benefit, so the same plan can appear more than once with different `benefitInfo`.
4. Render the returned plans as options. Each entry pairs a `planInfo.plan` with the `benefitInfo` that grants access to the item, so you can show both the plan's price and what the benefit costs in credits.
5. Show `planInfo.nextStartDate` to tell the customer when a plan would become active. When it's absent, check the variant's `billingTerms.startType` to tell whether the plan starts immediately or the customer chooses a start date.