For AI agents and LLMs: a structured documentation index is available at /llms.txt. Every page has a Markdown sibling — append .md to any URL.

Skip to content
Docs

Node.js SDK

Install, authenticate, and make your first request with the official Paddle Node.js SDK for server-side JavaScript and TypeScript.

AI summary

Install the Paddle Node.js SDK (@paddle/paddle-node-sdk) to integrate Paddle Billing with server-side JavaScript and TypeScript apps. The SDK ships with TypeScript definitions, iterator-based pagination, and webhook signature verification helpers.

  • • Requires Node.js 18 or later; install via pnpm, yarn, or npm and instantiate with new Paddle(process.env.PADDLE_API_KEY!, { environment: Environment.sandbox }) (omit environment for live).
  • • List endpoints return iterators — call next() for a single page and check hasMore, or use for await (const product of paddle.products.list()) to walk every page automatically.
  • • SDK field names are camelCase (e.g. customData), not snake_case like the raw API — for client-side checkouts and Retain, use Paddle.js instead.

The Paddle Node.js SDK integrates Paddle Billing with server-side JavaScript and TypeScript apps. It ships with TypeScript definitions, iterator-based pagination, and helpers for webhook signature verification.

Latest: v3.8.0 · 2026-04-21

To open checkouts, pricing pages, and integrate Retain on the client-side, use Paddle.js or the Paddle.js wrapper.

Requirements

Node.js 18 or later.

Install

pnpm
pnpm add @paddle/paddle-node-sdk
yarn
yarn add @paddle/paddle-node-sdk
npm
npm install @paddle/paddle-node-sdk

Authenticate

Create an API key in Paddle > Developer tools > Authentication, then pass it when you instantiate the client.

API keys are environment-specific. Use a sandbox key for sandbox, a live key for production.

TypeScript
import { Paddle, Environment } from '@paddle/paddle-node-sdk';
const paddle = new Paddle(process.env.PADDLE_API_KEY!, {
environment: Environment.sandbox,
});

Omit the environment option, or set it to Environment.production, to use the live API.

Make your first request

List the first page of products in your catalog:

TypeScript
import { Paddle, Environment } from '@paddle/paddle-node-sdk';
const paddle = new Paddle(process.env.PADDLE_API_KEY!, {
environment: Environment.sandbox,
});
const products = paddle.products.list();
const firstPage = await products.next();
for (const product of firstPage) {
console.log(product.id, product.name);
}

paddle.products.list() returns an iterator. Call next() to fetch the first page, check products.hasMore to see whether more pages are available, or use for await (const product of paddle.products.list()) to iterate every product across all pages.

Naming conventions

The Paddle API uses snake_case. The Node.js SDK uses camelCase to match JavaScript conventions. Field names on requests and responses are camelCase. For example, customData rather than custom_data.

Next steps

  • Understand shared patterns for pagination, idempotency, retries, and error handling across SDKs.
  • Browse the API reference for every resource and operation the SDK exposes.
  • Work against sandbox while you build, then follow the go-live checklist to switch environments.

Was this page helpful?