Paddle Billing v2
Receive Paddle subscription events in Wexio flows
Wexio has native Paddle Billing v2 signature verification. Paste the notification-destination signing secret (the pdl_ntfset_… value) and Wexio handles the Paddle-Signature header — including multi-h1 rotation.
This mode covers Paddle Billing v2 (the current product). Paddle Classic uses RSA signatures and is not yet natively supported — proxy Paddle Classic through Make, n8n, or Zapier for now.
Provider docs: Setting up webhooks in Paddle
Setup
1. Create an inbound Wexio connection
Settings → Webhooks & API → New connection → Inbound. Use the Paddle Billing v2 preset (or pick Auth mode: Paddle manually).
Copy the Wexio endpoint URL.
2. Register the destination in Paddle
In Paddle → Developer Tools → Notifications → Add destination.
| Field | Value |
|---|---|
| Endpoint URL | The Wexio endpoint URL |
| Events | Pick the events you care about (subscription.created, transaction.completed, customer.created, etc.) |
Paddle shows the signing secret (pdl_ntfset_…) once. Copy it into Wexio's Signing secret field.
3. Configure contact resolution
| Identifier type | JSON path | Notes |
|---|---|---|
$.data.customer.email | Customer events | |
$.data.billing_details.email | Transaction events |
4. Capture the schema
Tap Capture schema in Wexio. Trigger a test event from the Paddle dashboard (their Simulate event feature works), or wait for a real one.
5. Bind a flow
Add a Webhook Received trigger on a flow, pick this connection, and branch on {{webhook.event_type}}.
Timestamp Tolerance
Paddle signs with a timestamp and Wexio rejects anything outside ±5 minutes. If Paddle retries a delayed event past the window, it's rejected — Paddle will eventually stop retrying.
Rotation
Paddle supports dual-signing during rotation:
- In Paddle, click the rotate button on the destination.
- Paste the new secret into Wexio via Rotate secret.
- Paddle signs with both secrets during the grace window.
Troubleshooting
| Symptom | Fix |
|---|---|
UNAUTHORIZED: Paddle signature mismatch | Re-copy the signing secret; confirm the environment (sandbox vs live) |
IDENTIFIER_NOT_FOUND | The customer's email isn't in Wexio yet — create the contact via People API or branch in-flow |
INVALID_JSON | Check your Paddle destination is set to v2 (not Classic) |