App Pricing Models
LaunchMyStore supports multiple pricing models for your app. Choose the model that best fits your value proposition and customer expectations.Available Models
Free
No charge. Good for lead generation or basic utility apps.
One-Time
Single payment for lifetime access. Good for tools and templates.
Recurring
Monthly or annual subscription. Most common for feature-rich apps.
Usage-Based
Pay per use (API calls, orders, etc.). Good for volume-dependent apps.
Free Apps
Free apps don’t charge merchants but can still generate value:- Lead generation for your other products
- Simple utilities that build goodwill
- Apps funded by other revenue (affiliate, data)
- Open source projects
Free apps are great for building reputation in the marketplace. Many developers start free and add paid tiers later.
One-Time Purchase
Single payment for permanent access:- Theme modifications
- One-time setup tools
- Templates and presets
- Migration utilities
- No recurring revenue
- Customer expects lifetime updates
- Lower total revenue per customer
- No ongoing relationship
Recurring Subscription
Monthly and/or annual billing, the most common model. A single app has one subscription price (there are no built-in multi-tier plans — model your tiers as feature gates inside the app, or as separate apps):Annual Billing
Offer an annual price alongside (or instead of) the monthly one. When both are present, the merchant picks the interval at install:Free Trial
AddtrialDays to a subscription. During the trial the install is fully
functional; the first charge lands when the trial ends:
trialDays is the only trial control — there is no requirePaymentMethod
option. The install row is created immediately in trial state and the
merchant uses the app during the trial; the subscription’s first
invoice.paid flips it to active. If the merchant never completes the
Stripe checkout that creates the subscription, the trial simply lapses with
no charge.Usage-Based Pricing
Charge per real-world event — per SMS sent, per AI generation, per shipping label printed. Declared as ausage block on a recurring
plan (LaunchMyStore does not have a standalone usage_based model —
metered always rides on top of a Stripe subscription, even if the flat
monthly price is 0):
cappedAmount = $50 default monthly limit), idempotent
event reporting, and end-of-period invoice handling are wired into the
platform.
See Usage-Based Billing for the full event →
invoice flow and Usage Records API
for endpoint references.
Hybrid Models
Combine models for flexibility:Freemium
Thefreemium model installs free (no charge, no Stripe checkout at
install), and your app gates premium features itself. There are no
platform-managed plan tiers — enforce the free-vs-paid limits in your own
backend, and drive an upgrade through a separate paid subscription or the
usage/billing APIs:
Base + Usage
Flat monthly subscription plus a per-event metered component — this is the most common shape. Both items appear on one Stripe subscription; the merchant sees a combined invoice each period.POST /api/v1/billing/usage call adds one UsageRecord to the
Stripe metered item; at period end Stripe sums the records, multiplies
by unitAmount, and bills monthlyPrice + total_usage.
Pricing Best Practices
Anchor with a higher tier
Anchor with a higher tier
Show a premium tier even if most customers choose the middle option. It makes the mid-tier feel like a good value.
Limit the free tier
Limit the free tier
If offering freemium, make sure the free tier has meaningful limits that encourage upgrades as the merchant grows.
Offer annual discounts
Offer annual discounts
15-20% annual discount reduces churn and improves cash flow. Frame it as “2 months free.”
Avoid too many tiers
Avoid too many tiers
2-3 tiers is ideal. More than 4 creates decision paralysis.
Price based on value
Price based on value
Price based on the value you create, not your costs. A 500/month is a good deal.
Test pricing
Test pricing
A/B test pricing pages. Small changes can significantly impact conversion.
Displaying Pricing
You don’t build a pricing table. The marketplace listing and the install consent screen render your price automatically from thepricing object
you set in the Developer Portal (or via create_app) — merchants see the
monthly/yearly/one-time amount and any trial before they install. Keep the
pricing fields accurate and the platform handles the display.
Failed Payments & Grace Period
For platform-billed subscriptions (recurring/usage pricing via LaunchMyStore), the platform manages the dunning lifecycle for you:- Payment fails → the installation’s
billingStatusbecomespast_due, but your app keeps working — a 7-day grace window opens. You receive anapp_subscriptions/updatewebhook withgraceEndsAt. - Payment recovers inside the window (Stripe retries, or the merchant
fixes their card) →
billingStatusreturns toactiveautomatically; anotherapp_subscriptions/updateconfirms it. - Grace expires → the installation is disabled: API access tokens,
session-token minting and all extensions stop working. Webhook fires
with
reason: "billing_grace_expired". - Merchant cancels → service continues until the end of the paid
period (
reason: "cancel_scheduled"), then the installation is disabled when Stripe finalizes the cancellation. - Any later successful payment re-enables the installation — treat
disable as a pause, not an uninstall. Do not delete merchant data
on disable;
shop/redactafter uninstall is the data-deletion signal.
app_subscriptions/update
for payload details.
Price Changes
When changing prices for existing customers:- Grandfather existing customers - Keep them on old pricing
- Give notice - 30 days minimum for price increases
- Explain value - Communicate what’s improved
Currency Support
Each app declares a single billing currency via thecurrency field
(ISO-4217). All merchants are charged in that currency — there is no
per-currency price map and no defaultCurrency field:
Revenue Share
LaunchMyStore takes a percentage of app revenue:
Revenue share is calculated on gross revenue before refunds.
See Also
- Stripe Integration - Set up payments
- Usage-Based Billing - Implement usage metering