Superwall/infra
Get Started
$ npm i @superwall/sdk v4.2.0

The infrastructure
for subscriptions.

Purchases, customer data, and revenue on iOS, Android, Smart TV, and the web. One source of truth. One API. Built for engineers and agents.

Start for free Talk to sales // no credit card · open-source SDKs · MIT
01
25,000
records / second ingested
02
$100M+
monthly revenue processed
03
1B+
paywall views / month
04
8,000+
apps on Superwall
05
100K+
paywalls deployed

Every store. Every platform.
One subscription record.

App Store, Play Store, Stripe, and your own billing — reconciled into one queryable subscription graph. Exposed through APIs, webhooks, and SDKs the rest of your product can trust.

// graph.superwall.com
live · ingesting 25,047 records/s
App Store
Play Store
Stripe
RevenueCat
Superwall — Source of Truth
Your iOS app
Your Android app
Webhooks
REST API

Cross-platform purchases,
built better and faster.

Implementation and maintenance of purchases across mobile, Smart TV, and the web — simplified. Go to market quicker and spend less time supporting platform updates.

a

Your subscription backend-in-a-box

Superwall simplifies purchase implementation and automates receipt validation for StoreKit 2, Google Play Billing, Smart TV, and web transactions.

StoreKit 2 Play Billing v6 Stripe tvOS · Roku · Fire TV
b

Just one API

One typed surface for entitlements, purchases, restores, and receipts — instead of one per platform. Same primitives, same shape, every device.

// any platform
await superwall.purchase(product)
c

Seamless web purchases

Easy online purchases that work on mobile — no coding or hosting needed. Hosted checkout, Apple Pay, Google Pay, and Link — wired to the same entitlement graph as your app.

Hosted checkout Apple Pay Google Pay Stripe Link
d

Stay ahead of platform changes

Our dedicated engineers handle the StoreKit, Play Billing, and Smart TV updates — so you focus on developing features that matter, not chasing receipt schema diffs.

StoreKit 2.3 · Play Billing v6 · WWDC '26 ready

One platform. Every store, every device, every receipt — reconciled into a single subscription record your whole stack can trust.

One platform. Eight primitives.

Use one. Use all eight. Each is versioned, typed, and addressable from any client.

Wire it everywhere.

Every lifecycle moment is a typed, signed, replayable webhook. Every record is readable and writable over REST and GraphQL. Build comms, CRM backfills, dashboards, admin tools — without scraping ours.

HMAC SHA-256 7-day replay Exponential backoff JSON Schema OpenAPI 3.1
POST https://your.app/webhooks/superwall
200 OK · 47ms
  • trial_started
  • trial_converted
  • trial_cancelled
  • subscription_started
  • subscription_renewed
  • subscription_paused
  • subscription_resumed
  • subscription_cancelled
  • subscription_expired
  • subscription_refunded
  • subscription_grace_started
  • subscription_grace_ended
  • billing_issue
  • billing_resolved
  • entitlement_granted
  • entitlement_revoked
  • product_changed
  • price_changed
  • user_attributes_updated
  • paywall_open
  • paywall_close
  • paywall_decline
  • transaction_complete
  • transaction_fail
  • transaction_restore
  • transaction_timeout
  • promo_redeemed
  • intro_offer_applied
  • win_back_offer_applied
+ 6 more events
webhook.ts TypeScript
import { verify } from "@superwall/webhooks";

export async function POST(req: Request) {
  const raw = await req.text();
  const event = verify(raw, {
    secret: process.env.SUPERWALL_SIGNING_SECRET!,
    signature: req.headers.get("x-superwall-signature"),
  });

  switch (event.type) {
    case "subscription_started":
      await crm.upsertUser(event.data.user);
      break;
    case "trial_converted":
      await warehouse.insert("conversions", event.data);
      break;
  }

  return new Response(null, { status: 200 });
}

Plug in every tool you already use.

Server-side. Opt-in. GDPR-aware. Pipe events to analytics, comms, CRM, attribution, and your warehouse — without another SDK in your app.

