> 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 platform built for modern SaaS businesses. It manages your payments, taxes, and subscriptions in a single integration, so your team can ship features faster.

## Key features for SaaS businesses

{% card-group cols=2 %}
{% card title="Merchant of record" icon="carbon:manage-protection" %}
Tax, compliance, one-click payment methods, and smart routing across 200+ countries are handled for you.
{% /card %}
{% card title="Subscription engine" icon="carbon:repeat" %}
Recurring billing, plan changes, proration, pauses, trials, and dunning come built in, with webhooks for the full lifecycle.
{% /card %}
{% card title="Customer portal" icon="carbon:user-multiple" %}
Low maintenance, simple to integrate customer portal for self-service subscription workflows.
{% /card %}
{% card title="World-class payment recovery" icon="carbon:chart-line" %}
Paddle Retain automatically recovers failed payments, reduces cancellation rates, and increases LTV.
{% /card %}
{% /card-group %}

## Pricing models you can build

In Paddle, products and prices are flexible entities you compose into the structure you need. Products describe what you sell, and related prices describe how you sell a product.

This means you can build any pricing structure you need, from flat, good-better-best, per-seat, usage-based, and feature based pricing.

- **Recurring plans** with any billing period, optional [trials](https://developer.paddle.com/build/trials.md), and multiple items on a subscription.
- **Good-better-best**, like 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 things like activation fees, overage, or single purchases.

If you manage your catalog outside of Paddle, you can add non-catalog items to a transaction or subscription, too.

## Transactions and subscriptions

Transactions and subscriptions are the core billing entities in Paddle:

- When a transaction (checkout or invoice) is completed, Paddle creates a related subscription.
- When a subscription renews, Paddle creates a new transaction to collect payment for it.
- Upgrades, one-time charges, and other changes to a subscription create transactions, too.

The entire subscription lifecycle can be understood in terms of these two entities, meaning it's easy to determine the state of a subscription at any given time.

## The subscription lifecycle

The subscription billing engine in Paddle handles the complete subscription lifecycle, including signup, renewal, upgrade and downgrade, pause, and cancellation.

```mermaid
flowchart LR
    S[sign up] --> A[trialing]
    A --> B[active]
    B <--> C[past_due]
    B --> D[paused]
    D --> B
    B --> E[canceled]
    C --> E
```

To handle fulfillment, you can listen for webhooks for the subscription lifecycle and update your database accordingly. Paddle includes over 50 webhooks, but a basic billing workflow involves listening to just two:

| Event | Purpose |
|---|---|
| `subscription.created` | A new subscription exists. Save the customer and subscription IDs against your user, and grant access. |
| `subscription.updated` | Something about the subscription has changed, like its status, items, scheduled changes, or billing period. Re-read the cached fields you store. |

## Self-service for your customers

Customers expect to manage their own subscription without filing a support ticket. The customer portal gives customers a hosted page where they can:

- Update payment methods.
- View past invoices and download receipts.
- Cancel, with a 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.

For a completely custom experience, you can build your own billing management screens in your app using the API or SDKs. Everything the portal offers is available for developers, too.

## 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.md) is fully integrated with Paddle Billing, recovering failed payments and reducing churn automatically.

- **Payment recovery and dunning** for failed payments, using ML-tuned schedules and acquirer-specific logic across millions of transactions.
- **Cancellation flows** salvage customers at the moment they want to cancel with offers and win-back paths.
- **Term optimization** nudges customers from monthly to annual plans at renewal, lifting LTV.

Retain works on top of Paddle Billing, using Paddle.js, Paddle Checkout, and the customer portal.

## Ready to scale

Paddle helps you unlock new markets and win bigger deals:

- **Localized pricing** in 30+ currencies, set automatically from your base price or configured per country.
- **Global payment methods** like Apple Pay, Google Pay, PayPal, plus regional methods like iDEAL, Bancontact, Pix, and UPI. No need to add individual processors.
- **Tax compliance** in 200+ countries, including VAT, GST, sales tax, and digital services taxes.
- **Hybrid billing support** means you can move subscriptions to invoices for larger deals in one-click or API call, with no data duplication.

## Next steps

{% card-group cols=3 %}
{% card title="Next.js starter kit" icon="carbon:application-web" url="/get-started/starter-kits/nextjs-saas" %}
Deploy a working SaaS app to Vercel in minutes.
{% /card %}
{% card title="Quickstart" icon="carbon:rocket" url="/get-started/quickstart" %}
Walk through the five steps to get started end to end.
{% /card %}
{% card title="Integrate with AI" icon="sparkles" url="/get-started/ai" %}
Install the Paddle MCP or skills to add Paddle to your app.
{% /card %}
{% /card-group %}