> For the complete documentation index, see [llms.txt](https://developer.paddle.com/llms.txt).

# PHP and Node.js SDKs now available

Use our PHP or Node.js SDKs to streamline integrating with Paddle Billing. Fully-featured from webhook verification to every API operation. Available now on GitHub.

---

## What's new?

For the past few months, we've been working on SDKs for Paddle Billing for PHP and Node.js. They're now feature complete and publicly available on GitHub.

## How it works

SDKs make it easier to work with the Paddle Billing platform. They reduce the amount of boilerplate code you need to write and include helper functions to make it quicker and easier to integrate Paddle Billing.

Today we released SDKs for [PHP](https://github.com/PaddleHQ/paddle-php-sdk/) and [Node.js](https://github.com/PaddleHQ/paddle-node-sdk/), two of the most popular programming languages in our developer community.

### Key features

* Install using popular package or dependency managers.
* Fully feature complete with the Paddle API.
* Includes helper functions to help you verify webhook signatures.
* Released under the Apache 2.0 license, so anyone in the Paddle community can contribute.

## Examples

This example shows initializing a new Paddle client with an [API key](https://developer.paddle.com/api-reference/about/api-keys.md) and iterating through products.

{% tabs %}
{% tab-item title="PHP" %}

```php
use Paddle\SDK\Client;
use Paddle\SDK\Environment;
use Paddle\SDK\Options;

$paddle = new Client('API_KEY');

$products = $paddle->products->list();

foreach ($products as $product) {
    echo $product->id;
}
```

{% /tab-item %}
{% tab-item title="Node.js" %}

```typescript
import { Paddle } from '@paddle/paddle-node-sdk'

const paddle = new Paddle('API_KEY')

function getProducts() {
    return paddle.products.list()
}

try {
    const productCollection = getProducts()
    const firstPage = await productCollection.next()
} catch (e) {
    // handle Network/API errors
}
```

{% /tab-item %}
{% /tabs %}

For more examples, see [`@PaddleHQ/paddle-php-sdk`](https://github.com/PaddleHQ/paddle-php-sdk/) or [`@PaddleHQ/paddle-node-sdk`](https://github.com/PaddleHQ/paddle-node-sdk/) on GitHub.

## Next steps

This change is available now.

There are no changes to endpoints or fields in the API as a result of this change.

Go to [`@PaddleHQ/paddle-php-sdk`](https://github.com/PaddleHQ/paddle-php-sdk/) or [`@PaddleHQ/paddle-node-sdk`](https://github.com/PaddleHQ/paddle-node-sdk/) on GitHub to get started with our PHP or Node.js SDKs.

### Early access program participants

Huge thanks to everyone who was part of our early access program for testing and giving us your feedback. If you used our prerelease SDKs, you’ll need to make a few small changes to switch over to our public versions:

* **PHP**  
   Import the package from the public Packagist rather than the private one by running `composer require paddlehq/paddle-php-sdk`.
* **Node.js**  
   Remove the `//registry.npmjs.org/:_authToken=$NPM_TOKEN_GOES_HERE` line from the `.npmrc` file at the root of any projects, where `NPM_TOKEN_GOES_HERE` is the unique NPM access token that we sent you.

You must do this before **January 30th, 2024** to avoid disruption to your integration. You only need to do this once.