Paddle Billing v2
Receive Paddle subscription events in Wexio flows
Wexio verifies Paddle Billing v2 signatures natively. 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 natively supported. Proxy it through Make, n8n or Zapier.
Provider docs: Setting up webhooks in Paddle
Setup
1. Connect It in Wexio
Go to Settings → Webhooks and API → Webhooks → New connection → Inbound and click the Paddle Billing chip under Dedicated providers, or set Authentication mode to Paddle Billing v2 manually. Copy the Wexio endpoint URL.
2. Set Up the Provider
In Paddle, go to Developer Tools → Notifications → Add destination.
| Field | Value |
|---|---|
| Endpoint URL | The Wexio endpoint URL |
| Events | The events you need, for example subscription.created, transaction.completed, customer.created |
Paddle shows the signing secret (pdl_ntfset_…) once. Copy it into the Wexio Signing secret field.
3. Resolve Contacts
| 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 (the 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, Wexio rejects it. Paddle eventually stops retrying.
Rotation
Paddle supports dual signing during rotation. To rotate:
- In Paddle, click the rotate button on the destination.
- In Wexio, open the connection, click Change under Authentication and paste the new secret.
Paddle signs with both secrets during the grace window.
Troubleshooting
| Symptom | Fix |
|---|---|
UNAUTHORIZED: Paddle signature mismatch | Re-copy the signing secret and confirm the environment (sandbox or live) |
IDENTIFIER_NOT_FOUND | The customer's email is not in Wexio yet. Create the contact with the People API, or branch in the flow |
INVALID_JSON | Check that your Paddle destination is set to v2, not Classic |
Related
- Inbound Webhooks - auth modes, contact resolution and response codes
- Webhook Received - the trigger that starts your flow
- Webhook History - check why a request failed