No store account
You need no App Store Connect, no Play Console and no tester account.
Store
To test in-app purchases without sandbox accounts, create a Test Store app in RevenueDot and give its test_ key to the RevenueCat SDK in a debug build. Purchases go through the SDK's own test dialog instead of Apple or Google. They grant entitlements, record events and send webhooks like real purchases, and they are always sandbox data.
Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.
You need no App Store Connect, no Play Console and no tester account.
Test purchases run the same entitlement, event and webhook code as store purchases.
One API call plays out a trial, renewal, billing issue, cancellation or refund.
Test purchases never count in production charts.
Setup
Sign up free on Cloud, then in Apps add an app of type Test Store. Copy its test_ key from API keys.
Add a product such as pro_monthly with duration P1M and a Test Store price. The duration is the period, so a P1M product expires one month after purchase. A product without a price shows 0.
Attach the product to an entitlement such as pro, and put it in a package of your current offering, as you would for a store product.
Use the test_ key as the SDK's API key and set the proxy URL to https://api.revenuedot.app before configure. Use the key in debug builds only.
Call purchase as usual. The SDK shows its Test Store dialog. Choose the successful purchase and check that the entitlement is active in the app and on the customer's page in the dashboard.
API
The SDK posts fetch_token as test_<purchase time in ms>_<id>, and RevenueDot accepts any token of that form.
curl -s "$REVENUEDOT_URL/v1/receipts" -H "Authorization: Bearer $TEST_KEY" -H "Content-Type: application/json" \
-d "{\"app_user_id\":\"user_1\",\"fetch_token\":\"test_$(date +%s)000_demo\",\"product_id\":\"pro_monthly\",\"price\":9.99,\"currency\":\"USD\"}" Lifecycles
curl -s -X POST "$REVENUEDOT_URL/v2/projects/$PROJECT_ID/test_purchases" \
-H "Authorization: Bearer $SECRET_KEY" -H "Content-Type: application/json" \
-d '{"app_user_id":"user_renewal","product_id":"pro_monthly","scenario":"renewal","price":9.99}' | Scenario | What happens | Events (monthly product) |
|---|---|---|
purchase | Bought now | INITIAL_PURCHASE |
trial | A 7-day free trial starts | INITIAL_PURCHASE (price 0) |
trial_conversion | Trial, then paid periods until now | INITIAL_PURCHASE, RENEWAL |
renewal | Bought, then renewed every period until now | INITIAL_PURCHASE, RENEWAL |
cancel | Renewed, then auto-renew turned off now | INITIAL_PURCHASE, CANCELLATION |
billing_issue | The charge fails at the last period end, with 7 days of grace | INITIAL_PURCHASE, BILLING_ISSUE, CANCELLATION |
refund | Renewed, then the latest period is refunded now | INITIAL_PURCHASE, CANCELLATION |
expire | Auto-renew off from the start, access ends at the period end | INITIAL_PURCHASE, CANCELLATION, EXPIRATION |
Add offset_days (0 to 730) to move the start into the past. One-time products support purchase and refund only.
Limits
test_ keys in debug builds only. A release build shows an error screen on purpose, so ship with your appl_ and goog_ keys.FAQ
Create a Test Store app in RevenueDot, use its test_ key in the RevenueCat SDK in a debug build, and buy through the SDK's test dialog. The purchase grants entitlements and sends webhooks like a real one, and it is stored as sandbox data.
Yes. POST /v2/projects/{project_id}/test_purchases with a scenario such as renewal, trial_conversion, billing_issue, cancel or refund. RevenueDot plays out the whole history with each state applied at the time it would have happened.
No. Native SDKs accept test_ keys only in debug builds, and a release build stops with an error screen. Ship with your appl_ and goog_ keys.
No. They are always sandbox purchases and stay out of production numbers. Turn on the sandbox switch in the dashboard to see them.
Yes. purchases-js and React Native on the web accept test_ keys and open a Test Store modal. Real web payments go through a Stripe-backed purchase link or funnel instead.
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