Skip to content

Mobile AppsRevenueCat + Stripe + Firebase Stack

Simon Dziak
Simon Dziak
Founder & developer, App369
LinkedIn
Published December 5, 2025 · Updated October 21, 2026Facts last verified October 21, 20268 min

Key takeaways

  • Mobile subscriptions go through the App Store and Google Play, usually managed with RevenueCat, while web payments commonly go through Stripe.
  • Google now requires Play Billing Library version 8 or later for new apps and updates, so a stack built on version 5 is out of date.
  • Apple guideline 3.1.1 still requires in-app purchase for most digital goods, but US storefront apps may include buttons and links to outside purchase methods.
  • Stripe is certified as a PCI Service Provider Level 1, which keeps card data off your own servers when you use hosted checkout.
  • A webhook-driven backend, such as Firebase Cloud Functions writing to Firestore, keeps subscription status in one place across platforms.
  • RevenueCat is free up to $2,500 in monthly tracked revenue, then 1 percent, and webhooks are part of its Pro plan.

Pricing an app? Try the free app cost calculator or get a range for your project in the instant quote.

You've built an amazing app. Users love it. Now you need to make money from it, subscriptions, in-app purchases, premium features. Simple, right?

Not quite.

If you've ever tried to integrate payments across iOS, Android, and web, you know the pain:

  • iOS generally requires App Store In-App Purchases with StoreKit for digital goods, though apps on the US storefront can now include buttons and links to outside purchase methods
  • Android needs Google Play Billing
  • Web wants Stripe or another payment processor
  • macOS has its own App Store requirements
  • Each platform has different APIs, different validation flows, different receipt systems

Then there's the backend: webhooks, subscription management, grace periods, refunds, trials, notifications when payments succeed or fail… the list goes on.

Building payments across platforms from scratch can take weeks, and that's if nothing goes wrong. For a startup or indie developer, that's time you don't have and complexity you shouldn't have to wrestle with.

What if all of this was already done for you?

That's exactly what Template369 delivers: a complete, production-ready monetization stack with RevenueCat, Stripe, and Firebase, pre-integrated, tested, and documented.

The Payment Integration Problem: Why It's So Hard

Let's break down why payments across platforms are such a nightmare:

1. Platform-Specific APIs

Each platform speaks a different language:

  • iOS: StoreKit 2 (or StoreKit 1 for older versions)
  • Android: Google Play Billing Library (Google now requires version 8 or later for new apps and updates)
  • macOS: App Store with different receipt validation
  • Web: Stripe Checkout, Payment Intents, webhooks

You're not building one payment system, you're building four.

2. Backend Validation & Security

Processing payments on the client is dangerous. You need:

  • Server-side receipt validation, so clients cannot fake purchase status
  • Webhook handlers to catch payment events
  • Fraud detection and security measures
  • Database updates tied to payment status

This means building a backend, typically with Firebase Cloud Functions, AWS Lambda, or your own server.

3. Subscription Lifecycle Management

Subscriptions aren't "pay once and done." You have to handle:

  • Free trials starting and ending
  • Grace periods when payments fail
  • Subscription renewals and cancellations
  • Refunds and chargebacks
  • Subscription upgrades and downgrades
  • Family sharing (on Apple platforms)

Each scenario requires custom logic. Miss one edge case, and users get locked out, or worse, get free access when they shouldn't.

4. Cross-Platform Syncing

What happens when a user subscribes on iOS, then logs in on web? You need:

  • Shared user state across platforms
  • Real-time sync of subscription status
  • Server-side source of truth (Firestore, PostgreSQL, etc.)
  • Proper entitlement checks in your app

Without this, users pay on one platform but can't access features on another.

5. Notifications & User Communication

When payments succeed, fail, or subscriptions expire, users need to know:

  • Push notifications (Firebase Cloud Messaging)
  • Email alerts (SendGrid, Mailgun, etc.)
  • In-app messaging
  • Backend triggers tied to payment events

Coordinating this with webhooks and Cloud Functions is another layer of complexity.

Building all this from scratch takes weeks. And that assumes you already know what you're doing.

The Template369 Solution: Pre-Built, Production-Ready Monetization

Template369 eliminates all of this headache by giving you a complete monetization stack out of the box:

✅ RevenueCat for Mobile & macOS

RevenueCat is a popular SDK for managing in-app purchases across iOS, Android, and macOS. Template369 comes with RevenueCat fully integrated:

  • iOS In-App Purchases: StoreKit integration, receipt validation, subscription management
  • Android Google Play Billing: Google Play Billing through RevenueCat, purchase verification
  • macOS App Store: Full support for macOS subscriptions and purchases
  • Cross-Platform Sync: RevenueCat handles syncing purchase state across devices
  • Subscription Analytics: Built-in dashboards for revenue, churn, and retention
  • Webhook Integration: RevenueCat webhooks trigger Firebase Cloud Functions to update Firestore

