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

# Paddle for SaaS

How Paddle handles billing, subscriptions, customer self-service, and global tax compliance for SaaS businesses.

---

Paddle is a merchant of record for SaaS — you sell, Paddle handles tax, fraud, payment routing, and global compliance. The subscription engine takes care of the lifecycle (renewals, upgrades, pauses, dunning); the customer portal handles self-service. This page covers what Paddle gives a SaaS team and where to start building.

## What Paddle gives SaaS teams

{% card-group cols=2 %}
{% card title="Merchant of record" icon="carbon:manage-protection" %}
Paddle is the seller on every transaction. Tax registration, VAT, sales tax, GST, and payment routing across 200+ countries are handled for you — no tax department, no per-region payment processors.
{% /card %}
{% card title="Subscription engine" icon="carbon:repeat" %}
Recurring billing, plan changes, proration, pauses, trials, and dunning come built in. The engine emits webhooks at every state change so your app stays in sync.
{% /card %}
{% card title="Customer portal" icon="carbon:user-multiple" %}
A hosted portal where customers update payment details, change plans, and download invoices. Drop in the link or embed it — no portal to build yourself.
{% /card %}
{% card title="Paddle Retain" icon="carbon:chart-line" %}
Built-in dunning, payment recovery, cancellation flows, and term optimization to keep more revenue without writing churn tooling.
{% /card %}
{% /card-group %}

## Pricing models you can build

Most subscription models you'd want to ship are first-class in Paddle:

- **Recurring plans** with monthly or annual billing, optional [trials](https://developer.paddle.com/build/trials.md), and any combination of currencies.
- **Tiered plans** — Starter, Pro, Enterprise — by creating one product per tier.
- **Per-seat billing** by [adding seats as a quantity](https://developer.paddle.com/build/subscriptions/add-remove-products-prices-addons.md) on a price item.
- **Add-ons** on top of a base plan, billed on the same cycle or a different one.
- **Usage-based charges** for metered features, billed via custom items on the next invoice.
- **Plan changes** with [proration](https://developer.paddle.com/concepts/subscriptions/proration.md) calculated to the minute, and your choice of whether to bill now, on the next renewal, or skip billing.
- **One-time charges** alongside subscriptions — for activation fees, overage, or single purchases.

You don't need to model your pricing as a rigid hierarchy. In Paddle, products and prices are flexible entities you compose into the structure you need. See [Create products and prices](https://developer.paddle.com/build/products/create-products-prices.md).

## The subscription lifecycle

Every subscription moves through the same states: created, billed, renewed, changed, paused, cancelled. Paddle owns the orchestration; your app owns the entitlement. The connective tissue is webhooks.

```text
checkout completes
    ↓
transaction.completed   → record the purchase
subscription.created    → create the entitlement in your DB
    ↓ (later)
subscription.updated    → sync plan changes
subscription.paused     → revoke access on the pause date
subscription.canceled   → revoke access on the cancellation date
transaction.completed   → record renewal payments
```

The full pattern — webhook handler, idempotency, signature verification, mapping subscriptions to user accounts — is covered in [Provision access with webhooks](https://developer.paddle.com/build/subscriptions/provision-access-webhooks.md). Every backend SDK ships a signature verifier; never grant access based on the redirect alone.

## Self-service for your customers

Customers expect to manage their own subscription without filing a support ticket. Paddle's customer portal gives them a hosted page where they can:

- Update payment methods.
- Change plans (subject to rules you define).
- View past invoices and download receipts.
- Cancel, with optional cancellation flows that surface offers before the customer leaves.

You can [link to the portal](https://developer.paddle.com/build/customers/integrate-customer-portal.md) directly from your app, or generate per-customer authenticated sessions for a more seamless handoff. Either way, you're not building this yourself.

For the conceptual overview, see [Customer portal](https://developer.paddle.com/concepts/sell/customer-portal.md).

## Reduce churn with Paddle Retain

Subscription businesses lose more revenue to failed payments and avoidable churn than they realize. [Paddle Retain](https://developer.paddle.com/concepts/retain/overview.md) is the built-in answer:

- **Payment recovery and dunning** retry failed payments using ML-tuned schedules and acquirer-specific logic — work that's hard to replicate from scratch.
- **Cancellation flows** intercept the cancel button with offers, surveys, or win-back paths.
- **Term optimization** prompts customers on monthly plans to switch to annual at renewal.

Retain works on top of your existing Paddle subscriptions — no separate integration. Most of it is configured in the dashboard rather than written in code.

## Going global

Paddle handles the parts of going global that are hard:

- **Localized pricing** in 30+ currencies, set automatically from your base price or overridden per region.
- **Local payment methods** — Apple Pay, Google Pay, PayPal, plus regional methods like iDEAL, Bancontact, Pix, and UPI — without adding individual processors.
- **Tax compliance** in 200+ countries, including VAT, GST, sales tax, and digital services taxes. Paddle is the merchant of record, so the tax registration is Paddle's, not yours.
- **Currency display** that matches the customer's region, with FX handled by Paddle.

For the supported list, see [supported countries and locales](https://developer.paddle.com/concepts/sell/supported-countries-locales.md) and [supported currencies](https://developer.paddle.com/concepts/sell/supported-currencies.md).

## Where to start

{% card-group cols=3 %}
{% card title="Next.js SaaS starter kit" icon="carbon:application-web" url="/get-started/starter-kits/nextjs-saas" %}
Deploy a working three-tier subscription app to Vercel — Supabase auth, Paddle Checkout, webhook handler, and a customer portal link.
{% /card %}
{% card title="Quickstarts" icon="carbon:rocket" url="/get-started/quickstart" %}
Walk through the five steps end to end — sandbox setup, catalog, pricing page, checkout, webhooks — framework-agnostic.
{% /card %}
{% card title="Build subscriptions" icon="carbon:repeat" url="/build/subscriptions" %}
The full reference for subscription lifecycle work — pause, resume, plan changes, billing date changes, addons.
{% /card %}
{% /card-group %}