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
StateMeaning
trialingIn free trial, not yet charged
activePaid and current
past_duePayment failed; retrying
canceledEnded (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.

Next