Paddle Integration
Connect Paddle to LostChurn for automatic failed payment recovery.
The Paddle integration is live. Connect your Paddle account in your LostChurn dashboard under Settings > Integrations.
Paddle is a merchant of record platform that handles payments, tax, and compliance for SaaS and digital product businesses. Because Paddle acts as the reseller, the integration model differs from traditional payment processors: LostChurn receives subscription lifecycle events from Paddle rather than raw charge-level events.
Prerequisites
- An active Paddle account (Classic or Paddle Billing)
- Access to the Paddle Dashboard with admin or developer permissions
- A Paddle API key generated from the Developer Tools section
- A LostChurn account with at least one workspace created
Connection Steps
- In the Paddle Dashboard, navigate to Developer Tools > Authentication.
- Click Generate API Key. Name the key
LostChurnand grant it Read and Write permissions for subscriptions and transactions. - Copy the API key immediately (it is shown only once).
- In your LostChurn dashboard, go to Settings > Integrations and click Connect Paddle.
- Select your Paddle environment: Sandbox or Production.
- Paste the API key and click Save and Verify. LostChurn will make a test API call to confirm the key is valid.
Webhook Configuration
- In the Paddle Dashboard, go to Developer Tools > Notifications.
- Click New Destination.
- Set the URL to:
https://webhooks.lostchurn.com/v1/paddle - Set the Type to Webhook (HTTP POST).
- Select the following event types:
transaction.payment_failedtransaction.completedtransaction.updatedsubscription.canceledsubscription.updatedsubscription.past_duesubscription.pausedsubscription.resumedsubscription.activated
- Click Save Destination.
- Copy the Secret Key shown on the notification destination detail page.
- In your LostChurn dashboard, paste the secret key into the Webhook Secret field on the Paddle integration page.
Webhook Signature Verification
Paddle signs every webhook payload with HMAC-SHA256. The signature is sent in the Paddle-Signature header using the format:
ts=1234567890;h1=hex_encoded_hmac_signatureLostChurn verifies authenticity by:
- Parsing the
ts(timestamp) andh1(signature) values from the header. - Checking that the timestamp is within a 5-minute tolerance window (replay protection).
- Computing HMAC-SHA256 of
${ts}:${raw_body}using the webhook secret. - Comparing the result against
h1using a timing-safe comparison.
Requests with missing, expired, or invalid signatures are rejected with a 401 response.
Verify Connection
- In the Paddle Dashboard, go to Developer Tools > Notifications and select the LostChurn destination.
- Click Send Test Notification and choose
transaction.payment_failed. - In your LostChurn dashboard, navigate to Events and confirm that the test event appears.
- Alternatively, create a test subscription in Paddle Sandbox using one of Paddle's test payment methods and simulate a failed payment.
A successful connection shows a green Connected badge on the Paddle card in Settings > Integrations.
Supported Events
| Paddle Event | LostChurn Action |
|---|---|
transaction.payment_failed | Creates a failed payment record, triggers retry evaluation |
transaction.completed | Marks recovery as successful, stops active dunning |
transaction.updated | Updates transaction metadata |
subscription.canceled | Records churn event, triggers reactivation campaign if configured |
subscription.updated | Updates subscription status and plan details |
subscription.past_due | Triggers dunning sequence |
subscription.paused | Records pause event for analytics |
subscription.resumed | Records resume event, stops pause-related campaigns |
subscription.activated | Confirms new subscription activation |
Provider-Specific Notes
Merchant of Record Model
Because Paddle is the merchant of record, retry behavior works differently than with direct processors. Paddle handles the initial retry logic itself. LostChurn complements this by:
- Monitoring Paddle's retry outcomes and triggering dunning emails when Paddle's built-in retries are exhausted.
- Providing a customer-facing payment update page when Paddle's payment method update flow is insufficient.
- Tracking recovery attribution so you can see which recoveries came from Paddle's native retries versus LostChurn's dunning.
Paddle Classic vs. Paddle Billing
LostChurn supports both Paddle Classic (legacy) and Paddle Billing (the current platform). Event formats differ between the two:
- Paddle Billing: Uses the event types listed above. This is the recommended integration.
- Paddle Classic: Uses older webhook formats such as
subscription_payment_failedandsubscription_cancelled. LostChurn auto-detects the format based on your account type.
If you are migrating from Paddle Classic to Paddle Billing, you can connect both simultaneously during the transition period. LostChurn deduplicates events that appear in both systems.
Sandbox Environment
Paddle provides a fully isolated sandbox environment at sandbox-vendors.paddle.com. Use sandbox credentials to test the integration without affecting live subscriptions. LostChurn labels all sandbox events with a sandbox badge in the Events feed.
Tax and Compliance
Since Paddle handles tax collection and compliance as the merchant of record, LostChurn's recovery metrics exclude tax amounts by default. You can toggle this in Settings > Integrations > Paddle > Revenue Display to include or exclude tax in your recovery dashboards.
Rate Limits
Paddle enforces rate limits of 20 requests per second for most API endpoints. LostChurn distributes retry-related API calls across time windows to stay within this limit. If you experience rate limiting, LostChurn automatically backs off and retries with exponential delay.