Bring your own UI.

Use Superwall for pricing, paywall config, A/B assignment, entitlements, and analytics. Render the UI in SwiftUI, Compose, React, RN, Flutter, or a custom canvas.

  • Products and entitlements from the SDK
  • Emit paywall_open / decline / purchase yourself
  • Source of truth without shipping our UI
PaywallScreen.swift · headless
Swift 5.10
// No UI from Superwall. Just the source of truth.
import SuperwallKit

struct PaywallScreen: View {
  @StateObject var sw = Superwall.shared

  var body: some View {
    VStack(spacing: 16) {
      if let products = sw.paywall("hard_paywall")?.products {
        ForEach(products) { product in
          ProductCard(
            title: product.name,
            price: product.localizedPrice,
            cta: "Start free trial"
          ) {
            try? await sw.purchase(product)
          }
        }
      }
    }
    .onAppear { sw.track(".paywall_open") }
  }
}
iOS
Swift
pod 'SuperwallKit'
Android
Kotlin
com.superwall:sdk:4.x
React Native
TS
npm i @superwall/react-native
Flutter
Dart
flutter pub add superwall_flutter
Expo
TS
npx expo install @superwall/expo
Unity
C#
openupm add com.superwall.sdk
Web
TS
npm i @superwall/web
Server
any
curl api.superwall.com

Paywalls built
by agents.

An MCP server and an agent-shaped SDK. Typed tools for designing paywalls, running experiments, mutating catalogs, and shipping config. Claude, Cursor, and your agents take paywalls from prompt to production.

create_paywall
preview_paywall
publish_to_audience
create_experiment
query_subscriptions
list_webhook_events
claude.ai · MCP session · superwall connected
Build a hard paywall for our annual plan. 7-day free trial, dark mode, "see all features" toggle. Ship to 10% of new US users.
Got it. Drafting now.
create_paywall(name: "annual_trial_2026")
set_products([annual_49.99_trial_7d])
set_theme(dark, "see_all" toggle on)
preview_paywall() ✓
create_experiment(traffic: 10%, geo: "US")
publish_to_audience("new_users") ✓
Shipped. Live for 10% of US new users. I'll ping you when conversion moves ±5% at 90% confidence.
experiment_id exp_4af2c running · 0 anomalies

Pricing decisions in milliseconds.

Paywall config, A/B assignment, geo pricing, and entitlement state — all resolved at the edge before your screen mounts. No wrong-price flash. No empty paywall. No spinner.

// cold start to interactive paywall p95
DNS + TLS 18ms
Superwall edge 31ms
Paywall hydrate 64ms
First interaction 112ms
region: iad · pop: edge-19 · cache: HIT total 112ms
$0.00 / month forever
the whole platform, priced at

Free.

Every primitive — source of truth, webhooks, REST, integrations, headless, AI paywalls, the agent SDK, the MCP server — at zero cost. You pay only when a Superwall paywall earns you money.

$0

Every primitive. Every event. Every API call.

  • Source-of-truth subscription graph
  • 30+ lifecycle webhooks · signed + replayable
  • Full REST + GraphQL API · unlimited calls
  • 20+ destination integrations (Mixpanel, Braze…)
  • Headless SDK on iOS, Android, RN, Flutter, Web
  • AI paywall generation + auto A/B testing
  • MCP server + agent-shaped SDK
  • Unlimited apps · unlimited seats · unlimited paywalls
included
usage

Only when a Superwall paywall
makes you money.

Render a Superwall paywall, it converts, we take a small cut. That's the whole bill. No seats. No event fees. No API surcharges. No webhook tiers.

  • Only billed on Superwall-rendered paywall purchases
  • Not billed on headless · API · webhook · integration usage
  • Not billed on trial starts, restores, or refunds
  • Cancel anytime · no minimums, no contract
rev-share
no credit card migrate from RevenueCat in <1 hr production-ready on day one
// or run npx create-superwall@latest