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.

Anatomía de un acuerdo
| Campo | Significado |
|---|---|
| Valor original | Suma de los valores actualizados de los cobros incluidos |
| Descuento | Valor rebajado (limitado por la oferta/campaña activa) |
| Valor final | Original − descuento: es lo que se pagará |
| Cuotas | Cantidad y valor de cada cuota mensual |
| Primera cuota | Fecha de vencimiento de la cuota 1 |
| Términos aceptados | Texto de los términos al momento de la aceptación |
| IP de la aceptación | Direcció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 aactive) 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
- 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. - 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.