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

# Laravel Cashier Paddle

Official Laravel package that provides a fluent interface to Paddle Billing subscription services, including swaps, pausing, quantities, and grace periods.

---

[Laravel Cashier Paddle](https://github.com/laravel/cashier-paddle) is a Laravel package that provides a fluent interface to Paddle Billing. It wraps subscription management — swaps, pausing, quantities, cancellation grace periods — so you don't have to write the boilerplate.

{% callout type="info" %}
Cashier Paddle is maintained by the [Laravel team](https://github.com/laravel), not by Paddle. For support, use the [Cashier Paddle issue tracker](https://github.com/laravel/cashier-paddle/issues).
{% /callout %}

{% card-group cols=3 %}
{% card title="GitHub" icon="carbon:logo-github" url="https://github.com/laravel/cashier-paddle" %}
View source code and report issues on GitHub.
{% /card %}
{% card title="Packagist package" icon="composer" url="https://packagist.org/packages/laravel/cashier-paddle" %}
View and install on Packagist.
{% /card %}
{% card title="Changelog" icon="carbon:bullhorn" url="https://github.com/laravel/cashier-paddle/blob/2.x/CHANGELOG.md" %}
See recent releases and changes.
{% /card %}
{% /card-group %}

## Install

Require the package via Composer:

```bash
composer require laravel/cashier-paddle
```

Follow the [Laravel documentation](https://laravel.com/docs/cashier-paddle) for the full install — publishing migrations, configuring environment variables, and wiring up the `Billable` trait on your User model.

## Configure

Cashier Paddle reads configuration from standard Laravel environment variables:

```env
PADDLE_CLIENT_SIDE_TOKEN=your-paddle-client-side-token
PADDLE_API_KEY=your-paddle-api-key
PADDLE_WEBHOOK_SECRET="your-paddle-webhook-secret"
PADDLE_SANDBOX=true
```

Create the API key and client-side token in **Paddle > Developer tools > Authentication** and the webhook secret on your notification destination in **Paddle > Developer tools > Notifications**.

## Quick example

Load Paddle.js by placing the `@paddleJS` Blade directive right before your application layout's closing `</head>` tag:

```blade
<head>
    @paddleJS
</head>
```

Open a checkout for a single price inside a route:

```php
use Illuminate\Http\Request;

Route::get('/buy', function (Request $request) {
    $checkout = $request->user()
        ->checkout('pri_01hsxyh9txq4rzbrhbyngkhy46')
        ->returnTo(route('dashboard'));

    return view('checkout', ['checkout' => $checkout]);
});
```

Render the checkout in a Blade template using the Paddle.js button component provided by Cashier:

```blade
<x-paddle-button :checkout="$checkout" class="px-8 py-4">
    Buy
</x-paddle-button>
```