Todas las funcionalidadesBloque A: Monetización

Referidos con comisión por viaje

Además del bono de activación de toda la vida, ahora el conductor (o pasajero) que invitó puede ganar una comisión recurrente sobre CADA viaje de su referido. Configurable por tenant: porcentaje sobre la tarifa final, duración en días desde la activación y tope opcional de viajes pagados por referido. La acreditación es automática al completar cada viaje, aparece directamente en el monedero con descripción clara ('Comisión por viaje del referido <nombre> · viaje TRP123 · 5% de $120 MXN') y queda registrada en una tabla de movimientos que alimenta el reporte por conductor: cuántos refirió, cuánto generó cada uno, historial de cada pago. Cada cambio de tasa guarda un snapshot, así que los movimientos viejos siempre se pueden auditar. Idempotente, gateado per-tenant, default OFF para no afectar a quien no lo prenda.

Panel WebApp ConductorApp Pasajero

Qué incluye

% configurable por tenant sobre la tarifa final del viaje
Duración en días desde la activación (opcional, sin límite por default)
Tope opcional de pagos por referido (ej. 'pagar máx. 50 viajes')
Acreditación automática al completar el viaje (idempotente)
Descripción clara en el monedero del referrer con nombre del referido + tripCode + %
Reporte por conductor: pagos hechos, referidos únicos, total acreditado
Tabla ReferralRevenue rastreable + snapshot de la tasa aplicada
Editable desde dashboard y desde el endpoint AI-agent
Coexiste con el bono one-shot de activación — no es excluyente

Detalles técnicos

SchemaReferralProgram.recurringCommissionRate/DurationDays/MaxTrips + ReferralRevenue (ledger)
Hooksrc/lib/services/referral/recurring-commission.ts → accrueRecurringForTrip()
Disparado en/api/mobile/trips/[id]/complete (tras dispersión)
Reporte API/api/companies/[id]/referrals/revenue + /api/ai-agent/referrals/revenue
Config API/api/ai-agent/referrals (PATCH)
Doctrinadocs/arquitectura/REFERIDOS_COMISION_RECURRENTE.md
Defaultrate=null → comportamiento legacy preservado

¿Quieres ver esta funcionalidad en acción?

Agenda una demo personalizada y te mostramos cómo funciona en tu operación.