This guide explains how to configure Stripe with your white label app to handle subscriptions, free trials, and customer management. Follow the steps in order for a smooth setup.
What you can configure
- Enable/disable free trials
- Define trial duration (e.g. 7 days)
- Require or skip credit card validation during trial
How the funnel works
The onboarding funnel moves customers through:
- Website →
- Registration →
- Payment (Stripe)
✅ Green: starting point
🔵 Blue: ending point
Step 1 - Set up Product & Price in Stripe
To ensure the system knows how many seats to assign per subscription, you must set metadata. You can find them here.
-
Metadata format: key–value pair
-
Key =
seats -
Value = number of seats provided
Examples:
- Product:
https://dashboard.stripe.com/products/prod_xxxxx - Price:
https://dashboard.stripe.com/prices/price_xxxxx
⚠️ Without this metadata, seats will not be provisioned automatically.
Step 2 - Display product/price in the Billing Page
Your app pulls product details directly from Stripe.
Only products with type = subscription will appear.
Create a Product
-
Log in to your Stripe Dashboard.
-
Create a Product.
-
In Product Metadata, add:
-
type = subscription
Add a Price
- Every product must include one price.
- Configure the Price Metadata fields below.
🧾 Metadata Fields for Prices
Use these metadata keys in Stripe for proper display:
Field
Type
Description
Example
active
Boolean
Show/hide this price
true
buttonCTA
JSON
Subscription button text
{ "en": "Subscribe Now", "fr": "S'abonner" }
buttonCTAFreeTrial
JSON
Button text with trial duration ({{freeTrial}})
{ "en": "Start {{freeTrial}} Free Trial" }
colored
Boolean
Highlight plan card
true
features.0
JSON
First feature
{ "en": "Access to all courses" }
features.1
JSON
Second feature
{ "en": "Priority support" }
features.2
JSON
Third feature
{ "en": "Cancel anytime" }
featuresTitle
JSON
Section heading
{ "en": "What's included" }
group
JSON
Category tab
{ "en": "Business [Best Deal]" }
groupOrder
Number
Order of groups
1
order
Number
Card order inside group
2
price
JSON
Displayed price
{ "en": "$199 / month" }
subtitle
JSON
Small description
{ "en": "Best for startups" }
title
JSON
Plan title
{ "en": "Business 1 Month" }
Notes
type = subscriptionis required.- Firestore syncs Stripe metadata automatically → updates appear in real time.
- All JSON must be valid for translations to work.
⚠️ Caution — Removing Metadata
To remove a metadata field safely:
- Edit the price metadata.
- Set the field value to null.
- Save.
- Edit again → delete field → Save.
If you skip step 2, the front-end may still display outdated data.
🤖 Use AI to generate Metadata JSON
You can use AI to instantly generate multilingual JSON.
Prompt Example:
Translate and format the following pricing details into JSON format for English (en), French (fr), and Dutch (nl). Ensure each result is returned separately for easy copying.Here are the values I want to translate:- buttonCTA: [INSERT VALUE]- buttonCTAFreeTrial (use {{freeTrial}} as a placeholder for the trial duration): [INSERT VALUE]- features.0: [INSERT VALUE]- features.1: [INSERT VALUE]- features.2: [INSERT VALUE]- featuresTitle: [INSERT VALUE]- group: [INSERT VALUE]- price: [INSERT VALUE]- subtitle: [INSERT VALUE]- title: [INSERT VALUE]**Return the JSON output in the following format for easy copying:** buttonCTA { "en": "Translated Value", "fr": "Translated Value", "nl": "Translated Value" } buttonCTAFreeTrial{ "en": "Translated Value", "fr": "Translated Value", "nl": "Translated Value" }
How to merge subscriptions between Stripe customers
Sometimes customers pay with a different email than the one they registered with in your app. This breaks the automatic link between Stripe and your app user.
Here’s how to merge them:
- In your app, go to Agents → find the user → copy Owner email address.
- In Stripe, search this email → open customer → copy metadata
firebaseUID.
-
In Stripe, search for the other email used for payment.
-
For example, in this case, we can see that there’s no metadata set. If not, ensure your customer do not need this account anymore.
-
Open customer → edit metadata → add:
-
Key =
firebaseUID -
Value = copied UID (e.g.
6fA2rj7qoTPeQcs2aVDBWsyRTZQ2)
- Save.
✅ The subscription seats are now linked to the correct main account.
✅ Summary
By correctly setting metadata in Stripe, your SalesMind AI whitelabel app will:
- Display subscription plans in-app
- Support multilingual pricing & trials
- Sync changes in real time
- Allow you to merge duplicate Stripe customers