Docs

Platform Support

The exact, honest capability matrix for Google Play and Apple App Store — what ships today, what has known limitations, and what's still planned. Grounded in the code, not the roadmap.

1

Two stores, one entitlement layer

Tierux supports both Google Play (Android) and the Apple App Store (iOS / StoreKit 2). Google Play is the primary, most battle-tested path — production-hardened and e2e-verified. Apple App Store support is implemented via a native Swift SDK and a server-side JWS verifier; it works today, but iOS is not yet at full production parity with the Google Play path. Every row below reflects what the code does, not an intention.

Support matrix
CapabilityGoogle PlayApple App Store
Purchase verification (server-side) Yes — Play Developer API (subscriptionsv2 + one-time) Yes, with limitations — JWS certificate-chain verification (StoreKit 2)
Lifecycle sync Yes — Real-time Developer Notifications (Pub/Sub) Yes, with limitations — App Store Server Notifications v2
Plan changes (upgrade / downgrade) Not implemented — in progress Not implemented — in progress
Sandbox / test-mode verification Yes — real verify from a license-tester token Yes — real verify from a pasted StoreKit JWS
Agent (MCP) setup Yes — setup_google_play Yes — setup_app_store

Full detail on every row below. Web checkout (Stripe) isn't in this table — it's a separate, unstarted platform, covered at the end of this page.

2

Server-side purchase verification

Google Play — implemented. Verification calls the Google Play Developer API: purchases.subscriptionsv2 for subscriptions, plus the one-time products endpoint for consumables and non-consumables. This is Tierux's most production-hardened path.

Apple App Store — implemented, with limitations. Tierux decodes and validates the StoreKit 2 JWS transaction with full certificate-chain verification against Apple's root CA. It works end-to-end today, but has received less production hardening than the Google Play path — fewer edge cases covered, less idempotency/ordering logic exercised at scale.

3

Lifecycle sync — keeping entitlements current

Google Play — Real-time Developer Notifications (RTDN). Implemented and production-hardened. Google Play pushes every subscription lifecycle event — renewals, cancellations, grace period, account hold, recovery, expiry, revocation — over Pub/Sub. JWTs are validated against your configured audience before any entitlement state changes.

Apple App Store — App Store Server Notifications v2. Implemented, with limitations. Notifications are wired at a per-app webhook endpoint; the setup_app_store MCP guide walks you through pointing Apple at it (Production and Sandbox point at the same URL). The resulting TEST handshake and a real DID_RENEW refresh are both verified end-to-end through the real JWS decode path. Still less production-hardened than the RTDN path — fewer ordering guards, less battle-tested at scale.

4

Plan changes — upgrade / downgrade

Google Play — in progress. Moving a subscriber between plans (e.g. monthly → annual) isn't shipped yet.

Apple App Store — not handled today. Apple signals a plan change via a DID_CHANGE_RENEWAL_PREF notification. Tierux's App Store notification processor does not currently act on this notification type — it's treated the same as other informational notifications (price increases, offer redemptions), and no entitlement change is applied.

5

SDKs & distribution — what you can install today

  • Android (Kotlin)com.tierux:android-sdk:0.2.0 is live from the self-hosted Maven registry at https://maven-tierux.web.app. The same source is also available as a direct download — no API key needed.
  • iOS (Swift) — ships as source, served over the API: browse or download. Integrate locally as a Swift Package (.package(path: "Tierux")) — there's no remote package-registry listing yet, so point your package manager at the local source, not a hosted dependency.
  • React Native & Flutter — native wrapper SDKs (@tierux/react-native, tierux_flutter) live in-repo, but neither is published to a package registry yet. The recommended path today is REST-first: use your existing IAP library and call Tierux's REST API directly (see the React Native and Flutter guides) — or download the wrapper source and vendor it locally: react-native, flutter.
  • TypeScript / Node (backend) — a platform-agnostic REST client. Not on a package registry yet — download the source: /api/v1/sdk/download?platform=typescript.

The Android Maven host is live. React Native and Flutter wrappers remain source-only.

6

Sandbox testing — real verifies, not simulated

The onboarding wizard's test-purchase step runs an actual server-side verification against the store, for both platforms — neither path is a mock:

  • Google Play — paste a purchase token from a Google Play license tester; Tierux calls the real Play Developer API and shows the live entitlement result.
  • Apple App Store — paste the signed StoreKit 2 transaction (the jwsRepresentation JWS) from a Sandbox purchase; Tierux runs the same JWS certificate-chain verification used in production and shows the live entitlement result. A bare numeric transaction ID can only be format-checked — full verification needs the JWS.

If verification fails, you see the real error the store returned.

7

Agent (MCP) setup

Both stores are configured over MCP, guided by your AI agent:

setup_google_play(packageName, appId)
→ Creates the GCP service account, enables the Android
   Publisher API, wires Pub/Sub for RTDN.

setup_app_store(bundleId, appId)
→ Walks Bundle ID / App Apple ID config and the App
   Store Server Notifications URL.

SDK integration snippets are generated for every supported platform, including native Swift for iOS — the agent no longer dead-ends when it reaches the SDK step. See MCP Setup for the full guide.

8

Web checkout (Stripe)

Available (early) — server verification + agent setup shipped. Sell subscriptions on the web through your own Stripe account and have them land in the same entitlements as Google Play and the App Store. The verification endpoint, the lifecycle webhook, the setup_stripe_web MCP tool, and the web SDK snippet are live; see the Stripe web store guide. Buyers must be signed-in Firebase users, and v1 supports subscriptions only; one-time purchases are not available yet.

Related docs

Docs: SDKs

Client SDK integration — Android (Maven), iOS (SPM), and REST-first frameworks.

Docs: MCP Setup

Connect your AI agent to configure stores and products.

Docs: StoreKit

Deep dive on Apple StoreKit 2 JWS verification.

Quickstart

Full integration path from project creation to verified purchase.

Ship knowing exactly what's supported

Free tier — unlimited apps, 1 paywall. No credit card, no revenue share.

Start free