> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# RevenueCat-aankopen instellen

Maak een RevenueCat-project, koppel uw App Store- en Play-producten en verbind de SDK-sleutels plus servergeheimen die aankopen verifiëren.

## Walkthrough voor beginners

Waarom dit bestaat: Apple en Google vereisen dat digitale aankopen in een app via hun eigen billing lopen — nooit via Stripe Checkout — en de kit dwingt die grens af. RevenueCat ligt bovenop beide stores zodat één integratie iOS en Android dekt: het volgt bonnen, abonnementen en herstellen, en uw server vraagt RevenueCat of een workspace heeft betaald.

Vereisten: de Apple Developer Program- ($99 per jaar) en Google Play Console- ($25 eenmalig) accounts uit de mobiele-accountgids — storeproducten moeten bestaan voordat RevenueCat ze kan koppelen — plus een EAS-ontwikkelingsbuild om daadwerkelijk te testen, want Expo Go kan de native aankoopmodule helemaal niet draaien. RevenueCat's gratis tier dekt testen; niets hiervan brengt kosten in rekening voordat producten live zijn.

Snelle begrippen: een RevenueCat-project bevat uw aan stores gekoppelde apps. Producten zijn de store-items die in RevenueCat worden gespiegeld. Een entitlement is de vlag die RevenueCat verleent terwijl een abonnement actief is — standaard `pro`. Een offering bundelt producten in de paywall die de app presenteert. De publieke SDK-sleutels gaan in de mobiele env; een geheime API-sleutel en webhook-autorisatie blijven server-side.

Wat u aanmaakt: één project, twee aan stores gekoppelde apps, producten, één entitlement, één offering — ongeveer een uur, meestal wachten op de setup van storeproducten.

