Skip to main content

When it fires

When a merchant resumes a paused subscriber from the dashboard. The subscriber’s status transitions back to active. Billing will resume on the next cycle.

What to do

  • Restore access to your product
  • Update your internal subscription record to active
  • Optionally send the customer a “your subscription is back” email

Payload

{
  "event": "subscriber.resumed",
  "subscriberId": "9f1e2d3c-4b5a-6789-abcd-ef0123456789",
  "merchantId": "f9e8d7c6-b5a4-3210-9876-543210fedcba",
  "planId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "email": "customer@example.com",
  "status": "active",
  "currentPeriodEnd": "2026-05-19T00:00:00.000Z",
  "timestamp": "2026-04-28T11:00:00.000Z"
}
FieldTypeDescription
eventstringAlways subscriber.resumed
subscriberIdstringUUID of the subscriber record
merchantIdstringYour merchant account UUID
planIdstringUUID of the plan
emailstringSubscriber email address
statusstringAlways active
currentPeriodEndstringISO 8601 — end of the active billing period
timestampstringISO 8601 — when the event was generated

Handler example

Node.js
app.post('/webhooks/settlx', express.raw({ type: 'application/json' }), async (req, res) => {
  verifySignature(req); // see Webhook Integration for verification code

  const event = JSON.parse(req.body);

  if (event.event === 'subscriber.resumed') {
    const { subscriberId, email, currentPeriodEnd } = event;

    await db.subscriptions.update(subscriberId, {
      status: 'active',
      accessUntil: currentPeriodEnd,
    });

    // Restore access
    await restoreAccess(email);

    // Notify subscriber
    await sendEmail(email, 'subscription-resumed', {
      nextBillingDate: currentPeriodEnd,
    });
  }

  res.status(200).json({ received: true });
});