> ## Documentation Index
> Fetch the complete documentation index at: https://docs.funeli.top/llms.txt
> Use this file to discover all available pages before exploring further.

# Accept subscription payments with Paddle

> Connect Paddle Sandbox and Production to a Funeli project in the admin, verify the API key, client-side token and webhook, and choose the default checkout.

Funeli takes payments through Paddle. Each project connects its own Paddle account in the admin, and every funnel in the project checks out with that connection unless you choose another one for a funnel. Until a connection is set up, checkout runs in mock mode and nobody is charged.

> [!NOTE]
>
> Payment credentials are entered only in the admin, never in a chat with an agent, so they never end up in chat history. Agents can see which connections exist and test them, but never see the keys.

## Connect Paddle

**1. Open the project's payments**

In the admin, open the project settings and choose **Payments**, then select **Paddle**. Only a Workspace owner can change payment connections.

**2. Choose the environment**

Paddle setup has two sections. A **Sandbox** connection takes test cards only, so nobody is charged. A **Production** connection takes real payments. A funnel checks out through the connection it uses, whether you preview it or publish it, so you can publish on Sandbox to test the whole flow and switch to Production before you send real traffic.

**3. Enter the credentials**

From your Paddle dashboard, copy:

* the **API key** (`pdl_...`);
* the **client-side token** (`test_...` for Sandbox, `live_...` for Production);
* the **webhook secret** (`pdl_ntfset_...`).

Copy the **webhook URL** that Funeli shows and add it as a notification destination in Paddle.

**4. Check the connection**

Funeli verifies the API key, the client-side token and the webhook secret and shows a result for each. The client-side token and webhook checks need the `client_token.read` and `notification_setting.read` permissions on the API key.

**5. Make it the default**

Turn on **Use Paddle for checkout** and choose the connection as the project default. Funnels in the project now check out with it.

## Choose a connection per funnel

A funnel uses the project default unless you pick another connection of the same project for it, in the funnel's **Settings**, **Payments** section in the editor or through an agent. You can also switch a funnel back to mock checkout. A funnel can only use a connection of its own project.

## Prices

Plan prices are set on the funnel's paywall. If your Paddle catalog already has a price with the right amount, currency, billing period and trial, you can link it in the editor's **Pricing** tab, or an agent can reuse it, instead of creating a new one.

> [!NOTE]
>
> Stripe and other providers are shown as **Soon** in the admin. Paddle is the only provider available today.

## Troubleshooting

> [accordion] A check fails on the connection
>
> Each of the three checks has its own result. The client-side token and webhook checks need the `client_token.read` and `notification_setting.read` permissions on the API key; without them they cannot pass. The webhook check verifies the saved secret, an active notification destination with Funeli's URL and the required events; it does not send a test delivery.

> [accordion] Checkout says a price is out of sync
>
> A plan's terms were changed after it was linked to a Paddle price. Paddle prices cannot be edited, so pick or create a matching price in the editor's **Pricing** tab before you publish.

> [accordion] Prices are missing after switching from Sandbox to Production
>
> A price link belongs to the Paddle account it was made in. After moving a funnel to another connection, link or create its prices under that connection; switching back finds the old links again.

> [accordion] Nobody is charged on the live funnel
>
> The funnel uses mock checkout or a Sandbox connection. Switch it, or the project default, to a Production connection.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.