Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.launchmystore.io/llms.txt

Use this file to discover all available pages before exploring further.

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:
{
  "pricing": {
    "model": "free"
  }
}
Use cases:
  • 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:
{
  "pricing": {
    "model": "one_time",
    "price": 4900,  // $49.00 USD
    "currency": "USD"
  }
}
Use cases:
  • Theme modifications
  • One-time setup tools
  • Templates and presets
  • Migration utilities
Considerations:
  • No recurring revenue
  • Customer expects lifetime updates
  • Lower total revenue per customer
  • No ongoing relationship

Recurring Subscription

Monthly or annual billing, the most common model:
{
  "pricing": {
    "model": "recurring",
    "plans": [
      {
        "id": "basic",
        "name": "Basic",
        "price": 999,      // $9.99/month
        "interval": "month",
        "features": [
          "Up to 100 orders/month",
          "Basic reports",
          "Email support"
        ]
      },
      {
        "id": "pro",
        "name": "Pro",
        "price": 2999,     // $29.99/month
        "interval": "month",
        "features": [
          "Unlimited orders",
          "Advanced analytics",
          "Priority support",
          "Custom branding"
        ]
      },
      {
        "id": "enterprise",
        "name": "Enterprise",
        "price": 9999,     // $99.99/month
        "interval": "month",
        "features": [
          "Everything in Pro",
          "Dedicated account manager",
          "SLA guarantee",
          "Custom integrations"
        ]
      }
    ]
  }
}

Annual Billing

Offer discounts for annual commitment:
{
  "pricing": {
    "model": "recurring",
    "plans": [
      {
        "id": "pro_monthly",
        "name": "Pro Monthly",
        "price": 2999,
        "interval": "month"
      },
      {
        "id": "pro_annual",
        "name": "Pro Annual",
        "price": 29990,    // $299.90/year (2 months free)
        "interval": "year",
        "savings": "Save 17%"
      }
    ]
  }
}

Free Trial

Let merchants try before buying:
{
  "pricing": {
    "model": "recurring",
    "trial": {
      "days": 14,
      "requirePaymentMethod": false
    },
    "plans": [
      {
        "id": "pro",
        "name": "Pro",
        "price": 2999,
        "interval": "month"
      }
    ]
  }
}
Trial options:
OptionDescription
daysTrial duration (7, 14, or 30 days)
requirePaymentMethodRequire card upfront (reduces cancellations)

Usage-Based Pricing

Charge based on actual usage:
{
  "pricing": {
    "model": "usage_based",
    "metrics": [
      {
        "id": "orders",
        "name": "Orders Processed",
        "unitPrice": 5,     // $0.05 per order
        "includedUnits": 100,  // First 100 free
        "tiers": [
          { "upTo": 1000, "unitPrice": 5 },
          { "upTo": 10000, "unitPrice": 3 },
          { "upTo": null, "unitPrice": 1 }  // 10k+ at $0.01
        ]
      }
    ],
    "minimumCharge": 499   // $4.99 minimum per month
  }
}
See Usage-Based Billing for detailed implementation.

Hybrid Models

Combine models for flexibility:

Freemium

Free tier with paid upgrades:
{
  "pricing": {
    "model": "recurring",
    "plans": [
      {
        "id": "free",
        "name": "Free",
        "price": 0,
        "interval": "month",
        "features": [
          "Up to 50 orders/month",
          "Basic features"
        ],
        "limits": {
          "orders": 50
        }
      },
      {
        "id": "pro",
        "name": "Pro",
        "price": 1999,
        "interval": "month",
        "features": [
          "Unlimited orders",
          "All features"
        ]
      }
    ]
  }
}

Base + Usage

Base subscription plus usage fees:
{
  "pricing": {
    "model": "hybrid",
    "base": {
      "price": 999,
      "interval": "month",
      "name": "Platform Fee"
    },
    "usage": {
      "metrics": [
        {
          "id": "sms",
          "name": "SMS Sent",
          "unitPrice": 2,  // $0.02 per SMS
          "includedUnits": 500
        }
      ]
    }
  }
}

Pricing Best Practices

Show a premium tier even if most customers choose the middle option. It makes the mid-tier feel like a good value.
If offering freemium, make sure the free tier has meaningful limits that encourage upgrades as the merchant grows.
15-20% annual discount reduces churn and improves cash flow. Frame it as “2 months free.”
2-3 tiers is ideal. More than 4 creates decision paralysis.
Price based on the value you create, not your costs. A 50/monthappthatsaves50/month app that saves 500/month is a good deal.
A/B test pricing pages. Small changes can significantly impact conversion.

Displaying Pricing

Use the pricing display components in your app listing:
import { PricingTable } from '@launchmystore/app-store-components';

function AppListing() {
  return (
    <PricingTable
      plans={[
        {
          name: 'Basic',
          price: '$9.99/mo',
          features: ['Feature 1', 'Feature 2'],
          cta: 'Start Free Trial'
        },
        {
          name: 'Pro',
          price: '$29.99/mo',
          features: ['All Basic features', 'Feature 3', 'Feature 4'],
          cta: 'Start Free Trial',
          popular: true
        }
      ]}
    />
  );
}

Price Changes

When changing prices for existing customers:
  1. Grandfather existing customers - Keep them on old pricing
  2. Give notice - 30 days minimum for price increases
  3. Explain value - Communicate what’s improved
// Check if customer is on legacy pricing
async function getEffectivePrice(shopId) {
  const subscription = await getSubscription(shopId);
  
  if (subscription.legacyPlan) {
    return subscription.legacyPlan.price;
  }
  
  return currentPricing[subscription.planId].price;
}

Currency Support

LaunchMyStore supports multiple currencies:
{
  "pricing": {
    "model": "recurring",
    "defaultCurrency": "USD",
    "plans": [
      {
        "id": "pro",
        "name": "Pro",
        "prices": {
          "USD": 2999,
          "EUR": 2799,
          "GBP": 2499,
          "INR": 199900
        },
        "interval": "month"
      }
    ]
  }
}
Merchants see prices in their local currency when available.

Revenue Share

LaunchMyStore takes a percentage of app revenue:
App TypeRevenue Share
Public apps20%
First-party apps0%
Private apps0%
Revenue share is calculated on gross revenue before refunds.

See Also