C
ChurnRecovery
Get started free
🏓

ChurnRecovery + Paddle

Paddle handles global tax compliance as your merchant of record. ChurnRecovery integrates with Paddle's subscription API and webhook system to bring cancel flows and failed payment recovery to Paddle-powered SaaS.

Setup time
30 minutes
Difficulty
Medium
Avg save rate
22%
Price
Free

Overview

Paddle is the preferred billing solution for SaaS companies selling internationally — they handle VAT, GST, and global tax compliance so you don't have to. ChurnRecovery supports both Paddle Classic and Paddle Billing (the new API).

Our Paddle integration hooks into the subscription lifecycle at the right moments: before cancellation is confirmed, when a payment fails, and when a subscription is about to expire. The result is a complete retention layer built on top of Paddle's infrastructure.

What's included

  • Supports Paddle Classic and Paddle Billing (v2)
  • Cancel flow triggered before subscription ends
  • Pause and downgrade via Paddle subscription API
  • Failed payment detection and retry logic
  • Email dunning sequences for past-due subscribers
  • Webhook-based — works with Paddle's event system
  • Handles Paddle's unique MoR billing model

Use cases

Pre-Cancellation Intervention

Catch customers before Paddle processes the cancellation

Tax-Compliant Discounts

Apply discounts through Paddle's API to retain subscribers

Global Payment Retry

Smart retry logic that accounts for cross-border payment failures

Dunning Sequences

Automated email sequences for past-due Paddle subscribers

Code examples

Real code for your Paddle integration. Copy and customize.

Installbash
npm install @churnrecovery/paddle
Configure Paddle integrationjavascript
import ChurnRecovery from '@churnrecovery/paddle'

const cr = new ChurnRecovery({
  apiKey: process.env.CHURNRECOVERY_API_KEY,
  paddleApiKey: process.env.PADDLE_API_KEY,
  paddleEnvironment: 'production', // or 'sandbox'
})
Handle Paddle webhookjavascript
// pages/api/paddle-webhook.js
import ChurnRecovery from '@churnrecovery/paddle'

const cr = new ChurnRecovery({ apiKey: process.env.CHURNRECOVERY_API_KEY })

export default async function handler(req, res) {
  const { alert_name, subscription_id, passthrough } = req.body
  
  if (alert_name === 'subscription_cancelled') {
    await cr.handleCancellation({ subscriptionId: subscription_id })
  }
  
  if (alert_name === 'subscription_payment_failed') {
    await cr.handleFailedPayment({ subscriptionId: subscription_id })
  }
  
  res.json({ success: true })
}

Setup checklist

  1. 1Install @churnrecovery/paddle via npm
  2. 2Add your Paddle API key to ChurnRecovery dashboard
  3. 3Configure webhook URL in Paddle Developer Portal
  4. 4Choose which events to intercept (cancel, failed payment)
  5. 5Test with Paddle sandbox environment
🚀

Ready to get started?

Free forever. No credit card. Set up in 30 minutes.

Get early access →

Stop losing customers you could keep

Most SaaS companies recover 20–30% of would-be churners with cancel flows. ChurnRecovery makes this free for Paddle users.

Get early access — it's free