Claude Code Plugins

Community-maintained marketplace

Feedback

laravel-billing

@fusengine/agents
0
0

Integrate Stripe and Paddle payments with Laravel Cashier. Use when implementing subscriptions, invoices, payment methods, or billing portals.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name laravel-billing
description Integrate Stripe and Paddle payments with Laravel Cashier. Use when implementing subscriptions, invoices, payment methods, or billing portals.

Laravel Billing (Cashier)

Documentation

Billing

Stripe Setup

// Install
composer require laravel/cashier

// User model
use Laravel\Cashier\Billable;

class User extends Authenticatable
{
    use Billable;
}

Subscription Controller

<?php

declare(strict_types=1);

namespace App\Http\Controllers;

final class SubscriptionController extends Controller
{
    public function store(Request $request)
    {
        $request->user()
            ->newSubscription('default', 'price_monthly')
            ->create($request->paymentMethodId);

        return redirect()->route('dashboard');
    }

    public function cancel(Request $request)
    {
        $request->user()->subscription('default')->cancel();
        return back();
    }

    public function resume(Request $request)
    {
        $request->user()->subscription('default')->resume();
        return back();
    }
}

Check Subscription Status

if ($user->subscribed('default')) {
    // Has active subscription
}

if ($user->subscribedToPrice('price_monthly', 'default')) {
    // On monthly plan
}

if ($user->onTrial('default')) {
    // Currently on trial
}

if ($user->subscription('default')->cancelled()) {
    // Subscription cancelled
}

if ($user->subscription('default')->onGracePeriod()) {
    // Still has access after cancellation
}

Single Charges

$user->charge(1000, $paymentMethodId);
$user->invoiceFor('Product Name', 1500);
$user->refund($paymentIntentId);

Billing Portal

Route::get('/billing', function (Request $request) {
    return $request->user()->redirectToBillingPortal(route('dashboard'));
})->middleware('auth');

Webhooks

Route::post('/stripe/webhook', [WebhookController::class, 'handleWebhook']);

class WebhookController extends CashierController
{
    public function handleInvoicePaymentSucceeded($payload)
    {
        // Handle successful payment
    }
}