Monetization
Subscriptions
Recurring billing and subscriber management
Subscriptions turn one‑time buyers into recurring revenue. This covers plans, the subscriber lifecycle, and how to react to billing events.
Plans
A listing can offer multiple plans (e.g. monthly and annual, or tiers):
{
"plans": [
{ "id": "monthly", "interval": "month", "amount": 29900, "currency": "INR", "trial_days": 7 },
{ "id": "annual", "interval": "year", "amount": 299900, "currency": "INR" }
]
}
Show the annual discount explicitly — it's the single easiest way to lift lifetime value.
Subscriber lifecycle
trialing → active → (past_due) → active | canceled
| State | Meaning |
|---|---|
trialing | In free trial, not yet charged |
active | Paid and current |
past_due | Payment failed; retrying |
canceled | Ended (at period end or immediately) |
React to each via webhooks: subscription.created, subscription.updated, subscription.canceled, invoice.payment_failed.
Gating features
For web apps, check entitlement on launch and unlock features per plan:
{ "user_id": "usr_9f", "entitled": true, "plan": "annual", "expires_at": "2027-06-01T00:00:00Z" }
Verify server‑side — see Uploading Web Apps.
Reduce churn
Recover most failed payments automatically: Theaimart retries past_due invoices on a smart schedule (dunning). Add an in‑app "update payment method" prompt to close the loop.
- •Offer a pause instead of cancel where it fits.
- •Email before annual renewals to avoid surprise chargebacks.
- •Watch the churn metric in Analytics and act on the cohort that leaves.