Paddle
raw JSON → 1.13.0 verified Tue May 12 auth: yes python install: verified quickstart: stale
Official Python SDK for Paddle Billing (the new Paddle platform). PyPI package is paddle-python-sdk, imports as paddle_billing. Requires Python >=3.11. Note: there are two Paddle platforms — Paddle Classic (legacy) and Paddle Billing (current). This SDK is Paddle Billing only.
pip install paddle-python-sdk Common errors
error ModuleNotFoundError: No module named 'paddle_billing' ↓
cause The `paddle-python-sdk` package is not installed in your Python environment or the import statement is incorrect.
fix
Install the SDK using
pip install paddle-python-sdk. Ensure your import statements correctly reference paddle_billing, e.g., from paddle_billing import Client. error AuthenticationError ↓
cause The API key provided is either missing, incorrect, or does not have the necessary permissions to perform the requested operation.
fix
Verify your Paddle Billing API key is correct and has the required permissions. Ensure it's passed correctly when initializing the SDK client.
error TypeError: Client.__init__ missing 1 required positional argument: 'api_key' ↓
cause The `Client` class was instantiated without providing the mandatory `api_key` argument.
fix
Initialize the
Client with your API key, for example: from paddle_billing import Client; client = Client(api_key='YOUR_API_KEY'). Warnings
breaking Paddle Classic (old platform) and Paddle Billing (new platform) are entirely different APIs with different SDKs. This SDK (paddle-python-sdk) is Paddle Billing only. If your account is on Paddle Classic, this SDK will not work. ↓
fix Check your Paddle dashboard. Paddle Classic shows 'Paddle Classic' branding. Billing uses api.paddle.com endpoints. Classic uses vendors.paddle.com. There is no official Python SDK for Paddle Classic — use requests against the REST API directly.
breaking Requires Python >=3.11. Installing on Python 3.10 or lower will fail at install time or raise a RuntimeError. ↓
fix Upgrade to Python 3.11+.
gotcha Package name is paddle-python-sdk but import module is paddle_billing. 'import paddle' or 'from paddle import ...' will fail — 'paddle' is not the module name. ↓
fix from paddle_billing import Client
gotcha Sandbox and live API keys are separate credentials. Using a live key against the sandbox environment (or vice versa) returns 401 or unexpected data. ↓
fix Generate separate API keys in your Paddle Sandbox account and your live account.
gotcha Paddle Billing list() methods return iterators, not lists. Code that indexes the result directly (products[0]) raises TypeError. ↓
fix Iterate with for product in paddle.products.list() or convert with list(paddle.products.list()).
Install compatibility verified last tested: 2026-05-12
python os / libc status wheel install import disk
3.10 alpine (musl) - - - -
3.10 slim (glibc) - - - -
3.11 alpine (musl) - - 1.94s 31.7M
3.11 slim (glibc) - - 1.58s 32M
3.12 alpine (musl) - - 1.61s 23.4M
3.12 slim (glibc) - - 1.65s 24M
3.13 alpine (musl) - - 1.59s 23.1M
3.13 slim (glibc) - - 1.58s 24M
3.9 alpine (musl) - - - -
3.9 slim (glibc) - - - -
Imports
- Client wrong
import paddle paddle.Client('...')correctfrom paddle_billing import Client paddle = Client('PADDLE_API_SECRET_KEY') - Sandbox environment wrong
paddle = Client('PADDLE_API_SECRET_KEY', sandbox=True)correctfrom paddle_billing import Client, Environment, Options paddle = Client('PADDLE_API_SECRET_KEY', options=Options(Environment.SANDBOX))
Quickstart stale last tested: 2026-05-12
from paddle_billing import Client
paddle = Client('PADDLE_API_SECRET_KEY')
# List products
products = paddle.products.list()
for product in products:
print(f'{product.id}: {product.name}')
# Verify webhook signature
from paddle_billing.Notifications import Secret, Verifier
integrity_check = Verifier().verify(request, Secret('WEBHOOK_SECRET_KEY'))