Connecting Billing Platforms
Connect Stripe, Lemon Squeezy, or Paddle to automatically track subscription events and revenue. Step-by-step setup for each platform.
Your billing platform is the source of truth for subscription revenue. Connecting it allows us to automatically track signups, renewals, upgrades, and cancellations without any code changes.
Platform Comparison
Platform | Setup Time | Best For | Integration Method |
---|---|---|---|
Stripe | 5 minutes | Most SaaS companies, flexible billing | Webhooks + signing secret |
Lemon Squeezy | 7 minutes | Global sales, automatic tax compliance | Webhooks + signing secret |
Paddle | 8 minutes | Larger businesses, enterprise billing | Webhooks + public/secret key |
Tracked Events
Once connected, these events are automatically captured and used to update customer LTV in your ad platforms:
Event | Trigger | Impact on LTV |
---|---|---|
Trial Started | Customer begins trial period | Track for trial-to-paid conversion |
Subscription Created | First payment processed | Initial conversion value sent to ad platforms |
Subscription Renewed | Monthly or annual renewal | LTV increased, ad platforms notified |
Subscription Upgraded | Customer selects higher plan | LTV increased by plan difference |
Subscription Downgraded | Customer selects lower plan | LTV decreased, future value adjusted |
Subscription Cancelled | Customer churns | Stop sending LTV updates |
Payment Failed | Card declined or rejected | Monitor for at-risk revenue |
Refund Processed | Payment reversed | LTV decreased by refund amount |
Stripe Setup
Stripe is the most common billing platform for SaaS. Setup takes about 5 minutes and uses webhooks to send subscription events.
Step 1: Log in to your Stripe Dashboard at dashboard.stripe.com and navigate to Developers → Webhooks in the left sidebar. Click "+ Add endpoint" to create a new webhook.
Step 2: Configure your webhook with these settings:
Field | Value |
---|---|
Endpoint URL | https://ltvsaas.com/api/webhooks/stripe |
Description | LTV Tracking Platform |
API Version | Latest (recommended) |
Events to send | See required events below |
Required events to select: customer.subscription.created
, customer.subscription.updated
, customer.subscription.deleted
, invoice.payment_succeeded
, invoice.payment_failed
, charge.refunded
Step 3: After creating the endpoint, Stripe displays a signing secret. Click "Reveal" and copy the entire secret (starts with whsec_
). This secret verifies that webhooks are genuinely from Stripe.
Step 4: In our platform, go to Settings → Billing Connections, select "Stripe", paste your signing secret, and click "Connect."
Verification: Send a test webhook from Stripe by clicking "Send test webhook" in your webhook settings and selecting customer.subscription.created
. Check our Dashboard for the test event within 60 seconds.
Common issues: If webhooks are failing, verify the URL is exactly https://ltvsaas.com/api/webhooks/stripe
with no extra characters. If events aren't appearing, confirm all required events are selected in Stripe. If you see "invalid signing secret" errors, create a new webhook endpoint and use the fresh secret. Note that test mode and live mode require separate webhook configurations.
Lemon Squeezy Setup
Lemon Squeezy acts as a Merchant of Record, handling taxes and compliance automatically. Setup takes about 7 minutes.
Step 1: Log in to your Lemon Squeezy store dashboard and navigate to Settings → Webhooks. Click "+" to add a new webhook.
Step 2: Configure your webhook:
Field | Value |
---|---|
Callback URL | https://ltvsaas.com/api/webhooks/lemonsqueezy |
Signing Secret | Auto-generated by Lemon Squeezy (copy this) |
Events | Select all subscription and order events |
Required events: subscription_created
, subscription_updated
, subscription_cancelled
, subscription_resumed
, subscription_expired
, order_created
, order_refunded
Step 3: Copy the auto-generated signing secret that Lemon Squeezy provides.
Step 4: In our platform, go to Settings → Billing Connections, select "Lemon Squeezy", paste your signing secret, enter your Store ID (found in Settings → General), and click "Connect."
Verification: Create a test subscription using Lemon Squeezy's test mode. The event should appear in our Dashboard within 60 seconds.
Common issues: If events aren't received, verify the callback URL has no trailing spaces or extra characters. If you see a Store ID mismatch, double-check the Store ID in Settings → General. Don't reuse signing secrets from old webhooks—generate a fresh one.
Paddle Setup
Paddle has two versions: Paddle Billing (current) and Paddle Classic (legacy). Choose the appropriate guide for your version.
Paddle Billing (Current Platform)
Step 1: Log in to your Paddle dashboard and go to Developer Tools → Notifications. Click "+ New notification destination."
Step 2: Configure your notification:
Field | Value |
---|---|
Destination type | HTTPS webhook |
URL | https://ltvsaas.com/api/webhooks/paddle |
Description | LTV Tracking Platform |
Events | Select all subscription and transaction events |
Required events: subscription.created
, subscription.updated
, subscription.canceled
, subscription.activated
, transaction.completed
, transaction.updated
Step 3: After creating the destination, Paddle provides a secret key (starts with pdl_ntf_
). Copy this key.
Step 4: In our platform, go to Settings → Billing Connections, select "Paddle Billing", paste the secret key, enter your Vendor ID (from Settings → Developer Tools), and click "Connect."
Paddle Classic (Legacy Platform)
Step 1: Log in to classic.paddle.com and navigate to Developer Tools → Webhooks. Click "Add Webhook."
Step 2: Configure your webhook:
Field | Value |
---|---|
Webhook URL | https://ltvsaas.com/api/webhooks/paddle-classic |
Paddle Classic automatically sends all events—no event selection required.
Step 3: Get your public key from Developer Tools → Public Key and copy it.
Step 4: In our platform, go to Settings → Billing Connections, select "Paddle Classic", paste your public key, enter your Vendor ID (from Account Settings), and click "Connect."
Common issues for both versions: If you can't find your Vendor ID, check Developer Tools → Authentication. For webhook signature failures, verify you're using the correct key for your platform version (Billing vs Classic). Ensure the webhook URL matches exactly, including HTTPS. Paddle requires separate webhooks for sandbox and live environments.
Webhook Security
All platforms use cryptographic signatures to verify webhook authenticity. We automatically validate every webhook before processing:
Platform | Signature Method | Verification Header |
---|---|---|
Stripe | SHA-256 HMAC with signing secret | Stripe-Signature |
Lemon Squeezy | SHA-256 HMAC with signing secret | X-Signature |
Paddle Billing | HMAC with secret key | Paddle-Signature |
Paddle Classic | RSA with public key | Paddle-Signature |
Invalid signatures are automatically rejected. You don't need to do anything—this protection is built-in.
Event Processing Flow
Here's what happens after you connect your billing platform:
Customer action occurs → Billing platform processes the event → Webhook sent to our server within 1-5 seconds → We verify the webhook signature → Event is parsed and stored → Customer LTV is calculated or updated → Ad platforms receive conversion updates within 5-10 seconds.
If webhook delivery fails, billing platforms automatically retry with exponential backoff. Stripe retries for up to 3 days, Lemon Squeezy for 24 hours, and Paddle for 7 days. This ensures reliable event capture even during temporary outages.
Troubleshooting
No events received after 24 hours: Verify the webhook URL is exactly as specified (copy-paste to avoid typos). Check that all required events are selected in your billing platform. Confirm our servers are accessible (not blocked by firewall). Ensure you're not mixing test webhooks with live API keys or vice versa.
Events received but not processing: Verify you copied the complete signing secret with no truncation. Confirm you're using the secret for the correct platform (Stripe secret doesn't work for Paddle). If you recently changed billing platform settings, regenerate the webhook to get a fresh secret.
Need help? Email admin@ltvsaas.com with which billing platform you're using, a screenshot of your webhook configuration (with secrets hidden), an example webhook payload if available (remove sensitive data), and the error message or behavior you're observing. We typically respond within 24 hours.
Next Steps
After connecting your billing platform, you're ready to connect ad platforms so they receive your LTV data. See Ad Platform Setup for Google Ads, Meta, and TikTok integration. You can also review Configuration & Settings for advanced options like custom event mapping and privacy controls.
Your billing integration is the foundation—everything else builds on this connection.