Your Stripe account
Customers pay you. RevenueDot reads from Stripe and never charges or refunds for tracking.
Store
To use Stripe subscriptions with the RevenueCat SDK, create a Stripe app in RevenueDot, save a restricted API key and a webhook signing secret from your own Stripe account, and post each new subscription to the receipts endpoint with the customer's app user ID. The customer then has the same entitlements in every app that uses that ID.
Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.
Customers pay you. RevenueDot reads from Stripe and never charges or refunds for tracking.
Renewals, failed payments, pauses, price changes and refunds come from Stripe-signed events.
Web and app purchases land on the same customer, so pro is active everywhere.
No checkout of your own? RevenueDot can host one on the same Stripe app.
Setup
Add a Stripe app in RevenueDot. Its public key starts with strp_. Create products with store_identifier set to the Stripe product ID (prod_…), or a price ID (price_…) to sell several prices of one product separately. Start free on Cloud first if you have no account.
In the Stripe Dashboard create a restricted key with Read access to Subscriptions, Invoices, Checkout Sessions, Charges, Customers, Products and Prices, and None for everything else. Paste it on the app and click Check credentials. A key without a permission names the one it lacks.
In Stripe add an endpoint with your notification URL (https://api.revenuedot.app/v1/notifications/stripe/{app_id}) and the subscription, invoice, charge and Checkout events listed in the guide. Paste the endpoint's signing secret (whsec_…) on the app.
After Stripe confirms a purchase, post its subscription ID or Checkout Session ID with the customer's app user ID to POST /v1/receipts with X-Platform: stripe. Posting the same ID again changes nothing.
Log in to the RevenueCat SDK with the same app user ID. customerInfo.entitlements now includes the entitlements the Stripe purchase grants.
Backend call
A subscription ID (sub_…) records the subscription. A Checkout Session ID (cs_…) records its subscription or, for a payment-mode session, each line item as a one-time purchase. A 400 means the ID can never succeed. A 5xx means try again later, for example because the first invoice is not paid yet.
curl -X POST "$REVENUEDOT_URL/v1/receipts" \
-H "Authorization: Bearer strp_…" -H "X-Platform: stripe" -H "Content-Type: application/json" \
-d '{"app_user_id":"user_123","fetch_token":"sub_1Abc…"}' | What Stripe reports | Event |
|---|---|
| An active subscription with a paid invoice | INITIAL_PURCHASE (TRIAL while trialing) |
| A new paid invoice for the next period | RENEWAL |
cancel_at_period_end, or a future cancel_at | CANCELLATION (UNSUBSCRIBE) |
past_due: the renewal invoice failed | BILLING_ISSUE, with access to the end of the paid period |
unpaid, or retries run out | EXPIRATION |
| Another price or product on the subscription | PRODUCT_CHANGE, with no revenue for a proration invoice |
charge.refunded in full for the latest period | CANCELLATION (CUSTOMER_SUPPORT) with a negative transaction |
Revenue is what each invoice charged, so coupons show in revenue. Webhooks report store: STRIPE.
Rules
register_on to invoice_created to grant access while the first invoice is still open.app_user_id by default), the Stripe customer ID, or an anonymous ID.rcb_ keys is not served either.Web checkout
With write permissions on the same restricted key, RevenueDot creates the Stripe products and prices, hosts purchase links and funnels, and gives buyers a redemption link that grants access in the app. See web to app and the web billing guide.
FAQ
Yes, through RevenueDot. Create a Stripe app, save a restricted key and a webhook secret, and post each purchase to the receipts endpoint with an app user ID. The RevenueCat SDK in your app then shows the entitlement for that user, because entitlements belong to the customer and not to one store.
No. For tracking it only reads from your Stripe account. If you use RevenueDot's hosted checkout, it creates Checkout Sessions in your account with your key, and the money goes to you.
customer.subscription.created, updated, deleted, paused and resumed, invoice.paid, invoice.payment_failed and invoice.updated, charge.refunded and checkout.session.completed. Other events are accepted and ignored.
You post the subscription ID with the app user ID. For purchases you did not post, RevenueDot reads the user from Stripe metadata (the key app_user_id by default), from the Stripe customer ID, or uses an anonymous ID.
Yes. A test-mode key or a Stripe sandbox records sandbox data, which stays out of production numbers. Use a separate Stripe app for each mode.
Get started
Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue, or move an existing RevenueCat app with one line of code.
Already have an account? Sign in · Prefer your own servers? Self-host free