Sell an app
Setprice and pricing_type on cpsl.App.
price is in cents. 1500 means $15.00.
Supported pricing types:
| Value | Meaning |
|---|---|
"one_time" | The user pays once for app access |
"monthly" | The user subscribes monthly for app access |
price is 0, the app is treated as free.
Apply pricing changes
Pricing is part of the app definition. The next time you deploy the app, Capsule applies the currentprice and pricing_type values.
The deploy output also shows the configured price.
User checkout
When an external user opens your paid app without access, Capsule starts a checkout flow. The hosted app redirects the user to Stripe Checkout. After success, Capsule grants that user access to your app. If you need to create a checkout link from a script or backend service, usecpsl.Client.create_checkout(...).
Access after payment
Paid apps still use normal app-scoped identity. After checkout:- the external user signs into the app user pool
- Capsule records access for that app
session.userandctx.useridentify the signed-in app useraccess="authenticated"pages continue to use the same auth gate
Your payouts
App sales use Stripe Connect to pay you out. Set up payouts from the Capsule console under Settings → Usage & Billing. Once onboarding is complete, new app checkout sessions can route your share to your connected payout account and apply Capsule’s platform fee during checkout.Platform fee
Capsule takes a platform fee when external users pay for your app. Current platform fee:$15.00 app sale:
| Amount | Value |
|---|---|
| Gross payment | $15.00 |
| Platform fee | $1.50 |
| Your amount | $13.50 |
Payout states
In the payments UI, payouts are shown in a few practical states:| Status | Meaning |
|---|---|
| Paid out | The payment has been routed or transferred to your connected account |
| Needs onboarding | You have not completed payout onboarding yet |
| In progress | Capsule is attempting to settle the payout |
| Failed | Capsule could not complete the payout transfer |
Settle pending payouts
Pending payouts can be settled after Connect is enabled. Use Settings → Usage & Billing to finish onboarding and settle eligible pending payouts. Settlement transfers your net amount to your connected account and updates each payout as paid out or failed.App payment reporting
You can inspect app payments from the app detail page. The payments view is intended to answer:- who paid for the app
- how much they paid
- whether the payment was one-time or monthly
- how much Capsule kept as the platform fee
- how much you earned
- whether the payout is complete, pending, or failed
Platform billing
Platform billing is separate from app sales. App sales are your users paying you. Platform billing is your workspace paying Capsule. You can manage your Capsule subscription and runtime usage from Settings → Usage & Billing. From there you can:- see workspace usage
- start or manage your Capsule subscription
- open the billing portal
- cancel a subscription
- sync billing state
- manage payout onboarding
| Status | Meaning |
|---|---|
trial | Trial workspace |
active | Active paid workspace |
past_due | Payment is overdue |
cancelled | Subscription was cancelled |
expired | Trial or plan is no longer active |
Runtime usage
Runtime usage is tracked separately from app sale revenue. Use Settings → Usage & Billing for workspace billing insights. Use the app detail page for per-app usage views.UI map
Capsule exposes payment features in two main places:| UI surface | What it shows |
|---|---|
| Hosted subdomain app | Paid app checkout prompts for users without access |
| App detail page | App price, checkout action, payments tab |
| Settings → Usage & Billing | Platform subscription, runtime usage, Stripe Connect payouts |
Notes
- App sale checkout uses Stripe Checkout and can create one-time or subscription sessions depending on
pricing_type. - When payout onboarding is complete, Capsule can route your share to your connected payout account.
- If onboarding is incomplete, app sale payouts can remain pending until payouts are enabled.