Skip to content
Orca

PRODUCT

One entitlement model in front of four billing systems.

Orca sits between your app, your server and the stores you sell through. It does not process payments and it does not replace your backend. It makes “does this customer have access?” a single question with a single answer, whichever store the money came from.

Stores
4
App Store, Play, Stripe, GoCardless
Client SDKs
5
Swift, Kotlin, Flutter, TS, Tauri
Server SDKs
2
TypeScript, Go

01 · ARCHITECTURE

How the pieces fit.

Every box below is named in the documentation. The purchase itself is always made in the store; Orca is told about it, maps it to an entitlement and tells you.

Your client app with an Orca client SDK talks to the store (App Store, Google Play, Stripe or GoCardless) for the purchase and to Orca for products and entitlements. The stores notify Orca of lifecycle changes. Orca sends a signed webhook to your server, and your server asks Orca for active entitlements with a server SDK before serving paid content.YOUR APPORCASTORESClient appSWIFT · KOTLIN · FLUTTER · TSconfigure(publicKey)identify(email)queryProducts · purchaseYour serverTYPESCRIPT · GOgetActiveEntitlements(email)constructWebhookEvent(...)source of truth for accessOrcaENTITLEMENT MODEL · DASHBOARD · APIentitlement: pro_tier├ app_store product id├ google_play product id├ stripe product id└ gocardless product idcustomer: ada@example.comactive entitlements, expirysigned webhooksx-orca-signature · x-orca-timestampMCP serverread · write · destructive scopesApple App StoreGoogle PlayStripeGoCardlessSTOREKIT 2 · SERVER NOTIFICATIONSPLAY BILLING · RTDNHOSTED CHECKOUT · WEBHOOKSDIRECT DEBIT MANDATESproducts,entitlementswebhookactive?notifiesPURCHASE HAPPENS IN THE STOREyour own API
The purchase itself always happens in the store. Orca maps it to an entitlement; your server decides access.

02 · COMPONENTS

What Orca is made of.

DASHBOARD

Organizations, apps, stores

Create an organization, then an app. Connect App Store Connect, Google Play Console, Stripe and GoCardless so Orca has permission to read purchases and receive notifications. Store integration guides.

ENTITLEMENTS

The abstraction your app gates on

An entitlement such as pro_tier groups one real product from each store. Three kinds: subscriptions, one-time non-consumables, and consumables. Offerings in the dashboard drive proration on plan changes. Entitlements & products.

CLIENT SDKS

Sell, in the store's own UI

orca-apple (StoreKit 2 on iOS and macOS), orca-android (Play Billing), flutter_orca (iOS, Android, macOS, Windows, Linux, Web), OrcaClient for the browser and a Tauri plugin for desktop. Configure with a public key, identify the customer by email, query products, purchase, read active entitlements. React Native SDK coming soon.

SERVER SDKS

Decide access with the private key

OrcaServerClient (TypeScript) and orca-server-sdk-go: getActiveEntitlements, customer lookup, cancel Stripe/GoCardless subscriptions, verify webhooks.

WEBHOOKS

Push on every change

Orca signs each webhook; the server SDKs verify x-orca-signature and x-orca-timestamp (rejecting anything older than five minutes) and return the customer's updated entitlement.

MCP SERVER

Agent access, experiments included

Hosted at mcp.orca.maxint.com. Read, write and destructive (cancellation) scopes are approved separately in a browser consent screen. Product creation, entitlement mapping and pricing experiments run through it. MCP server docs.

03 · RESPONSIBILITIES

Purchase, entitlement sync, paywall, analytics, who does what.

These are four different jobs. Being precise about which ones Orca does is how you avoid buying the wrong tool.

JobWho does it with OrcaNotes
Purchase processingThe store (Apple, Google, Stripe, GoCardless)Orca never touches card or bank data. Store commissions and processor fees are unchanged.
Entitlement synchronisationOrcaOne entitlement, one customer email, every store. This is the core product.
Access decisionYour server, via a server SDKClient SDKs can read entitlements for UI, but paid content should be gated server-side.
Paywall renderingYou today · Orca paywalls coming soonOrca returns products with formatted prices; you build the screen. Hosted paywalls are in preparation.
ExperimentationOrca, via the MCP serverPricing and entitlement experiments are run through the MCP server's write scope.
AnalyticsOrcaMRR, churn and retention in the dashboard; funnel analytics and churn insights; raw data streams and SQL access for your own warehouse.
Subscription management UIThe storeApp Store and Google Play customers manage subscriptions in store settings; the SDKs expose the management URLs.

04 · IN CODE

The whole model in two calls.

Client identifies and sells; server verifies. The same customer email is the join key on both sides.

client · Flutter
final orca = Orca(publicKey: 'pk_...', environment: OrcaEnvironment.sandbox);
await orca.identify('ada@example.com');

final entitlements = await orca.listEntitlements();
await orca.purchase(entitlements.first, externalStore: ExternalStore.stripe,
  redirectUrl: 'https://yourapp.com/success',
  failureRedirectUrl: 'https://yourapp.com/failure');
server · TypeScript
const orca = new OrcaServerClient(process.env.ORCA_API_KEY!)

const active = await orca.getActiveEntitlements('ada@example.com', 'sandbox')
const isPro = active.some((e) => e.entitlement_id === 'pro_tier')

05 · SCOPE AND ROADMAP

What Orca does today, and what is next.

TODAY

In production

Entitlement sync across App Store, Google Play, Stripe and GoCardless. Client SDKs for Swift, Kotlin, Flutter, TypeScript and Tauri; server SDKs for TypeScript and Go. Signed webhooks. Analytics dashboard. MCP server with experiments. Sandbox and production environments. Bulk import.

NEXT

On the roadmap

  • React Native SDK (soon)
  • Hosted paywalls (soon)
  • Unity and Kotlin Multiplatform SDKs

NEXT

See it against your own stack.