Subscriptions & trials
Trials that convert and subscriptions that don't leak: the plumbing and the churn.
Most indie founders bolt a paywall on at the end and wonder why nobody converts. Pricing is a product decision, not a config screen โ the model you pick, the trial you design, and the plumbing underneath decide whether your revenue is real and whether it sticks. MRR is the spine here: it's the hardest number to fake, so build the machinery right instead of eyeballing two store dashboards.
Subscription, one-time, or consumable
Pick the model that matches how your app actually delivers value.
- Subscription fits ongoing value โ a habit, fresh content, sync, anything a user returns to weekly. It's the only model that produces MRR, which is why it dominates. If usage recurs, this is your answer.
- One-time / lifetime fits a tool used once or rarely โ a converter, a wallpaper pack, a utility. Honest and simple, but it's a treadmill: every month restarts at zero and you're forever hunting new buyers. Nothing compounds.
- Consumable IAP fits credits or currency โ coin packs, generations, tokens. Great for games and AI apps where value is metered, and it can pair with a subscription (a sub for the base, consumables for heavy use).
Gut-check against this product's doctrine: is this valuable at 10 paying users? A model that only works at 10,000 installs isn't a business yet โ it's a bet on scale you can't afford.
Design the trial around the aha
The trial has one job: get the user to the moment they feel the value โ the aha โ before it ends. Everything else is secondary.
- Free trial โ best when your value takes a few sessions to land. Long enough to reach the aha, short enough to force a decision.
- Hard paywall (pay before entry) โ works when the promise is obvious and traffic is warm, like an ad that already sold them. Fewer installs, higher-intent buyers.
- Freemium โ a real free tier plus paid upgrades. Powerful but dangerous solo: too generous and nobody upgrades, too thin and nobody sticks.
Trial length is a lever, not a default. If most users hit the aha on day two, a 30-day trial just delays the decision and invites forgetting. Short enough to force the aha, long enough to reach it โ find where your aha actually lands with real data, don't guess.
Two levers do most of the conversion work:
- Front-load the aha. Onboard straight into the core action, not a settings tour.
- Warn before the charge. A well-timed "your trial ends tomorrow" nudge beats a surprise charge โ it cuts refunds and builds trust.
The plumbing: StoreKit, Play Billing, RevenueCat
For digital goods consumed in-app, you don't get to use Stripe โ Apple and Google require their own billing (StoreKit on iOS, Google Play Billing on Android), and each takes a cut. Wiring receipts, renewals, and restores correctly across both stores is genuinely fiddly.
That's why most solo founders reach for RevenueCat: one SDK wraps both stores, handles receipt validation and restore-purchases, and gives you a clean, server-verified view of active subs and MRR. That last part matters โ it's the trustworthy MRR number you connect straight to ProveMyApp instead of eyeballing two dashboards.
Kill churn, especially the involuntary kind
Voluntary churn (someone cancels) is a product problem. Involuntary churn โ failed renewals from expired or maxed-out cards โ is pure leakage, and it's a meaningful slice you can win back with zero product work.
- The stores run billing retry and grace periods automatically. Keep the user's access on while the store retries the card, instead of cutting them off the instant a renewal fails.
- Treat store dunning as a feature โ don't override the grace period by revoking entitlements early.
- Watch cancellations as signal. A spike right after a specific screen or update is telling you something.
Annual vs monthly, and raising prices
Offer an annual plan beside monthly. It smooths churn (one renewal decision a year, not twelve), pulls cash forward, and rewards believers. Anchor it against the monthly price so the savings are visible โ that's anchor/decoy pricing doing honest work.
When you eventually raise prices: raise for new users first, watch conversion, and grandfather existing subscribers (both stores let you keep current subs at their old price). A loyalty tax on your earliest users is the fastest way to spike cancels exactly when you're trying to grow.
Ship-ready when
- Your model (sub / one-time / consumable) matches how the app delivers value.
- Trial type and length are set to force the aha, not delay it.
- Onboarding drops users into the core action, and a reminder fires before the charge.
- Billing runs through StoreKit / Play Billing (via RevenueCat or equivalent), with a verified MRR number.
- Grace periods / billing retry are on so failed cards don't silently churn.
- An annual plan exists and is anchored against the monthly price.
- Your price-raise plan grandfathers existing subscribers.
I'm building ProveMyApp so founders like you can connect your apps, track their growth with verified metrics, and build alongside other founders instead of doing it alone.
Explore the library
More guides and playbooks to grow your app