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

Laravel Cashier Paddle

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

AI summary

Use Laravel Cashier Paddle to integrate Paddle Billing with a fluent Laravel API for subscriptions, swaps, pausing, quantities, and cancellation grace periods. The package is maintained by the Laravel team, not by Paddle.

  • • Install with composer require laravel/cashier-paddle, then publish migrations and add the Billable trait to your User model following the Laravel Cashier Paddle documentation.
  • • Set PADDLE_CLIENT_SIDE_TOKEN, PADDLE_API_KEY, PADDLE_WEBHOOK_SECRET, and PADDLE_SANDBOX from Paddle > Developer tools > Authentication.
  • • Use the @paddleJS Blade directive to load Paddle.js, then build checkouts via $user->checkout('pri_...') and render with the <x-paddle-button> component.

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.

Cashier Paddle is maintained by the Laravel team, not by Paddle. For support, use the Cashier Paddle issue tracker.

Install

Require the package via Composer:

Shell
composer require laravel/cashier-paddle

Follow the Laravel documentation 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>

Was this page helpful?