v1.0.4 - Reliable subscription pause scheduling #
Subscription pause requests now persist correctly, validate the requested window, and return a response that matches the saved schedule.
16 May 2026
Bug Fix
Subscriptions
API
Stripe
Webhooks
Pausing a subscription now reliably stores the scheduled pause and returns a response that reflects the requested window. Previously, pausedAt and resumeAt could come back null even after a successful pause request, and repeated pause calls could stack duplicate scheduled jobs against the same subscription.
What changed
- Pause schedule persists —
POST /subscriptions/:id/pausenow writes the scheduled pause job and returns aSubscriptionDtowithpausedAtandresumeAtpopulated from the request body.POST /subscriptions/:id/resumeclears both fields on the returned DTO so the response matches the persisted state. - No duplicate pause jobs — If an active
SubscriptionPausejob already exists for the subscription, a new pause request now updates that job's schedule, payload, and retry state in place instead of creating a second one. - Easier API usage —
SubscriptionPauseBodyDtono longer requires any body values.emailis depreciated at v1.0.4 as we can collect this locally. WhenpauseAtis not passed, we assume now() and will instantly pause the subscription. The same happens for any date in the past. When provided, requiresresumeAtto be strictly afterpauseAt.resumeAtmay still be omitted or sent asnullto request an indefinite pause. Invalid windows are rejected with a422before any scheduling work happens.
Developer notes
- The deprecated
emailfield on the subscription pause request body is now ignored on scheduled pause payloads and is no longer required. Existing clients that still send it will continue to work, however we recommend removing this as in future releases we may remove this field.