Paddle

Merchant-of-record hosted checkout. Needs API key, client-side token, and webhook secret. Default payment link is /premium/paddle.

Settingpaddle_checkout_enabled

Paddle

Merchant-of-record hosted checkout for one-time Premium / top-up payments.

Where to find it

Admin → Settings → Payment → gateways → Paddle

Setup

1. In Paddle → Developer tools → Authentication, create an API key (pdl_…_apikey_…) and a client-side token (test_ / live_). Do not paste the client token into the API key field.

2. Enable Paddle (and Enable for reseller if needed). Reseller enable defaults on when unset.

3. Paste API key, client-side token, and webhook secret (pdl_ntfset_… - not the destination id ntfset_…).

4. Register notifications URL: https://YOUR-DOMAIN/api/webhooks/paddle for transaction.completed (paid also accepted).

5. Set Paddle Default payment link to https://YOUR-DOMAIN/premium/paddle (loads Paddle.js) - not the return URL.

6. Use Sandbox with sandbox keys before going live.

Official: Paddle Billing docs.

Field Key
Enable paddle_checkout_enabled (default off)
Enable for reseller paddle_checkout_reseller_enabled
API key paddle_api_key
Client-side token paddle_client_side_token
Webhook secret paddle_webhook_secret
Sandbox paddle_sandbox

Return URL (auto): /api/checkout/paddle/return. Env PADDLE_* can override DB.

Common problems

Checkout never opens

Default payment link points at the wrong page. Use /premium/paddle.

Tax / MoR surprises

Paddle is merchant of record - expected, not a bug.

Related