Skip to main content

Products = Revenue

Products are what you sell. One-time payment or subscription. We handle the rest.

Two Types

One-Time

Customer pays once. Done.
  • Digital downloads
  • Lifetime licenses
  • Templates, courses, assets

Subscription

Customer pays on schedule.
  • SaaS plans
  • Memberships
  • Service retainers

Create a Product

Dashboard —> Products —> Create Product
{
  "storeId": "your-store-uuid",
  "name": "Pro Plan",
  "prices": {
    "USD": { "amount": 2900, "taxIncluded": false, "taxCategory": "saas" }
  }
}
Done. You get a checkout URL. Share it anywhere.

Product Fields

Required

FieldWhat It Is
NameWhat customers see
PriceHow much you charge (smallest unit)
CurrencyUSD, EUR, GBP, CNY, JPY, HKD, etc.
TypeOne-time or Subscription
Tax CategorySaaS, Digital Goods, Software, etc.

Optional

FieldDefaultPurpose
DescriptionMarkdown. Sell your product.
Image400x400px recommended
Success URLRedirect after purchase
MetadataCustom key-value data

Multi-Currency Pricing

Set different prices for different currencies:
{
  "USD": { "amount": 2900, "taxIncluded": false, "taxCategory": "saas" },
  "EUR": { "amount": 2700, "taxIncluded": true, "taxCategory": "saas" },
  "JPY": { "amount": 4500, "taxIncluded": true, "taxCategory": "saas" }
}
Amounts are in smallest currency unit. 2900 USD = $29.00. 4500 JPY = ¥4500.

Billing Intervals

IntervalWhenBest For
WeeklyEvery 7 daysHigh-usage products
MonthlyEvery monthStandard SaaS
QuarterlyEvery 3 monthsB2B software
YearlyEvery 12 monthsCommitted customers
Annual plans with 15-20% discount = lower churn + better cash flow.

Checkout URLs are generated by creating a checkout session via the API:
POST /v1/actions/checkout/create-session
The resulting checkout URL follows this structure:
/store/{store-slug}/checkout/{sessionId}
Share it anywhere:
  • Website button
  • Twitter bio
  • Email signature
  • Discord server
Generating Checkout URLs:
  • Dashboard: Click “Copy Link” on any product
  • API: Create a checkout session with the product ID
Test vs Live:
  • Toggle Test Mode in Dashboard header
  • Test mode generates test checkout sessions

Product Status

Active

Live. Customers can buy.

Inactive

Hidden. Existing subscriptions continue.

Updating Products

Products use immutable versioning:
Updates create new versions. Existing subscriptions keep their original version.
FieldImpact
Name/DescriptionCreates new version
ImageCreates new version
PriceNew purchases only
IntervalCannot change after creation

Environment Sync

Sync product versions between test and production:
POST /v1/actions/onetime-product/merge-product
{
  "id": "product-id",
  "fromEnvironment": "test",
  "toEnvironment": "prod"
}

Product Tiers (Subscriptions)

For subscription products, tiers are built-in:
{
  "tiers": [
    {
      "tierKey": "starter",
      "tierName": "Starter",
      "prices": { "USD": { "amount": 900, "taxIncluded": false, "taxCategory": "saas" } },
      "features": ["5 projects", "Basic support"]
    },
    {
      "tierKey": "pro",
      "tierName": "Pro",
      "prices": { "USD": { "amount": 2900, "taxIncluded": false, "taxCategory": "saas" } },
      "features": ["Unlimited projects", "Priority support"]
    }
  ]
}
Tier Management:
  • Customers can upgrade/downgrade via Customer Portal
  • Upgrade: Charged difference immediately
  • Downgrade: Effective at period end

Best Practices

Include billing period:
  • “Pro Plan - Monthly”
  • “Pro Plan - Annual (Save 20%)”
  • Round numbers (29,not29, not 28.73)
  • Annual discount (15-20%)
  • Research competitors
  • 400x400px minimum
  • PNG or JPG
  • Under 2MB