Saltar al contenido principal

Negociación y acuerdos

Un acuerdo consolida una o más deudas del cliente en un plan de cuotas, con o sin descuento, dentro de las condiciones que tú autorizaste. Puede nacer de dos maneras: propuesto por el operador (dashboard o API) o aceptado por el propio deudor en el portal de autoservicio.

Detalle de un acuerdo

Anatomía de un acuerdo

CampoSignificado
Valor originalSuma de los valores actualizados de los cobros incluidos
DescuentoValor rebajado (limitado por la oferta/campaña activa)
Valor finalOriginal − descuento: es lo que se pagará
CuotasCantidad y valor de cada cuota mensual
Primera cuotaFecha de vencimiento de la cuota 1
Términos aceptadosTexto de los términos al momento de la aceptación
IP de la aceptaciónDirección IP registrada como evidencia de la aceptación

Ciclo de vida

proposed ──► accepted ──► active ──► completed
│ │ ├──► defaulted ──► active (regularizado)
└──► cancelled ◄─────────┘
  • Propuesto (proposed) — la propuesta existe, a la espera de aceptación. Solo las propuestas pueden ser aceptadas.
  • Aceptado (accepted) — aceptación registrada (con fecha, IP y términos); las cuotas se generan en este momento.
  • Activo (active) — acuerdo en pago.
  • Completado (completed) — todas las cuotas saldadas. Estado final.
  • Moroso (defaulted) — acuerdo incumplido; puede regularizarse (vuelve a active) o cancelarse. El incumplimiento se marca manualmente (no hay detección automática) — ver Cuotas e incumplimiento.
  • Cancelado (cancelled) — cerrado sin conclusión; las cuotas pendientes se cancelan junto con él. Estado final.

Consulta los efectos del incumplimiento en Cuotas e incumplimiento.

Flujo del operador

  1. En Acuerdos → Nuevo Acuerdo, elige el cliente, el valor, el descuento, el número de cuotas (hasta 120 vía API) y la fecha de la primera cuota. El acuerdo nace proposed.
  2. Cuando el cliente confirme, usa Aceptar Acuerdo: el sistema cambia el status a accepted, registra la fecha y el IP de la aceptación y genera las cuotas automáticamente.

:::note La aceptación es idempotente Solo un acuerdo proposed puede ser aceptado. Aceptar un acuerdo que ya salió de ese estado — porque ya fue aceptado o porque dos solicitudes corrieron al mismo tiempo — devuelve 409 (CONFLICT) sin efecto colateral: las cuotas nunca se generan por duplicado. :::

Flujo del portal (autoservicio)

En el portal, el deudor selecciona los cobros, simula el plan de cuotas y acepta. Aquí está la protección más importante del flujo:

:::info Validación server-side de la propuesta El descuento y el plan de cuotas nunca se aceptan desde el navegador. En la aceptación, el servidor verifica la propuesta contra la oferta de negociación activa (campaña u oferta de la regla de cobranza): un descuento por encima de lo autorizado o cuotas más allá del tope son rechazados con error, y el intento queda registrado en el log de acceso como propuesta adulterada. Sin ninguna oferta activa, no hay descuento y el plan se limita a 12 cuotas. :::

En el portal, la primera cuota vence en 10 días y el plan de cuotas llega hasta el tope de la oferta (máximo absoluto de 24 cuotas). La aceptación registra IP, términos y una interacción en la línea de tiempo del cliente.

Efecto en la regla de cobranza

El motor trata el acuerdo aceptado como salida exitosa de la regla de cobranza: el cobro pasa al status negotiated, el enrollment se concluye con el motivo agreement_accepted y los envíos pendientes se cancelan. La revalidación previa al envío garantiza que ningún mensaje de cobro salga hacia un cobro negociado — el deudor que cerró un acuerdo no sigue siendo cobrado por la deuda original.

Eventos e integración

Los webhooks agreement.accepted (y demás eventos de acuerdo) notifican a tus sistemas en tiempo real — útil para emitir los boletos de las cuotas en tu ERP o gateway. Consulta la referencia de la API en /api/v1/agreements.