{"id":58,"library":"paddle-python-sdk","title":"Paddle","description":"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.","status":"active","version":"1.13.0","language":"python","source_language":"en","source_url":"https://github.com/PaddleHQ/paddle-python-sdk","tags":["payments","paddle","billing","subscriptions","merchant-of-record","python"],"install":[{"cmd":"pip install paddle-python-sdk","lang":"bash","label":"Python (requires Python >=3.11)"}],"dependencies":[{"reason":"HTTP client used internally.","package":"httpx","optional":false}],"imports":[{"note":"Package is paddle-python-sdk, module is paddle_billing. There is no 'paddle' importable module from this package.","wrong":"import paddle\npaddle.Client('...')","symbol":"Client","correct":"from paddle_billing import Client\n\npaddle = Client('PADDLE_API_SECRET_KEY')"},{"note":"Sandbox is passed via Options(Environment.SANDBOX), not a boolean flag. Sandbox API keys are separate from live keys.","wrong":"paddle = Client('PADDLE_API_SECRET_KEY', sandbox=True)","symbol":"Sandbox environment","correct":"from paddle_billing import Client, Environment, Options\n\npaddle = Client('PADDLE_API_SECRET_KEY', options=Options(Environment.SANDBOX))"}],"quickstart":{"code":"from paddle_billing import Client\n\npaddle = Client('PADDLE_API_SECRET_KEY')\n\n# List products\nproducts = paddle.products.list()\nfor product in products:\n    print(f'{product.id}: {product.name}')\n\n# Verify webhook signature\nfrom paddle_billing.Notifications import Secret, Verifier\n\nintegrity_check = Verifier().verify(request, Secret('WEBHOOK_SECRET_KEY'))","lang":"python","description":"Paddle Billing SDK. Import module is paddle_billing, not paddle."},"warnings":[{"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.","message":"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.","severity":"breaking","affected_versions":"all"},{"fix":"Upgrade to Python 3.11+.","message":"Requires Python >=3.11. Installing on Python 3.10 or lower will fail at install time or raise a RuntimeError.","severity":"breaking","affected_versions":"all"},{"fix":"from paddle_billing import Client","message":"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.","severity":"gotcha","affected_versions":"all"},{"fix":"Generate separate API keys in your Paddle Sandbox account and your live account.","message":"Sandbox and live API keys are separate credentials. Using a live key against the sandbox environment (or vice versa) returns 401 or unexpected data.","severity":"gotcha","affected_versions":"all"},{"fix":"Iterate with for product in paddle.products.list() or convert with list(paddle.products.list()).","message":"Paddle Billing list() methods return iterators, not lists. Code that indexes the result directly (products[0]) raises TypeError.","severity":"gotcha","affected_versions":"all"}],"env_vars":{"optional":[{"name":"PADDLE_WEBHOOK_SECRET","note":"Used for webhook signature verification via Verifier class."}],"required":[{"name":"PADDLE_API_SECRET_KEY","note":"API secret key from Paddle Dashboard > Developer Tools > Authentication. Separate keys for sandbox and live."}]},"search_vec":"'3.11':25 'bill':7,22,37,43,47 'classic':33 'current':38 'import':19 'legaci':34 'merchant':50 'merchant-of-record':49 'new':9 'note':26 'offici':2 'packag':13 'paddl':1,6,10,16,21,30,32,36,42,46 'paddle-python-sdk':15 'payment':45 'platform':11,31 'pypi':12 'python':3,17,24,53 'record':52 'requir':23 'sdk':4,18,40 'subscript':48 'two':29","created_at":"2026-03-16T04:39:09.011572+00:00","updated_at":"2026-04-16T17:50:56.516766+00:00","problems":[{"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`.","cause":"The `paddle-python-sdk` package is not installed in your Python environment or the import statement is incorrect.","error":"ModuleNotFoundError: No module named 'paddle_billing'"},{"fix":"Verify your Paddle Billing API key is correct and has the required permissions. Ensure it's passed correctly when initializing the SDK client.","cause":"The API key provided is either missing, incorrect, or does not have the necessary permissions to perform the requested operation.","error":"AuthenticationError"},{"fix":"Initialize the `Client` with your API key, for example: `from paddle_billing import Client; client = Client(api_key='YOUR_API_KEY')`.","cause":"The `Client` class was instantiated without providing the mandatory `api_key` argument.","error":"TypeError: Client.__init__ missing 1 required positional argument: 'api_key'"}],"ecosystem":"pypi","meta_description":null,"install_score":80,"quickstart_score":0,"quickstart_tag":"stale","pypi_latest":"1.15.0","cli_name":"","cli_version":null,"type":"library","homepage":"https://developer.paddle.com/api-reference/overview","github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/paddle-python-sdk/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["payments"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-27","last_verified":"2026-08-26","next_check":"2026-07-27","install_tag":"verified"}}