---
title: Paywalls
description: Storefront — SDK gets offers → plan → plan entitlements.
---

# Paywalls

A **paywall** is a named storefront. The SDK typically does not fetch “plans” alone for UI:  
`getPaywall('main')` already nests **prices, plans, and entitlements**.

```text
SDK.getPaywall("main")
  → items[]
      → plan_price
      → plans
          → plan_entitlements → entitlements
```

## Client checklist

1. Render cards from plan + price.
2. Bullets / comparison from plan entitlements (or your own static UI).
3. Purchase with `plan_price_id` (not free).
4. Feature access via `hasEntitlement`, not plan display name.
