Juttu updates the subscription in your payment provider (source of truth) — Stripe or Paddle.
Your app should react to provider webhooks to toggle in-app access.
Show a Pause Wall to paused users, with clear actions to Resume or Cancel.
Webhook refs:
Paddle subscription.paused event → docs
Paddle Integration Details
Juttu uses the Paddle Subscription Pause API to manage pauses.
How it works
When a pause is accepted, Juttu updates the subscription via Paddle’s API:
POST /subscriptions/{subscription_id}/pause
{
"effective_from": "next_billing_period",
"resume_at": "2025-12-01T00:00:00Z" // optional, auto-resume date
}This tells Paddle to:
- Pause the subscription at the next billing period
- Automatically resume billing at resume_at, if set
- Keep the subscription in a paused state (status = "paused")
You should treat status === "paused" as paused in your system.
If a resume_at is present, that’s when billing (and access) will automatically resume.
How to detect a pause (in your webhook)
Listen for the subscription.paused event from Paddle.
When it fires, check the status field and optional resume_at in the payload:
if (event.alert_name === 'subscription.paused') {
const subscription = event.subscription;
if (subscription.status === 'paused') {
// Subscription is paused
// Optional: subscription.resume_at tells you when it auto-resumes
} else {
// Subscription is active (not paused)
}
}No extra API call needed — Paddle includes the updated subscription status in the webhook payload.
Related Paddle webhooks you may see
- subscription.paused → fires when a pause is applied
- subscription.resumed → fires when the subscription resumes
- subscription.updated → generic updates (useful if you sync states)
What to do in your app when a user is paused
In short, you probably want to restrict access to your app.
There are different options and behaviors that you can add to make this experience nicer for the user.
A pause wall is the best approach for most companies.
How the Pause Wall works (end-user view)
A pause wall is a pop-up that restricts access to your application, informs the user about his/her status (paused) and gives the option for the user to take action (resume subscription now).
Activation
subscription.status = "paused"(Paddle)- Current date is within the pause window
Behavior
- Blocks access to your main app
- Shows options:
- Resume now (immediate unpause via provider)
- Cancel at term end
- Exit wall (optional limited preview)
- Applies the user’s choice and restores access automatically once unpaused or when the pause ends