Laravel Cashier: facturación por suscripción para Laravel

Laravel Cashier proporciona una interfaz fluida y expresiva para manejar facturación de suscripciones (Stripe, Paddle y otras integraciones), reduciendo el trabajo repetitivo al implementar pagos recurrentes.

Tecnología PHP · Laravel · Facturación · Suscripciones

¿Qué es Laravel Cashier?

Laravel Cashier es un conjunto de paquetes oficiales y de la comunidad que facilitan la integración de sistemas de facturación por suscripción en aplicaciones Laravel. Cashier encapsula la mayor parte del trabajo repetitivo necesario para crear, modificar y cancelar suscripciones, manejar cupones, generar facturas y más.

Características principales

  • Gestión de suscripciones: crear, actualizar, cancelar y pausar suscripciones.
  • Cobros recurrentes y pruebas de tarjeta: maneja tokens, métodos de pago y cobros periódicos.
  • Cupones y cambios de plan: soporta descuentos, swapping de planes y cantidades de suscripción.
  • Facturas: generación de facturas (PDF) e historial de cobros para el cliente.
  • Integraciones: existen variantes oficiales para Stripe y Paddle, y paquetes de la comunidad para otros proveedores.

Fuente: documentación oficial y repositorios del proyecto.

Instalación rápida (ejemplo con Stripe)

En términos generales, para instalar Cashier (Stripe) en una app Laravel moderna:

# desde la raíz del proyecto
composer require laravel/cashier

# publicar migraciones/configuración (según versión)
php artisan vendor:publish --tag="cashier-migrations"
php artisan migrate

# en .env
STRIPE_KEY=pk_live_xxx
STRIPE_SECRET=sk_live_xxx

Revisa siempre la documentación oficial para la versión de Laravel que uses (puede variar la configuración y los comandos).

Ejemplo básico (crear suscripción)

Un ejemplo simplificado de cómo podría verse la creación de una suscripción en un controller:

public function subscribe(Request $request)
{
    $user = $request->user();

    // usar un método preparado por Cashier para crear la suscripción
    $user->newSubscription('default', 'price_abc123')->create($request->paymentMethod);

    return redirect()->route('dashboard')->with('success', 'Suscripción activada');
}

Este es un ejemplo orientativo; consulta la guía oficial para flujos completos (webhooks, manejo de fallos, pruebas, etc.).

Ventajas y desventajas

Ventajas

  • Reduce mucho boilerplate al integrar pagos recurrentes y suscripciones.
  • Mantiene coherencia con las convenciones de Laravel (Eloquent, facades, etc.).
  • Ofrece soporte oficial y ejemplos comunitarios para casos comunes.

Desventajas / Consideraciones

  • Aprender la API de Stripe/Paddle y los flujos (tokens, webhooks) tiene curva de aprendizaje.
  • Dependes parcialmente del proveedor de pagos para ciertas operaciones y disponibilidad.
  • Cuidado con versiones: asegúrate de usar la versión de Cashier compatible con tu versión de Laravel.

Recursos útiles

  • Documentación oficial — Cashier (Stripe): ver la guía de billing en la documentación de Laravel.
  • Documentación oficial — Cashier (Paddle): para proyectos que prefieran Paddle.
  • Repositorio GitHub de laravel/cashier (código fuente, issues y contribuciones).
  • Ejemplos y tutoriales comunitarios (repositorios y cursos prácticos).