Publishing to Stripe App Marketplace
Publishing your Stripe App to the marketplace makes it available to all Stripe users. This guide covers the requirements, preparation steps, and submission process.
Prerequisites
Before you can publish an app to the Stripe App Marketplace, you must meet these requirements:
- Activated Stripe account: Your account cannot be restricted to test mode only
- One app per account: Each Stripe account can only publish one public app to the marketplace
- English only: All app content, UI text, and listing information must be in English
- Completed app: Your app must be fully functional and tested
Caution
If you need to publish multiple apps, you must create separate Stripe accounts for each one.
Publishing Steps
Step 1: Update Your Manifest
Set the distribution_type in your stripe-app.json to public:
{ "id": "com.tajo.brevo-integration", "version": "1.0.0", "name": "Tajo Brevo Integration", "icon": "./icon.png", "distribution_type": "public", "permissions": [ { "permission": "customer_read", "purpose": "Sync customer data to Brevo contacts" }, { "permission": "customer_write", "purpose": "Update customer metadata with Brevo sync status" }, { "permission": "event_read", "purpose": "Track payment and subscription events for Brevo automation" } ]}Step 2: Prepare Your App
Ensure your app meets all review requirements before submitting:
- Test thoroughly in both live and sandbox modes
- Verify all permissions are necessary and documented
- Confirm error handling and loading states are implemented
- Check that all UI text is in English
Step 3: Upload Your App
Use the Stripe CLI to upload your app:
# Upload your app to Stripestripe apps upload
# Verify the uploadstripe apps versions listStep 4: Write Your Listing
Navigate to the Stripe Dashboard to complete your app listing. All listing fields are required for marketplace submission.
Step 5: Submit for Review
After completing your listing, submit the app for review through the Stripe Dashboard. The Stripe team will evaluate your app against the quality requirements.
Step 6: Publish
Once approved, you can publish your app to make it available on the marketplace.
Manifest Setup for Public Distribution
The manifest must include distribution_type: "public" and declare all required permissions with clear purpose descriptions:
{ "id": "com.tajo.brevo-integration", "version": "1.2.0", "name": "Tajo for Brevo", "icon": "./assets/icon.png", "distribution_type": "public", "stripe_api_access_type": "oauth", "allowed_redirect_uris": [ "https://tajo.io/stripe/callback" ], "permissions": [ { "permission": "customer_read", "purpose": "Read customer profiles to sync with Brevo contacts" }, { "permission": "customer_write", "purpose": "Write sync metadata to customer records" }, { "permission": "charge_read", "purpose": "Access payment data for Brevo event tracking" }, { "permission": "event_read", "purpose": "Subscribe to Stripe events for real-time Brevo sync" }, { "permission": "product_read", "purpose": "Sync product catalog to Brevo for campaign personalization" }, { "permission": "invoice_read", "purpose": "Track invoice events for Brevo transactional emails" } ], "ui_extension": { "views": [ { "viewport": "stripe.dashboard.customer.detail", "component": "CustomerDetailView" }, { "viewport": "stripe.dashboard.home.overview", "component": "OverviewView" } ] }, "post_install_action": { "type": "onboarding" }}Upload the configured app with:
stripe apps uploadListing Requirements
Your app listing must include all of the following fields:
| Field | Requirements | Details |
|---|---|---|
| Name | Max 35 characters | The display name shown on the marketplace |
| Icon | 300x300 pixels, PNG or SVG | Square icon, no rounded corners (Stripe adds them) |
| Built by | Company or developer name | Displayed below the app name |
| Category | Select from Stripe’s categories | Choose the most relevant category for your app |
| Subtitle | Max 80 characters | Brief tagline shown in search results |
| About | Max 1,000 characters | Detailed description of what your app does |
| Key Features | Up to 5, with images | Highlight main features with screenshots or diagrams |
| Pricing | Free, paid, or freemium | Clearly state pricing model and any costs |
| Support | Contact URL or email | Where users can get help with your app |
| Privacy Policy | URL to privacy policy | Required legal document for data handling |
Name Guidelines
- Must be unique on the marketplace
- Should clearly identify your app’s purpose
- Avoid generic terms that could confuse users
- Example: “Tajo for Brevo” (15 characters)
Icon Guidelines
- Dimensions: exactly 300x300 pixels
- Format: PNG or SVG
- Do not add rounded corners — Stripe applies them automatically
- Use a clear, recognizable logo or symbol
- Ensure legibility at small sizes
About Section
Write a compelling description that covers:
- What problem your app solves
- Key integration capabilities
- Who the app is designed for
- Any prerequisites or requirements
Example:
Tajo for Brevo connects your Stripe payment data with Brevo’s marketing automation platform. Automatically sync customers, track payment events, and trigger personalized email, SMS, and WhatsApp campaigns based on real-time purchase behavior. Built for ecommerce businesses that want to maximize customer lifetime value through data-driven retention marketing.
Key Features
Each key feature entry includes:
- Title: Short feature name
- Description: One to two sentences explaining the feature
- Image: Screenshot or diagram (recommended 1600x900 pixels)
Recommended features for the Tajo Brevo integration:
- Real-time Customer Sync — Automatically sync Stripe customer profiles to Brevo contacts with full purchase history
- Event-Driven Automation — Trigger Brevo workflows from Stripe events like successful payments, subscription changes, and refunds
- Product Catalog Sync — Keep your Brevo product catalog in sync with Stripe for personalized campaign content
- Multi-Channel Campaigns — Use synced data to power targeted email, SMS, and WhatsApp campaigns
- Dashboard Insights — View Brevo engagement metrics directly in the Stripe Dashboard customer view
Pricing Information
Clearly communicate your pricing model:
- Free: No cost to install or use
- Paid: State the price and billing frequency
- Freemium: Describe what’s included free and what requires payment
- Usage-based: Explain the pricing tiers or per-unit costs
Testing Your App
Before submission, thoroughly test your app:
Test in Sandbox Mode
# Start your app in test modestripe apps start --mode test
# Verify sandbox compatibilitystripe apps validateTest Credentials Format
When providing test credentials for the review team, use this format:
Test Account Credentials========================Platform: TajoURL: https://app.tajo.io/testEmail: [email protected]Password: [secure test password]
Brevo Test API Key: xkeysib-test-xxxxxxxxxxxx
Required Setup Steps:1. Log in to the Tajo test account2. Navigate to Settings > Integrations > Brevo3. The Brevo API key is pre-configured4. Install the Stripe App from the test link provided
Expected Behavior:- Customer sync should begin within 60 seconds of installation- Navigate to any Stripe customer to see Brevo contact data- Create a test payment to verify event sync to BrevoReview Checklist
Before submitting, verify:
- App works in both live and test modes
- All permissions have clear purpose descriptions
- Error states are handled gracefully
- Loading states are shown for async operations
- No hardcoded test data in the production build
- Privacy policy URL is accessible and accurate
- Support contact information is valid
- All listing images meet dimension requirements
- App description accurately reflects functionality
After Submission
The Stripe review team typically responds within 5-10 business days. They may:
- Approve your app for publication
- Request changes with specific feedback
- Reject the app if it doesn’t meet requirements
If changes are requested, address all feedback and resubmit. Each resubmission goes through the full review cycle.
Updating a Published App
To update an already-published app:
- Increment the version in
stripe-app.json - Upload the new version:
stripe apps upload - Submit the update for review
- Once approved, the update is automatically deployed to all users
Tip
Minor bug fixes and non-functional changes may receive expedited review. Major feature additions or permission changes require full review.