Managing Subscriptions
Learn about subscription statuses, activation, pausing, cancellation, and pricing models.
Subscription statuses
| Status | Description |
|---|---|
incomplete | The subscription has been created but has no payment methods. It must be activated before billing can begin. |
trialing | The subscription has been activated with a trial_end set. No payment is collected during the trial; when the trial ends, the first payment is taken and billing transitions to the active cycle. See Free Trials. |
active | The subscription is active and bills are being generated and processed. |
paused | The subscription has been paused via the API, or the Hub. While paused, no payment is taken: when a bill becomes due it is marked as void and a new draft bill is created for the next cycle, so billing resumes automatically once the subscription is set to active again. |
past_due | The subscription has been marked as past_due manually or due to a failed payment. See more about how failed payments impact subscription status here.The subscription continues to operate as if active, therefore bills are generated and processed. |
cancelled | The subscription has ended. This occurs automatically when the cycle limit is reached, manually via the API, or the Hub. Existing past_due bills will continue to have recovery payments taken against them unless they are marked as void. This status is terminal — a cancelled subscription cannot transition to any other status. |
The initial status of a subscription depends on whether payment methods are provided at creation:
- With payment methods — the subscription is created as
activeand billing begins immediately. If atrial_endwas supplied, it is created astrialinginstead and no payment is taken until the trial ends. - Without payment methods — the subscription is created as
incompleteand must be activated before billing can begin.
Activating an incomplete subscription
If a subscription was created without payment methods, it will have a status of incomplete. To activate the subscription, you have two options:
- Submit a POST request to the
/subscriptions/{subscription_id}/activateendpoint with the required payment methods. - When you include a
subscription_idin a Components/payment-sessionsrequest, the session inherits configuration from the subscription to capture the customer's card and/or take an initial payment, and then automatically activates the subscription on completion — all in one step.
For more information, refer to our activate subscription API reference. and Components integration guide.
/subscriptions/{subscription_id}/activate request:
{
"payment_methods": [
{
"type": "card",
"payment_method_id": "00cfdbdc-5e81-4ce2-adc1-14920120618f",
"is_primary": true,
"transaction_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
]
}The transaction_id is optional. If provided, it links a previous payment transaction to the subscription for prepaid billing flows.
Once activated, the subscription transitions to active (or trialing when a trial_end was set) and the first bill is created automatically.
Updating subscription status
You can transition an active subscription to the following statuses via the API:
- Cancel —
POST /subscriptions/{subscription_id}/cancel— permanently ends the subscription.cancelledis a terminal status: once cancelled, a subscription cannot transition to any other status.- Immediately (default) — the subscription transitions to
cancelledstraight away and any outstandingdraftbills are voided. - At period end — pass the
?at_period_end=truequery parameter to schedule the cancellation instead. The subscription keeps its current status andcancel_at_period_endis returned astrueon the subscription. When the next bill becomes due, that bill is voided and the subscription is cancelled automatically.
- Immediately (default) — the subscription transitions to
- Pause —
POST /subscriptions/{subscription_id}/pause— temporarily halts billing. While paused, no payment is taken: when a bill becomes due it is voided and a newdraftbill is created for the next cycle, so billing resumes automatically once the subscription is set toactiveagain. Subscriptions intrialingorincompletestatus cannot be paused. - Past due —
POST /subscriptions/{subscription_id}/past_due— marks the subscription as past due.
Subscription Statuses being automatically updatedA subscription status will be automatically updated in certain scenarios around failed payments. See the guide for how failed payments interact with subscription statuses.
Subscriptions will also be automatically cancelled when its billing cycle limit is reached. See Bills for more details on the billing lifecycle.