Metered Billing with In App Subscriptions on App Stores - firebase

I have a service using Firebase with Stripe and metered billing. I charge customers for each document they have stored in their main Collection. However, in the signup process, they have to sign up on my web site and their users and admins download the app for free from the app stores to interact.
I'm thinking hard about punting the web site sign up and just going through the app stores and paying their fee. However, I can't seem to unlock how to charge a per seat metering based on my firebase collection list. The number of seats can vary from 1 - 1,000.
The way Stripe does this is quite easy, one bill to the customer, and I update the usage every night and it bills based on the highest reported number in the period. I see greater potential in creating signup in the app. However, I can't do that with Stripe, circumventing the app stores with my model...or at least I don't think I can, and I can't figure out a per seat metered subscription setup in the app stores.
Core question:
How could I get firebase metered stripe billing to pass through the app stores?
How can I set up in app subscriptions based on per seat metered billing from firebase data?
Maybe I can get away with this if I can demonstrate to the app stores that they lack the functionality?

Related

How many users can firebase handle?

I found online that firebase can only handle up to 100 users. Does this mean that after 100 users sign up, you will be forced to switch to a higher plan? That seems like a very low user count.
The limit you're referring to is the limit for the number of concurrently connected users to Firebase Realtime Database on the free Spark plan. Once you upgrade to a payment plan, your project will allow 200,000 simultaneously connected users. This is not the total number of users, just the number of them that are currently running your app. This limit does not apply to other Firebase products (there are over a dozen).
I suggest reading over the pricing page carefully to understand the limits for paid and unpaid projects, for each of the individual Firebase products.

Firebase "Blaze" projects limit, multiple env and Spark plan outbound requests

I'm working with Firebase and quite enjoying it so far.
I'm working with DEV, PREPROD and PROD environments for each of my projects. For each env I've had to create a distinct firebase project.
Since my app is using Algolia and Cloud vision API, I apparently have to be on the Blaze plan because Spark plan doesn't allow outbound requests and Cloud vision API calls (if I'm correct).
The thing is we're limited with the numbers of Blaze projects we can have at the same time. Above a certain amount (6 or 7, I think) we have to request a "billing quota increase" and explain why we need more (sounds odd but ok).
So I did, but now Firebase is asking for a $50 transaction to increase the number of Blaze projects I can have.
So I have several questions:
- Am I right to think that in Spark plan I can't call the Algolia API in my cloud functions or call Cloud vision API ?
- Are these $50 a payment to unlock new projects slots or just credits that will be available if needed ?
- If I need even more projects in the future will I have to pay even more credits ?
- How am I supposed to handle separate environments on Firebase without creating a different project each time ?
Thanks a lot
On the Spark plan, with Cloud Functions, you can only make outgoing connections to services that Google fully controls. Algolia will not work.
Please read the FAQ regarding the number of projects you may have and the payment being asked to create a new project:
Why am I being asked to make a payment for more projects?
You may be asked to make a payment if your request for more projects
indicates that you need projects that will use paid cloud services.
The payment can be applied to any charges you incur in the future and
will be visible as a credit in your account.
This payment is required to ensure paid services will be available for
the projects you requested in the quota increase request form. This is
a common requirement, because Google Cloud Platform services are paid
(e.g., Compute Engine, Cloud SQL, and BigQuery).
The payment required varies depending on your billing history, the use
cases described in your request form, the number of projects you
request, and other factors.
So, the $50 you are being asked to pay will apply as credit to your project billing.
You should definitely create new projects for each environment.

Firebase Analytics: Retention criteria

I am looking into using Firebase Analytics for my apps. I'm curious:
What are the criteria for which retention is based on? Does retention track user accounts with a unique id that I'd have to send, or unique device?
How would I control for this if, say, a user logs into my app from multiple devices? I'd want to make sure a user's retention is applied from those multiple devices.
The Firebase SDK library uses an app-instance identifier to Identify a unique installation of the App. When using the SDK, an app-instance identifier gets generated at the app level (Source: https://support.google.com/firebase/answer/6318039?hl=en).
There is also a thing called User Properties that you can use to have a better understanding about unique users i.e. users that signed into your app (Source: https://firebase.google.com/docs/auth/users)

Firebase: Data structuring query

I am a newbie to firebase and need some suggestions on structuring data.
I am designing a database for an application where multiple people may share a bank account and can update the status of this account. The group of people sharing this account may also keep changing. So, multiple people may perform actions which will influence the balance available in an account. I decided to list the linked accounts under each user so that one pull is enough to get a list of all user accounts once user logs in. If user is interested in details of a specific account (like balance) then I will go and fetch that child from accounts sub-tree. It all seems fine until I think about notifying users in a smartphone app if the balance associated with any of their linked account changes. Since the balance attribute is not under any specific "user" sub-tree, how to monitor for this change at the application level.
I don't want to bring balance attribute under "user" sub-tree or else I will have to find the duplicate copies and update all of them whenever balance of an account changes. Moreover this approach will not scale well.
Any suggestion?

Firebase payment gateways?

I'm currently evaluating whether Firebase will be suitable for an app I am making. The only potential sticking point I have found is taking payments - what are the options currently available?
Firebase is a real-time data store, focused on lightning-fast, scalable solutions for sharing data between hundreds to millions of clients simultaneously. It does not offer any payment processing solutions internally.
A third party service like Stripe will integrate quite easily with Firebase, and tools like Zapier can help with pushing data from Stripe back into Firebase upon completion of transactions.
Generally, the process looks something like this:
User initiates transaction on your site
Client code sends them to Stripe to enter their CC info
Client code obtains a token representing the secure transaction
A server process is notified by stripe when the transaction is validated
The sever submits the payment authorization with the token
Stripe sends a transaction receipt to the server process or Zapier, which would be stored back in Firebase
An advantage of this approach is that your are not storing any credit card or sensitive data and therefore are not subject to PCI compliance and stringent bank/e-commerce regulations.

Resources