Configure Your Marketplace App Pricing
Configuring Your App's Pricing
You can set up how your app is monetized by navigating to your app within the Marketplace developer portal. From your app's main menu, select the Pricing option to access all configuration settings.
Choosing a Payment Collection Method
You have two primary options for handling payments for your app.
Internal Payment Collection (Recommended)
This is the recommended approach. When enabled, customers pay for your app directly within the CRM platform. This method provides several advantages:
- The platform manages all payment processing and ensures you receive timely payouts.
- Agencies can easily resell your app to their own clients, increasing its reach.
- You gain access to built-in features like free trials.
- Payment collection and reconciliation are handled automatically.
External Payment Page
With this option, you manage payments on your own platform. During installation, customers will be redirected to a payment page URL you provide. The app will only install in their account after a successful payment on your external site.
Important Considerations:
- You can switch from an external payment page to the internal platform method later. However, once you are live with internal collection, you cannot revert to an external page without deleting and recreating the app.
- Agencies cannot resell apps that use an external payment page, which may limit your app's distribution.
Available Pricing Models
You can configure your app using one of several pricing models through Pricing Plans:
- Free: The app is available at no cost.
- Paid - Subscription: Customers pay a recurring fee (e.g., monthly or yearly).
- Paid - One-time: Customers pay a single, upfront fee.
- Freemium: A combination of free and paid plans, offering different feature tiers.
You can optionally add a free trial period to any of these paid models.
Setting Up Usage-Based (Dynamic) Pricing
For developers offering services where costs vary by usage, you can set up dynamic pricing.
Step 1: Configure Your Billing Meter
Navigate to your app's Pricing section and select Billing Meters. Create or edit a meter with the Module Type set to Custom Event (API). Configure the following:
- Set the Price Type to Dynamic.
- Define a Minimum and Maximum price per unit.
- Enter a Default Price per Unit to be used if a specific price isn't provided via API.
- Add a Pricing Page URL (recommended) where users can see detailed pricing information.
Step 2: Charge via API
Use the existing Create Wallet Charge API to bill for usage. You can include an optional price field in the API call to apply a dynamic, per-unit price for that specific charge. If you omit this field, the meter's Default Price per Unit will be applied automatically.
Pricing for Agencies and Reselling
When an agency views your app's pricing, they will see the price range for any dynamic meters and a link to the Pricing Page URL. Note that this URL is only visible to agency administrators, not to their sub-accounts.
Agencies can apply a flat markup per unit when reselling your app. Because this markup changes the final price the end user pays, the Pricing Page URL is hidden from sub-accounts to prevent confusion.
Offering Free Trials
You can offer a full-featured free trial for 1 to 90 days to help users adopt your app. The paid subscription will start automatically when the trial ends.
Key Points on Free Trials:
- Free trial configuration is set at the app level and applies to all pricing plans within the app.
- A user can only use a free trial once per app within a 90-day period.
- Users receive a notification 24 hours before their trial ends, alerting them to upcoming charges.
- If a payment fails after the trial, the system will notify the user and attempt to charge them again for three consecutive days.
Payment Failure Recovery
For paid apps using the internal payment system, the platform uses a recovery flow for failed charges. Instead of immediately pausing the app, users enter a 30-day grace period. During this time, the system will automatically retry the payment. This helps reduce accidental loss of users and gives them time to resolve billing issues before their access is interrupted.