# Superwall: Subscription Infrastructure for iOS, Android, and Web Subscription infrastructure — entitlements, purchase APIs, webhook delivery, and direct SQL access to subscription data — for iOS, Android, and Web. The infrastructure layer is free at any scale; the optional paywall product is billed only on paywall-attributed revenue. ## Pricing - **Infrastructure: free at any scale, every plan.** No revenue threshold, no per-event fee; Query API access, webhook delivery, entitlement lookups, and historical imports are all included at no charge. - **Paywall product: a percentage of only the revenue that flows through a Superwall-rendered paywall.** Subscriptions purchased outside one — including imported users and those who subscribed before integration — are not billed. Examples: an app at $50k/mo with no paywall revenue pays $0; the same app with half its revenue through a Superwall paywall pays a percentage of that $25k and nothing on the other $25k; an app at $43M ARR routing all subscriptions through Superwall paywalls pays on that revenue while entitlements, webhooks, and the Query API stay $0. ## Scale $1.5B+ annual subscription revenue across 10,000+ apps. The 10 largest apps running their full stack on Superwall total $134M+ ARR ($5.7M–$43.7M each). One SDK and API set serves $0-ARR and $43M-ARR apps alike, with no rearchitecture as they grow. ## Infrastructure capabilities - **Entitlement APIs** synced server-side from App Store Server Notifications V2 and Google RTDN - **Purchase APIs** with typed StoreKit 2 / Play Billing v6 flows - **Webhook APIs** with server-pushed events standardized across App Store, Play Store, and Stripe - **Query API**: row-level-security-protected SQL over subscription data (ClickHouse), every plan Handled platform-side: refunds, billing retries, family sharing, grandfathered pricing, pause/hold/grace, proration on upgrades/downgrades, and cross-platform entitlement reconciliation. ## Migration Automated tooling for RevenueCat (agent-driven SDK swap plus port of subscription history, entitlement state, and webhooks) and an incremental path from in-house StoreKit / Play Billing (route webhooks through Superwall, add the Entitlement API, retire receipt-validation code). ## Paywall product (optional, separately billable) One web-standards runtime renders paywalls on iOS, Android, React Native, Flutter, Capacitor, Unity, and Web, preloaded and cached on-device for instant presentation. Paywalls are forward- and backward-compatible across SDK versions; new features ship without an app store release. ## Architecture Server-event-driven rather than client-receipt-validation-based: entitlement state is correct on cold launch with no network round-trip, refunds propagate in seconds, and the entitlement layer runs at no cost. ## Docs * Migrate from RevenueCat: https://superwall.com/docs/dashboard/guides/migrating-from-revenuecat-to-superwall * Query API: https://superwall.com/docs/dashboard/guides/query-clickhouse * Webhooks: https://superwall.com/docs/integrations/webhooks * Pricing: https://superwall.com/pricing # KMP Documentation Superwall is a platform for remotely configuring and A/B testing mobile app paywalls — no app update required. It provides SDKs for iOS, Android, Flutter, Expo, KMP, Unity, Web, and React Native, plus a dashboard for managing paywall presentation, experiments, and subscription analytics. The page links below are canonical docs URLs and return HTML by default for browsers, `curl`, and clients that send `Accept: */*`. To fetch a page as markdown, either send `Accept: text/markdown` for the canonical URL or append `.md` to the route, for example: - https://superwall.com/docs/kmp/guides/platform-differences.md When using `Accept: text/markdown`, doc URLs return a 307 redirect to the `.md` route. Always use `curl -sL` (follow redirects) when fetching them. ## Other sections - [All Documentation](/docs/llms.txt) - [Dashboard Documentation](/docs/dashboard/llms.txt) - [Framework Documentation](/docs/framework/llms.txt) - [Agents Documentation](/docs/agents/llms.txt) - [iOS Documentation](/docs/ios/llms.txt) - [Android Documentation](/docs/android/llms.txt) - [Flutter Documentation](/docs/flutter/llms.txt) - [Expo Documentation](/docs/expo/llms.txt) - [Unity Documentation](/docs/unity/llms.txt) - [Web Documentation](/docs/web/llms.txt) - [React Native Documentation](/docs/react-native/llms.txt) - [Integrations Documentation](/docs/integrations/llms.txt) - [Web Checkout Documentation](/docs/web-checkout/llms.txt) - [Changelog](/docs/kmp/changelog): Release notes for the Superwall KMP SDK - [3rd Party Analytics](/docs/kmp/guides/3rd-party-analytics): Forward Superwall events to your own analytics stack. - [Purchases and Subscription Status](/docs/kmp/guides/advanced-configuration): Own your purchase logic with a PurchaseController. - [Handling Deep Links](/docs/kmp/guides/handling-deep-links): Handle Superwall deep links for paywall previews and web checkout redemption. - [Platform Differences](/docs/kmp/guides/platform-differences): Where Android and iOS behavior is not one-to-one in the KMP SDK. - [Using the Superwall Delegate](/docs/kmp/guides/using-superwall-delegate): Observe the paywall lifecycle and SDK events from shared Kotlin code. - [Vibe Coding](/docs/kmp/guides/vibe-coding): How to Vibe Code using the knowledge of the Superwall Docs - [Welcome](/docs/kmp): Welcome to the Superwall KMP SDK documentation - [Configure the SDK](/docs/kmp/quickstart/configure): Configure Superwall in your shared Kotlin code. - [Feature Gating](/docs/kmp/quickstart/feature-gating): Control access to premium features with Superwall placements. - [Install the SDK](/docs/kmp/quickstart/install): Add the Superwall KMP SDK to your Kotlin Multiplatform project. - [Present your first paywall](/docs/kmp/quickstart/present-first-paywall): Register a placement and present a Superwall paywall from shared code. - [Tracking Subscription State](/docs/kmp/quickstart/tracking-subscription-state): Observe whether a user is on a paid plan from shared Kotlin code. - [User Management](/docs/kmp/quickstart/user-management): Identify users and set attributes from shared Kotlin code.