Entitlements & products
Model your catalog: create the entitlements your app checks, the store products you sell, and the mappings between them. Do this in the dashboard, or over the API.
1. Create entitlements
In Dashboard → Entitlements → New entitlement, give each a key (the stable, code-facing identifier) and a display name. Keys are lowercase, no spaces — premium, pro, team.
2. Create products & map them
In Dashboard → Products → New product, add each store SKU with:
- Store —
app_store,play,stripe,web. - Store product id — exactly as registered in that store's console.
- Type —
subscription,non_consumable, orconsumable. - Entitlements — one or more entitlement keys this product grants (the mapping).
The store_product_idmust be byte-for-byte identical to the identifier in App Store Connect / Play Console. A mismatch means a real purchase won't resolve to an entitlement (unknown_product).
Worked example
An app with a lifetime unlock and a monthly subscription, on both stores:
| Entitlement | Product (store · id) | Type |
|---|---|---|
premium | play · app_premium_lifetimeapp_store · app_premium_lifetime | non_consumable |
pro | play · app_pro_monthlyapp_store · app_pro_monthly | subscription |
Both platforms' SKUs map to the same entitlement key, so your app checks premium / pro and never branches on platform.
Doing it over the API
The dashboard is the supported path, but the same operations are available to server-side tooling (secret key):
// Entitlements and products are created via the authenticated dashboard endpoints.
// From code, prefer the dashboard for catalog setup, then use the runtime API:
// POST /v1/subscribers/{id}/purchases → record a purchase (maps product → entitlement)
// POST /v1/subscribers/{id}/grant → grant an entitlement directly
// GET /v1/offerings → read your catalog for a paywallWith a catalog in place, grab your keys: API keys.
