Billing
Paddle
Paddle Billing subscriptions and transactions, mapped onto the same MRR and churn fields as Stripe.
At a glance
- Category
- Billing
- Required
- Yes — billing is the one required slot
- Auth
- API key or token
- Powers
- Revenue, Retention, Profitability
- Freshness
- Stale after 6 hours
- Webhook
- Yes — signed, per project
- Key format
pdl_…
Connect it
- 1In Paddle, open Developer Tools → Authentication and create an API key restricted to read subscriptions, transactions and customers.
- 2In Seiton, press Connect on Paddle and paste the pdl_ key.
- 3Copy the webhook URL shown after connect into Paddle → Notifications, and paste the signing secret back into Seiton.
The API key is created here: vendors.paddle.com.
Webhook
The exact URL — including this project's id — is shown in the product after you connect. Copy it from there rather than building it by hand.
https://www.seiton.online/api/webhooks/paddle?website_id={WEBSITE_ID}Events worth enabling:
transaction.completedsubscription.createdsubscription.updatedsubscription.canceled
website_id is not optional
The signature is verified against the vault secret of that specific project. Without the query parameter the endpoint refuses the request rather than guessing which project a payload belongs to.
Worth knowing
- Attribution uses custom_data.visitor_id on transaction create.
Disconnecting
Disconnect from the Integrations page. Seiton deletes the stored credentials, removes any webhook endpoint it created in your account, and strips the fields this provider owned out of your snapshots — those metrics go back to insufficient data rather than freezing at their last value.
Revoking the token or OAuth grant inside Paddle works just as well and stops reads immediately. The connection then shows as revoked on the next sync, with the reason.