RevenueCat wraps the Google Play Billing Library and App Store purchase SDKs behind one API, so you work with one interface instead of two.

✅ Stripe for Web Payments

For web subscriptions and one-time payments, Template369 uses Stripe, a widely used payment platform for developers:

  • Stripe Checkout: Pre-built, hosted checkout pages (or custom if you prefer)
  • Subscription Management: Recurring billing, trials, metered usage
  • One-Time Payments: For lifetime purchases or credits
  • Webhook Handlers: Firebase Cloud Functions listen for Stripe events (customer.subscription.created, invoice.paid, etc.)
  • Firestore Updates: Payment events automatically update user records in Firestore

Stripe has many moving parts to integrate correctly, such as webhooks and subscription states. Template369 gives you a starting point so you can focus on your product.

✅ Firebase Cloud Functions (TypeScript, Gen 2)

The backend is where the magic happens. Template369 includes TypeScript Cloud Functions (Gen 2) for:

  • RevenueCat Webhooks: When a user subscribes on iOS, Cloud Functions update their Firestore record
  • Stripe Webhooks: When a payment succeeds or fails, Cloud Functions handle it
  • Subscription State Management: Centralized logic for granting/revoking access
  • Automated Notifications: Trigger push notifications or emails based on payment events
  • Security: Server-side validation ensures client apps can't fake purchase status

No need to set up AWS Lambda, configure API Gateway, or wrestle with CORS. Firebase Cloud Functions are serverless, auto-scaling, and easy to deploy.

✅ Firebase Cloud Messaging (FCM) for Notifications

Stay connected with users through push notifications:

  • Payment Confirmations: "Your subscription is now active!"
  • Payment Failures: "Your payment failed, please update your card."
  • Subscription Expiry: "Your trial ends in 3 days."
  • Custom Triggers: Send notifications based on user actions or backend events

Template369 includes FCM integration with test flows so you can verify notifications work before launch.

✅ Firestore Database with Security Rules

All user data, subscription states, and payment records live in Firestore:

  • Pre-Configured Schema: User documents, subscription fields, payment history
  • Security Rules: Properly locked-down rules so users can't edit their own subscription status
  • Real-Time Sync: Changes to subscription state instantly reflect in your app
  • Scalable: Firestore scales automatically as your user base grows

No need to design your own schema or debug security rule edge cases. It's already done.

The Full Monetization Flow: How It All Works Together

Here's what happens when a user subscribes in Template369:

Scenario 1: User Subscribes on iOS

  1. User taps "Subscribe" in your Flutter app
  2. RevenueCat SDK handles the StoreKit purchase flow
  3. Apple processes the payment and issues a receipt
  4. RevenueCat validates the receipt server-side
  5. RevenueCat webhook fires and hits your Firebase Cloud Function
  6. Cloud Function updates Firestore: user.subscription.status = "active"
  7. Cloud Function sends FCM notification: "Your subscription is active!"
  8. App reads Firestore and unlocks premium features

Scenario 2: User Subscribes on Web

  1. User clicks "Subscribe" on your web app
  2. Stripe Checkout opens and user enters payment details
  3. Stripe processes the payment
  4. Stripe webhook fires (customer.subscription.created)
  5. Cloud Function updates Firestore: user.subscription.status = "active"
  6. Cloud Function sends email confirmation (optional)
  7. Web app refreshes and shows premium features

Scenario 3: Subscription Renewal (iOS or Web)

  1. Apple or Stripe automatically charges the user
  2. Webhook fires with renewal confirmation
  3. Cloud Function extends subscription: user.subscription.expiresAt = new Date() + 30 days
  4. Cloud Function sends "Thanks for renewing!" notification
  5. User keeps access without interruption

Scenario 4: Payment Failure

  1. Payment fails (expired card, insufficient funds, etc.)
  2. Webhook fires with failure event
  3. Cloud Function updates Firestore: user.subscription.status = "past_due"
  4. Cloud Function sends FCM notification: "Please update your payment method"
  5. App shows a banner prompting user to fix payment

All of this is built and tested in Template369. You just customize the messaging and branding.

What This Means for You: Ship Faster, Earn Revenue Sooner

Before Template369:

  • Spend weeks reading docs, integrating SDKs, and debugging webhooks
  • Hire a backend developer to build Cloud Functions
  • Test edge cases (trials, refunds, grace periods)
  • Hope you didn't miss a security hole

With Template369:

  • Get the template for $350 a year (or $34.99 a month)
  • Configure your RevenueCat and Stripe accounts (1-2 hours)
  • Deploy Cloud Functions to Firebase (30 minutes)
  • Customize pricing tiers and branding (1-2 days)
  • Launch in under a week

