Browse documentation

SubKit exposes four surfaces. The right one depends on where your code runs and what it is trusted to do.

  • Expo / React Native SDK — Public app-bound SDK key. Render offerings, run purchases, and read entitlements on-device.
  • Node.js backend SDK — Server key with scoped capabilities. Create customers, contracts, payments, seats, and check entitlements.
  • Runtime API — The HTTP surface the mobile SDK calls: offerings, customer info, entitlement checks, and purchase reconcile.
  • Server API — Tenant/app-scoped, capability-gated HTTP surface for trusted backend mutations and reads.

The security boundary

The single most important distinction is which key runs where:

Surface Key Runs in Can it mutate commerce/access?
Expo SDK sk_sdk_… Mobile app No — reads and drives purchases
Runtime API sk_sdk_… Mobile app No — verified purchase reconcile
Node SDK sk_srv_… Trusted backend Yes — with explicit capabilities
Server API sk_srv_… Trusted backend Yes — with explicit capabilities

A common split

Most products use more than one surface together:

  • The mobile app uses the Expo SDK to render paywalls and drive purchases.
  • The app backend uses the Node SDK to provision contracts, seats, and free/promotional access, and to make server-side access decisions.
  • Both ultimately answer the same question through entitlements.

Type to search…

↑↓ navigate↵ selectEsc close