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

# Paddle Setup

> Connect your Paddle account to Paymint for payment processing

## Prerequisites

Before connecting Paddle to Paymint, you need:

* A [Paddle Billing](https://paddle.com) account (not Paddle Classic)
* Your Paddle account must be approved for payment processing
* Follow the first 4 steps of the [Paddle Setup Checklist](https://developer.paddle.com/build/onboarding/set-up-checklist#setup-checklist) to ensure your account is properly configured.

<Info>
  **Existing Paddle Accounts:** Even if you already have an account, please confirm that your configuration matches the first 4 steps of the [Paddle Setup Checklist](https://developer.paddle.com/build/onboarding/set-up-checklist#setup-checklist).
</Info>

<Info>
  Don't have a Paddle account yet? [Sign up at paddle.com](https://paddle.com) — approval typically takes 1-2 business days.
</Info>

***

## Creating Your API Key

<Steps>
  <Step title="Log into Paddle Dashboard">
    Go to [vendors.paddle.com](https://vendors.paddle.com) and sign in to your Paddle Billing dashboard.

    Make sure you're using **Paddle Billing** (not Paddle Classic). The URLs should start with `vendors.paddle.com`.
  </Step>

  <Step title="Navigate to Developer Tools → Authentication">
    In the left sidebar, expand **Developer Tools** and click **Authentication**.

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paddle-developer-tools-nav.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=74d5afc2311f83678b34a99150fa95b8" alt="Paddle sidebar showing Developer Tools expanded with Authentication highlighted" width="3126" height="2028" data-path="images/paddle-developer-tools-nav.png" />
    </Frame>
  </Step>

  <Step title="Click '+ New API key'">
    On the Authentication page, click the **+ New API key** button in the top-right corner.

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paddle-authentication-page.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=0726e3bc791c23cfd1570afb3a2c6cf3" alt="Paddle Authentication page showing the + New API key button" width="3126" height="2028" data-path="images/paddle-authentication-page.png" />
    </Frame>
  </Step>

  <Step title="Fill in the API Key Details">
    In the **New API key** dialog:

    * **Name** — Give it a descriptive name (e.g., `your-app-prod-paymint`)
    * **Description** — Optional, but helpful (e.g., `API key to be used by paymint.dev`)
    * **Expires at** — Set to `Never expires` unless you have a rotation policy
    * **Permissions** — Select **All → Read & Write** for full access

    Click **Save** when done.

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paddle-new-api-key-form.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=90f7abd7147b1fdaa36ea69c495143a2" alt="Paddle New API key dialog with name, description, expiry, and permissions" width="3396" height="1928" data-path="images/paddle-new-api-key-form.png" />
    </Frame>
  </Step>

  <Step title="Copy Your API Key">
    After saving, Paddle will show your generated API key.

    <Warning>
      **Copy the key immediately and store it securely.** Once you close this dialog, you won't be able to view the full key again in Paddle.
    </Warning>

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paddle-copy-api-key.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=45eaaa900658393d2d616f9cc9d6c63a" alt="Paddle dialog showing the generated API key with a Copy key button" width="3396" height="1928" data-path="images/paddle-copy-api-key.png" />
    </Frame>

    The key will start with `pdl_live_` (production) or `pdl_sdbx_` (sandbox).
  </Step>

  <Step title="Choose the Right Environment">
    Paddle has two environments:

    | Environment    | Use Case                | API Key Prefix |
    | -------------- | ----------------------- | -------------- |
    | **Sandbox**    | Testing and development | `pdl_sdbx_...` |
    | **Production** | Live payments           | `pdl_live_...` |

    Start with **Sandbox** for testing, then switch to **Production** when you're ready to go live.
  </Step>
</Steps>

***

## Connecting to Paymint

<Steps>
  <Step title="Open Paddle Configuration">
    In the Paymint dashboard, go to **Settings → Paddle Configuration**.

    If you're a new user, you'll be redirected here automatically after sign-up.

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paymint-enter-api-key.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=d4e75ec4bc9b107f63de62fb81a39129" alt="Paymint Paddle Configuration page showing the Secret API key input field and provisioning progress" width="3396" height="1928" data-path="images/paymint-enter-api-key.png" />
    </Frame>
  </Step>

  <Step title="Enter Your API Key">
    Paste your Paddle Secret API Key into the **Secret API key** field and click **Save**.

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paymint-save-api-key.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=98bb9b995ac37ddff16b879b07e57d37" alt="Paymint Paddle Configuration page with API key entered and Save button ready" width="3396" height="1928" data-path="images/paymint-save-api-key.png" />
    </Frame>
  </Step>

  <Step title="Automatic Provisioning">
    Paymint will automatically:

    1. **API Key Stored** — Validates and securely stores your key
    2. **Client Token Created** — Generates a frontend-safe token for Paddle.js
    3. **Webhook Created** — Sets up real-time event processing
    4. **Products Synced** — Imports your products and prices from Paddle

    You'll see a progress indicator showing each step completing in real-time. Once all 4 steps are complete, your Paddle integration is ready to use.

    <Frame>
      <img src="https://mintcdn.com/paymintdev/H_0JfPVe_ZlzxYii/images/paymint-provisioning-complete.png?fit=max&auto=format&n=H_0JfPVe_ZlzxYii&q=85&s=ea13ef2cb18dd62ae44321fa20a60526" alt="Paymint showing all 4 provisioning steps completed with configured API key details" width="3396" height="1928" data-path="images/paymint-provisioning-complete.png" />
    </Frame>
  </Step>
</Steps>

***

## Creating Products and Prices

Before starting the SDK integration, you need to have products and prices defined.

If you haven't already created products and prices in your Paddle dashboard, you can use **Paymint's Product & Price UI** to create them directly. Paymint will then automatically sync these to your Paddle account.

***

## What Paymint Provisions Automatically

Once you enter your API key, Paymint handles the following automatically:

| Feature              | Description                                                              |
| -------------------- | ------------------------------------------------------------------------ |
| **Client Token**     | A frontend-safe token for Paddle.js checkout integration                 |
| **Webhook Endpoint** | Receives real-time events (subscriptions, payments, etc.) from Paddle    |
| **Product Sync**     | Imports your products and prices (up to 20 products with 30 prices each) |

***

## Troubleshooting

### "Invalid API Key Format"

Make sure your key starts with `pdl_`. If you copied it from Paddle Classic (not Paddle Billing), it won't work.

### "Authentication Failed"

The API key may be expired or revoked. Generate a new one in **Developer Tools → Authentication** on your Paddle dashboard.

### "Provisioning Failed"

Check that your Paddle account is fully approved. Sandbox accounts are available immediately, but production accounts require Paddle's approval.

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Create API Keys" icon="key" href="/guides/api-keys">
    Generate Paymint API keys for your application
  </Card>

  <Card title="Integration Example" icon="code" href="/guides/integration-example">
    See a complete end-to-end integration with code examples
  </Card>
</CardGroup>
