Reactivate Subscription
Returns a canceled or completed subscription to ACTIVE, keeping the same subscription and history.
CANCELED or COMPLETED
subscription to ACTIVE — or to TRIALING when a trial phase covers the reactivated cycle —
keeping the same id and its full payment history. No successor subscription is ever created
and previous_subscription_id is never set by this call. No charge is made on the call itself.
409 "Subscription reactivation is not enabled for this organization.",
contact your Yuno representative to have it enabled.Which subscriptions can be reactivated
availability.finish_at has already passed is refused with 400
INVALID_DATE, whatever its status:
When the billing cycles are used up
ACOMPLETED subscription that used every cycle in billing_cycles.total is refused with 409
INVALID_SUBSCRIPTION_STATUS:
billing_cycles.total with a value higher than the current one to raise the limit and
reactivate in the same call. This does not create a successor — it raises the limit on the same
subscription, keeping its id and history intact:
billing_cycles.total:
billing_cycles.total for a subscription that still has cycles left is accepted the same
way: it raises the limit, it is not restricted to exhausted subscriptions. An explicit
billing_cycles.total: null is treated the same as omitting the field — the current total is left
unchanged.
Choosing the next billing date
billing_cycle_behavior is the same axis used on resume and on plan changes.
400 BAD_REQUEST —
"billing_cycle_behavior must be one of KEEP, RESTART." Reactivate has no gateway-side validation
of its own: the same text comes back unchanged through the gateway.
frequency.monthly_billing_day set, RESTART stamps it to
the day of the reactivation — the same rule Update Subscription and Resume Subscription apply. A
subscription that already declares a billing day keeps it.The payment method
The vaulted payment method is revalidated before the subscription is reactivated. If it is no longer enrolled, the call returns400 PAYMENT_METHOD_STATUS_INVALID and the subscription is not
modified — the payment method check runs before the status write:
What reactivation clears
Reactivating a subscription clears:cancellation_timecancellation_sourceending_timereason- any scheduled cancellation (
cancel_scheduled) - any pause that was scheduled to end on its own — a reactivated subscription never carries
pause_until
subscription.reactivate webhook fires once, carrying the reactivated subscription.
Errors
Authorizations
Path Parameters
The unique identifier of a subscription.
Body
RESTART re-anchors the next charge to now plus the subscription's frequency (and stamps frequency.monthly_billing_day on a monthly subscription that had none). KEEP or omitted: the stored anchor is left untouched while it is still in the future, otherwise rolled forward to its next future occurrence. No charge is made on the call either way.
KEEP, RESTART "RESTART"
Raises the subscription's cycle limit so it can be reactivated. Only the nested total is allowed.
Response
200
"7304911d-5df9-429e-8488-ad41abea1a4c"
"sub_001"
"streaming service"
"2404911d-5df9-429e-8488-ad41abea1a4b"
The subscription's country (ISO 3166-1 alpha-2).
"US"
"001_marzo_23"
"ACME SUBSCRIPTION"
"ACTIVE"
Start of the billing period the subscription is currently in, one cadence before current_period_end. Inside a trial or any other plan phase it follows that phase's cadence. A terminal subscription (CANCELED or COMPLETED) keeps its final window rather than going null. Null only for a subscription with no recurring cadence. Always returned together with current_period_end.
"2023-01-16T20:00:00.912480Z"
End of the billing period the subscription is currently in. Equal to billing_cycles.next_at. Always returned together with current_period_start.
"2023-02-16T20:00:00.786342Z"
Only present on subscriptions billed on a fixed date instead of a frequency; mutually exclusive with frequency.
The optional order enrichment sent at creation, echoed back. See The Subscription Object for its full shape.
Whether the subscription waited for its first payment to succeed before activating. false by default.
false
Free-form reason for the subscription's current status, when one was recorded; null otherwise.
"merchant request"
How many days before the next billing date the subscription.close_to_renewal webhook is sent. null means no renewal notification is sent.
3
"sa_6af2dfcd-44c0-4f16-a331-8bed3ed9c9fa"
When the subscription was canceled. Only set once it reaches CANCELED; null otherwise.
"2023-12-16T20:46:54.786342Z"
What triggered the cancellation: MERCHANT, SYSTEM, PLAN_CHANGE or RETRIES_EXHAUSTED. Only set once the subscription reaches CANCELED; null otherwise. Treat as open-ended — handle unrecognized values gracefully.
"MERCHANT"
When the subscription completed or expired. Only set once it reaches COMPLETED; null otherwise.
"2024-12-16T20:46:54.786342Z"
Only present when the subscription is linked to a plan.
"00000000-0000-4000-8000-000000000001"
Only present on plan-linked subscriptions. The moment the plan was attached — at creation from a plan, migration onto a plan, or a plan change.
"2023-12-16T20:46:54.786342Z"
Only present when this subscription was created by a plan change (switching an existing subscription to a different plan).
The linked plan's phase definitions, as the plan declares them — including the terminal REGULAR phase. Only present on plan-linked subscriptions whose plan has phases. This is the plan's own ladder, not this subscriber's snapshot: for what was pinned for this subscription at creation, use billing_phases.
Only present on plan-linked subscriptions.
"REGULAR"
When the phase named by current_phase hands over to the next one — for a subscription in its trial, when it switches to the regular price. End of the last billing period the phase covers, so on the final period of a trial it equals current_period_end. Null for a subscription with no plan and for one that already left the phase ladder.
"2023-03-16T20:00:00.786342Z"
Only present on plan-linked subscriptions whose plan has phases. Contains the leading TRIAL phases only, snapshotted at creation — the terminal REGULAR phase is never included, since its price isn't pinned and instead resolves from the plan at every billing. current_phase: "REGULAR" is how you know the ladder is exhausted.
The plan change scheduled for the next billing cycle, or null when none is pending. Schedule one with the plan_change block on Update Subscription.
"2023-12-16T20:46:54.786342Z"
"2023-12-16T21:00:54.786342Z"
The stored refund rule used to resolve a CUSTOM cancel refund when the cancel request sends no refund_amount of its own. Present only when one is configured; omitted, not null, otherwise. Available to organizations enabled for it; contact Yuno.
When the subscription is scheduled to resume automatically. Present only on a subscription currently paused with a duration (pause_cycles or pause_until sent at pause); absent, not null, on every other read.
"2026-10-15T15:54:22.780166Z"
null when no cancellation is pending.
null when refund was NONE or omitted. Present on the cancel response and on every later read once computed.
Present only when the current billing cycle is PAST_DUE and has not settled.