---
title: "Paywalls"
description: "What a paywall is in Adapty, when you need one instead of a flow, and how your app fetches it."
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skill. Claude Code (self-updating via plugin): `claude plugin marketplace add adaptyteam/adapty-skills && claude plugin install adapty-skills@adapty` — other tools: `npx skills add adaptyteam/adapty-skills --all`

<CustomDocCardList ids={['create-paywall', 'paywall-metrics']} />

## What "paywall" means

A paywall screen shows your products and allows the user to purchase them. Depending on how you build that screen, you may also need to create a **paywall** in Adapty — the product configuration that feeds it.

You can create paywall screens in two ways:

- **As a flow.** Use the [Flow & Paywall Builder](adapty-flow-builder) to design the screen and attach your products to it.
  - Serve it from a [flow placement](placements).
  - Adapty renders the screen and runs the purchase.
  - Restyle the screen and change its products without an app release.
- **In your own code.** You build and maintain the screen yourself, and you need a paywall to feed it. Adapty handles the purchase.
  - Save your products in Adapty as a **paywall**: their order, their promotional offers, and an optional [remote config](customize-paywall-with-remote-config) for text and media.
  - Serve it from a [paywall placement](placements).
  - Fetch the paywall for its products, and call `makePurchase` to complete the purchase — see [Implement paywalls manually](ios-implement-paywalls-manually).
  - Also called a **custom paywall** — or a **remote config paywall** when it uses a remote config.

Both paywall screen types allow you to conduct the purchase in a browser, which avoids store fees on the US App Store storefront. See [Web paywall](web-paywall).

You may also see **paywall** used for a screen built in the [old Paywall Builder](adapty-paywall-builder). That builder will stop creating new paywalls on October 1, 2026. Existing paywalls will continue to work, but we recommend [migrating to flows](migrate-to-flows) as soon as possible.

<CustomDocCardList ids={['fallback-paywalls', 'paywall-localization', 'customize-paywall-with-remote-config', 'web-paywall']} />