Cómo configurar precios escalonados en Laravel con Stripe

Si necesitas cobrar a tus clientes según la cantidad de usuarios en tu plataforma usando Stripe y Laravel, este artículo te mostrará cómo configurar correctamente Stripe con "Usage-based", "Per tier" y "Volume" billing models.

03.02.2025 — Marc Bernet — 1 min read

Configuración en Stripe

Stripe permite configurar diferentes modelos de precios escalonados:

  • Usage-based: El precio final se basa en el último nivel alcanzado, por lo que requiere un evento de medición en Stripe.
  • Per tier: Cada nivel de uso tiene un precio fijo asociado.
  • Volume: Un precio único se aplica a todas las unidades consumidas dentro del rango.

En tu cuenta de Stripe, debes:

  1. Crear un precio (price_id) con el modelo de pricing deseado.
  2. Definir los rangos de unidades y sus costos en el panel de precios de Stripe.
  3. Crear un Meter Event y asociarlo al price_id.

 

Crear la suscripción en Laravel

Para iniciar una suscripción con precios escalonados en Laravel, puedes utilizar el siguiente código después de hacer la integración con Stripe Elements:

public function processSubscription(Request $request)
{
    $partner = auth('partner')->user();

    $paymentMethod = $request->input('payment_method');

    $partner->createOrGetStripeCustomer();
    $partner->addPaymentMethod($paymentMethod);

	$price_id = 'price_1...'; //Price ID
    $partner->newSubscription('default')
        ->meteredPrice($price_id)
        ->create($paymentMethod);

    return redirect()->route('subscription.form')->with('success', 'Subscription started!');
}

Reportar uso a Stripe con Laravel

Para que Stripe calcule correctamente las facturas en modelos “usage-based”, debes enviar periódicamente la información de uso (consumo). Esto se hace a través de usageRecords. En Laravel, puedes reportarlo con un Command que se ejecute según tu frecuencia deseada (por ejemplo, cada hora o al final del día).

$subscription = $user->subscriptions()->first();

if ($subscription && $subscription->items->first()) {
	$user->reportMeterEvent('meter_id', quantity: 10);
}

Conclusión

Configurar precios escalonados en Stripe con Laravel es sencillo si defines correctamente los rangos en Stripe y reportas el uso de manera adecuada. Este enfoque permite facturar automáticamente según el número de usuarios sin tener que gestionar manualmente las suscripciones.

💡 ¿Cuánto cuesta desarrollar una app para tu negocio? Ver precios