Product Decisions This Supports
- Merchant-of-record decision (Paddle vs. Stripe): This package is the "last mile" enabling a Paddle-based monetization strategy. If your product decision is to offload global sales tax, VAT, invoicing, and chargeback liability to a merchant of record, this is the glue that connects that decision to your Laravel app.
- Monetization architecture for an existing Laravel monolith: It supports the decision to ship subscriptions, one-time purchases, and license/checkout flows directly inside the app —
Billable-style traits, webhook-driven state, and receipt/subscription persistence — without standing up a separate billing service.
- Build vs. buy for the integration layer: The real build/buy question is "do we write our own Paddle adapter, adopt a community wrapper, or adopt Laravel's first-party Cashier for Paddle?" This package is a buy/borrow option that trades control for speed.
- Entitlement & packaging roadmap: Webhook-driven subscription state is what lets you gate features by plan, run trials, handle dunning/grace periods, and change pricing tiers without a re-architecture. Useful for roadmap conversations about usage-based tiers, annual plans, and upgrade/downgrade paths.
- International launch sequencing: Choosing an MoR lets you launch in VAT-heavy markets (EU, UK) without building tax infrastructure — a go-to-market decision this package operationalizes.
- Platform upgrade cadence (Laravel 12): The 2.10.0 release adds Laravel 12.x compatibility, so adopting this package does not pin your framework upgrade roadmap to an abandoned dependency. Useful when sequencing a Laravel 11 → 12 upgrade alongside billing work — but note this is one data point, not a support commitment.
- Internal prototyping / reference implementation: Even if you don't adopt it, its webhook processing and model design are a useful reference for scoping your own adapter.
When to Consider This Package
Reasonable fits:
- You have already committed to Paddle as your payment/MoR provider and are building on Laravel.
- You want a working starting point for subscriptions, checkout links, and webhook handling in days, not weeks.
- Your team is small, the integration is non-differentiating, and you accept maintaining a thin vendored layer.
- You are on, or planning to move to, Laravel 12 and want a dependency that won't block that upgrade (2.10.0 added Laravel 12.x support).
- You need a reference design for how to model receipts, subscriptions, and webhook idempotency.
Look elsewhere when:
- Paddle Billing vs. Paddle Classic compatibility is unverified. This remains the single most important diligence question, and 2.10.0 does not answer it — the release is a framework-compatibility change only, with no API-surface work. Paddle's legacy Classic API has been sunset in favor of Paddle Billing; if this package targets the Classic surface, it is a migration liability, not an accelerator.
- Laravel Cashier for Paddle meets your needs. First-party, maintained by the Laravel team, documented, and the default answer for new work. Community wrappers generally need a compelling differentiator to win here.
- You need vendor SLA, security review artifacts, or long-term support. 202 stars, zero listed dependents, and a single-maintainer bus factor is a real procurement blocker for anything revenue-critical. The Laravel 12 PR came from a community contributor (
laravel-shift), which is a positive maintenance signal but not a substitute for a support contract.
- Your billing model is complex — metered/usage-based pricing, multi-currency edge cases, marketplace payouts, or entitlements spanning multiple products. You'll want the official Paddle SDK or a dedicated billing service.
- You are not on Laravel, or you're on a Laravel version outside the package's tested matrix. Laravel 12 is now in scope as of 2.10.0; still verify
composer.json constraints and CI coverage for your exact version before committing.
Mitigation if you do adopt: wrap it behind your own BillingGateway interface so the vendor choice stays reversible, pin the version (and treat 2.10.0 as the new floor if you're on Laravel 12), and add contract tests around webhook handling and subscription state transitions.
How to Pitch It (Stakeholders)
To executives: Paddle as merchant of record removes the tax, invoicing, and compliance burden of selling internationally — meaningful cost and risk avoidance versus building it ourselves or using a processor-only model like Stripe. This package is a small, MIT-licensed Laravel connector that gets subscriptions and webhooks live quickly, and the 2.10.0 release confirms it is being kept current with Laravel — it now supports Laravel 12, so it won't block our framework upgrade path. The strategic decision is Paddle or not; this library is an implementation detail and is cheaply reversible if we isolate it behind an internal interface. Caveat to state plainly: it is a community package with a small maintainer surface and no formal support, and the recent release was purely a compatibility bump — it tells us nothing about whether it targets Paddle's current Billing API. We should adopt it only after confirming that, otherwise we default to Laravel's first-party Cashier for Paddle.
To engineering: A thin wrapper — config, facade, webhook processing, Billable trait, receipt/subscription models. Low conceptual overhead, easy to read and fork. 2.10.0 is a one-line-significance release: Laravel 12.x compatibility via a community PR, no API or behavioral changes, so no migration work and no reason to rush the bump unless you're moving to Laravel 12. Treat it as a head start rather than a foundation: pin the version, wrap it in an adapter, own the webhook idempotency and replay logic ourselves, and still budget a day for Paddle Billing vs. Classic API-compatibility verification before we commit — that question is untouched by this release.