Who Is This For?

Template369's monetization stack is perfect if you're:

  • Building a SaaS app with subscriptions on iOS, Android, and web
  • An indie developer who wants to monetize without hiring a backend team
  • A startup that needs to prove revenue ASAP
  • An agency delivering client projects with payment integration
  • A technical founder who'd rather focus on features than payment plumbing

If your app needs to make money across multiple platforms, this is your shortcut.

Included: Full Documentation & Support

You're not just getting code, you're getting step-by-step guides at docs.template369.com:

  • RevenueCat Setup: Create account, configure products, integrate SDK
  • Stripe Setup: Set up Checkout, configure webhooks, test payments
  • Cloud Functions Deployment: Deploy, configure secrets, test webhooks
  • Firestore Configuration: Schema explanation, security rules walkthrough
  • FCM Testing: Send test notifications, verify delivery
  • Component Library: Pre-built payment screens and UI elements

Everything is documented, tested, and ready to customize.

Real-World Use Cases

SaaS App with Freemium Model

  • Free tier with limited features
  • Premium subscription unlocks full access
  • RevenueCat handles mobile subscriptions
  • Stripe handles web subscriptions
  • Firestore syncs state across platforms

Fitness App with Monthly Coaching

  • Users subscribe for $9.99/month
  • iOS and Android users pay via App Store / Google Play
  • Web users pay via Stripe
  • Cloud Functions unlock access to coaching content
  • FCM sends workout reminders

Productivity Tool with Lifetime Purchase

  • Users can buy lifetime access for $49.99
  • RevenueCat handles mobile purchases
  • Stripe handles web purchases
  • Firestore grants permanent premium status
  • No recurring billing complexity

The Template369 Advantage: Production-Ready, Not a Tutorial

Most payment tutorials and templates are "hello world" examples that break in production. Template369 is different:

  • Battle-Tested: Used by real apps in production
  • Complete: Not just the happy path, handles failures, refunds, edge cases
  • Secure: Server-side validation, proper security rules, webhook verification
  • Scalable: Built on Firebase, which scales automatically
  • Maintained: Modern architecture with TypeScript Cloud Functions Gen 2

You're getting production-grade code, not a toy example.

Stop Reinventing the Wheel, Start Earning Revenue

Payment integration is a solved problem. You shouldn't spend weeks rebuilding what already exists.

Template369 gives you the complete monetization stack, RevenueCat, Stripe, Firebase Cloud Functions, Firestore, and FCM, all integrated, tested, and documented.

For $350 a year (or $34.99 a month), you get:

  • ✅ Cross-platform payment integration (iOS, Android, web, macOS)
  • ✅ Backend infrastructure (Cloud Functions, webhooks, Firestore)
  • ✅ Subscription lifecycle management
  • ✅ Push notifications tied to payment events
  • ✅ Full documentation and setup guides

Skip the integration work and start from a working app.

Get Template369 Today

Ready to add payments to your Flutter app without the headache? Check out the Template369 docs to see the complete feature list, or grab the template and start building today.

Have questions about integrating payments into your app? Contact App369, I'm here to help you ship faster.

Frequently asked questions

What payment platforms does Template369 support?
Template369 integrates RevenueCat for iOS, Android, and macOS in-app purchases, plus Stripe for web subscriptions and one-time payments.
How long does it take to integrate payments with Template369?
You start from working payment code and configure your RevenueCat and Stripe accounts instead of writing the whole integration yourself.
Is the payment integration secure?
Card payments on the web go through Stripe, which is certified as a PCI Service Provider Level 1. Mobile purchases go through the App Store and Google Play. Template369 adds server-side logic in Firebase Cloud Functions and Firestore security rules.
What happens when a payment fails in Template369?
Cloud Functions update the Firestore subscription status and send FCM push notifications. Apple, Google Play and Stripe run their own payment retries and grace periods.
Do I need a backend developer to use Template369 payments?
Template369 includes TypeScript Firebase Cloud Functions (Gen 2) for webhooks, notifications, and database sync, so you start with a backend. You still need to deploy and maintain it, and Cloud Functions need a paid Firebase Blaze plan.
How much does Template369 cost?
Template369 costs $350 a year or $34.99 a month, as listed on its pricing page.

Sources

  1. Google Play Billing Library deprecation FAQ
  2. Apple App Store Review Guidelines
  3. Stripe security and PCI certification
  4. RevenueCat pricing
  5. RevenueCat webhooks
  6. Firebase pricing
  7. Template369 documentation: In-App Purchases
Tags
#RevenueCat integration #Stripe firebase integration #flutter payment template #mobile app monetization #in-app purchase boilerplate #flutter stripe template #firebase cloud functions #app subscription template #cross-platform payments #mobile payment integration
Share:

Related Resources

Related guides