[De mobiele accounts aanmaken](https://supastack.dev/nl/docs/mobile/external-accounts.md)

[Een ontwikkelclient bouwen](https://supastack.dev/nl/docs/mobile/eas-setup.md)


## Het RevenueCat-account en -project aanmaken

1. Open [app.revenuecat.com](https://app.revenuecat.com) → meld u aan en maak een project met de naam van uw product.

Verwacht: een leeg projectdashboard met tabbladen voor Apps, Products, Entitlements, Offerings en API keys — de volgende secties vullen ze op volgorde in.


## Maak de storeproducten aan en koppel daarna beide apps

Store-side producten moeten bestaan voordat RevenueCat ze kan refereren. iOS: [appstoreconnect.apple.com](https://appstoreconnect.apple.com) → My Apps → maak het app-record met uw `ios.bundleIdentifier` → In-App Purchases of Subscriptions → maak de abonnementsproducten die u van plan bent te verkopen (ze mogen als draft blijven staan terwijl u test). Android: [play.google.com/console](https://play.google.com/console) → maak de app → Monetize → Products → Subscriptions (of in-app-producten).

Koppel daarna beide binnen RevenueCat: Apps → New app. Kies voor iOS App Store, voer de bundle-id in en lever de App Store Connect-credentials die het formulier vraagt — het linkt naar RevenueCat's eigen setupdocs voor elk veld. Kies voor Android Play Store, voer de pakketnaam in en upload de Play-service-account-JSON — de gelinkte docs lopen het aanmaken ervan in Google Cloud door.

Verwacht: beide apps vermeld onder het project, en de storeconsoles tonen dat uw producten bestaan — draft-status is prima in dit stadium.


## Producten, entitlement, offering

1. Products → New: maak één RevenueCat-product per storeproduct en koppel het bijbehorende App Store- of Play-product-id — de id's moeten exact overeenkomen met de consoles.

2. Entitlements → New: geef het een naam die past bij `REVENUECAT_ENTITLEMENT_ID` — de standaard van de kit is `pro` — en koppel de producten die het verlenen.

3. Offerings → New: maak een offering, voeg packages toe die naar uw producten wijzen en markeer het als Current — de app leest `offerings.current` bij het renderen van de paywall.

Houd `REVENUECAT_ENTITLEMENT_KEY` op de standaard `ai.reference-task`: dat is de interne ledgersleutel van de kit — dezelfde sleutel die de meegeleverde webplannen verlenen — en RevenueCat-toegang wordt eronder geschreven. Hernoem het pas wanneer de plansleutel van uw product verandert.


## De sleutels kopiëren en de webhook registreren

Project → API keys toont de drie soorten hieronder. De publieke per-platform SDK-sleutels (`appl_…` voor iOS, `goog_…` voor Android) gaan in `apps/mobile/.env.local` — ze identificeren de app, dragen geen uitgavenbevoegdheid en het `EXPO_PUBLIC_`-voorvoegsel is correct voor hen.

De geheime API-sleutel (`sk_…`, de v1-sleutel) en de webhook-autorisatie zijn server-only in `apps/web/.env.local` — nooit `EXPO_PUBLIC_`, nooit gecommit. De server roept RevenueCat's subscriber-API aan met de geheime sleutel om de aankoopstatus van elke workspace te verifiëren.

Webhook: RevenueCat → Integrations → Webhooks → stel de URL in op `{APP_URL}/api/billing/webhook/revenuecat` en een Authorization-headerwaarde — elke lange willekeurige string die u verzint — en zet vervolgens exact dezelfde string in `REVENUECAT_WEBHOOK_AUTHORIZATION`. De kit vergelijkt de header letterlijk en weigert al het andere, zodat verlengingen, annuleringen en terugbetalingen de server bereiken zonder op de volgende app-lancering te wachten.

Sandbox-aankopen worden buiten productie automatisch geaccepteerd; `REVENUECAT_ALLOW_SANDBOX=true` in een productie-env wordt bij het opstarten geweigerd, dus laat het unset zodra u live bent.

```
# apps/mobile/.env.local
EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER=revenuecat
EXPO_PUBLIC_REVENUECAT_IOS_API_KEY=appl_…
EXPO_PUBLIC_REVENUECAT_ANDROID_API_KEY=goog_…

# apps/web/.env.local — server side
MOBILE_PURCHASES_PROVIDER=revenuecat
REVENUECAT_SECRET_API_KEY=sk_…
REVENUECAT_WEBHOOK_AUTHORIZATION=<the exact Authorization value set on the webhook>
REVENUECAT_ENTITLEMENT_ID=pro
REVENUECAT_ENTITLEMENT_KEY=ai.reference-task
```


## Verifiëren met een sandbox-aankoop

Aankopen draaien alleen binnen een ontwikkel- of productiebuild — Expo Go mist de native module volledig, dus deze stap veronderstelt dat `eas build --profile development` een dev-client heeft geproduceerd (de EAS-gids bouwt die).

1. Installeer de dev-build op een apparaat of simulator die is ingelogd op een sandbox-account: App Store Connect → Users and Access → Sandbox Testers voor iOS; Play Console → license testing voor Android.

2. Open in de app de paywall en koop met het sandbox-account. Verwacht: de aankoop voltooit in sandbox — geen echte kosten — Aankopen herstellen werkt, en de entitlement van de workspace toont actief, server-side geregistreerd onder de `ai.reference-task`-sleutel.

Veelvoorkomende mislukkingen: een lege paywall betekent dat de offering niet Current is of dat producten niet gekoppeld zijn; een falende apparaataankoop betekent dat het storeproduct nog in draft staat of dat het verkeerde sandbox-account is ingelogd; een entitlement die nooit flipt betekent dat `MOBILE_PURCHASES_PROVIDER`/`EXPO_PUBLIC_MOBILE_PURCHASES_PROVIDER` uit staan of dat de webhook-Authorization mismatched — RevenueCat's dashboard toont de status van elke webhook-levering.

[Bouw en verifieer op apparaten](https://supastack.dev/nl/docs/mobile/builds.md)

[Webcheckout gebruikt in plaats daarvan Stripe](https://supastack.dev/nl/docs/web/stripe-payments.md)


Wil je verdergaan met de configuratie? Lees [Builds en apparaatverificatie](https://supastack.dev/nl/docs/mobile/builds.md).


## Volgende

[Builds en apparaatverificatie](https://supastack.dev/nl/docs/mobile/builds.md)
