Consentimiento extendido
Consentimiento extendido
Un consentimiento REDEC dura 15 días hábiles. Si en ese plazo le otorgas al deudor el crédito que evaluaste, ese mismo consentimiento queda extendido: sigue vigente mientras dure la obligación y el deudor ya no puede revocarlo (NCG 576, numerales 5.3 y 7.4).
Soyio no sabe cuándo otorgas un crédito ni cuándo termina, así que debes informarlo con dos llamadas: una para extender el consentimiento y otra para cerrar la extensión.
Desde el dashboard, registra ambos en la tarjeta "Extensión" del detalle del consentimiento mientras esté vigente o extendido; ahí las fechas se ingresan en la zona horaria de tu empresa. Si el consentimiento ya caducó o fue revocado después de otorgar el crédito, regístralo por API.
Las dos etapas
| Etapa | Qué pasa | Cuánto dura |
|---|---|---|
| Evaluación | El deudor otorga el consentimiento y consultas su deuda para evaluar el crédito. | 15 días hábiles desde el otorgamiento |
| Operación | Otorgaste el crédito y extiendes el consentimiento. | Hasta que cierres la extensión |
Ambas etapas usan el mismo consentimiento y el mismo código REDEC. No necesitas capturar un consentimiento nuevo para la operación.
Extiende el consentimiento apenas otorgues el crédito. Mientras Soyio no lo sepa, el deudor puede revocarlo (desde el Privacy Center o con una revocación que registres por API) y esa revocación sale en el siguiente RDC30.
Extiende el consentimiento
POST /api/v1/redec/consent_actions/{consent_action_token}/extend
Envía en consent_action_token el id del consent action otorgado (consact_...) o su código REDEC.
| Parámetro | Requerido | Descripción |
|---|---|---|
operation_granted_at | Sí | Fecha y hora en que otorgaste el crédito, en ISO 8601 con zona horaria. Debe estar dentro de los 15 días hábiles del consentimiento y no puede ser futura. |
operation_id | No | Identificador de la operación de crédito en tu sistema, de hasta 30 caracteres. |
- cURL
- JavaScript
curl -X POST "https://app.soyio.id/api/v1/redec/consent_actions/consact_1B2M2Y8AsgTpgAmY7PhCfg/extend" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operation_granted_at": "2026-10-26T15:30:00-03:00",
"operation_id": "OP-123"
}'
const consentActionId = 'consact_1B2M2Y8AsgTpgAmY7PhCfg';
const response = await fetch(
`https://app.soyio.id/api/v1/redec/consent_actions/${consentActionId}/extend`,
{
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SOYIO_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
operation_granted_at: '2026-10-26T15:30:00-03:00',
operation_id: 'OP-123',
}),
},
);
const { redec_extension: extension } = await response.json();
La respuesta trae la extensión registrada:
{
"redec_extension": {
"id": "redecext_8fK2Lq0vT3mXa1bC9dE4fG",
"kind": "extend",
"consent_action_id": "consact_1B2M2Y8AsgTpgAmY7PhCfg",
"redec_id": "AB12CD34EF56GH78IJ90",
"operation_id": "OP-123",
"operation_granted_at": "2026-10-26T18:30:00.000Z",
"obligation_ended_at": null,
"closing_reason": null,
"agreement_id": "agr_1B2M2Y8AsgTpgAmY7PhCfg",
"agreement_version": 4,
"created_by": { "id": "pk_1B2M2Y8AsgTpgAmY7PhCfg", "type": "api_key" },
"created_at": "2026-10-26T18:35:00.000Z"
}
}
Qué responde:
201cuando registra la extensión.200si repites la llamada con los mismos datos. Devuelve la extensión que ya estaba registrada.409si repites la llamada con datos distintos.422si el consentimiento no es REDEC, si el crédito se otorgó fuera de sus 15 días hábiles o si el deudor lo revocó antes del otorgamiento.
Si el deudor revocó después de que otorgaste el crédito, pero antes de que registraras la extensión, Soyio acepta la extensión y esa revocación queda sin efecto para este consentimiento: deja de contar en su estado y en los próximos RDC30. Soyio no corrige los reportes que ya enviaste ni avisa al deudor; si corresponde, hazlo tú.
Qué cambia mientras está extendido
- Compliance status: el consentimiento cumple aunque hayan pasado los 15 días hábiles, y
is_revokableesfalse, salvo que el deudor tenga otro consentimiento vigente de la misma plantilla. Sigue validando compliance antes de cada consulta. - Consultas a la CMF: reporta los accesos en RDC31 mientras el consentimiento esté extendido.
- Revocación del deudor: el deudor ya no puede revocar este consentimiento. Si el deudor intenta revocarlo desde el Privacy Center, o si registras su revocación por API, Soyio responde
422. La única excepción es que el deudor tenga otro consentimiento vigente de la misma plantilla: en ese caso la revocación aplica a ese otro, y el extendido sigue vigente. - RDC30: la extensión no cambia el reporte. El consentimiento se informa una sola vez, cuando se otorga.
Mientras el consentimiento esté extendido, data_permissions[].expires_at es null. Al construir la llamada a la CMF, envía 19000101 en fecha_fin_consentimiento y 999999 en hora_fin_consentimiento, los mismos valores que Soyio informa en el RDC30 para un consentimiento sin revocar.
Si el deudor pide revocar en una sucursal, regístralo como una revocación del deudor, no con el endpoint de revocaciones de la empresa. Así Soyio puede aplicar la protección del consentimiento extendido.
Cierra la extensión
Cuando termina la obligación, cierra la extensión:
POST /api/v1/redec/consent_actions/{consent_action_token}/close_extension
| Parámetro | Requerido | Descripción |
|---|---|---|
obligation_ended_at | Sí | Fecha y hora en que terminó la obligación, en ISO 8601 con zona horaria. No puede ser futura ni anterior al otorgamiento del crédito. |
closing_reason | Sí | Motivo del término: payment (pago), acceleration (aceleración), novation (novación) u other (otro). |
curl -X POST "https://app.soyio.id/api/v1/redec/consent_actions/consact_1B2M2Y8AsgTpgAmY7PhCfg/close_extension" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"obligation_ended_at": "2027-03-15T18:00:00-03:00",
"closing_reason": "payment"
}'
Desde obligation_ended_at el consentimiento deja de estar vigente: el compliance status deja de cumplir y Soyio rechaza los accesos posteriores que reportes para el RDC31. Si el deudor tiene otro consentimiento vigente para los mismos datos, ese sigue cubriéndolos.
Cerrar no es revocar. Soyio no avisa al deudor ni informa el cierre en el RDC30. La fecha de término queda registrada: es la que la norma usa para contar los 5 años durante los que debes conservar la información del consentimiento.
Una reprogramación mantiene la obligación, así que no cierres la extensión. Una novación la extingue: cierra la extensión con closing_reason: novation. Si después evalúas un crédito nuevo, necesitas un consentimiento nuevo.
Webhooks
Soyio envía un evento cuando registras cada paso:
| Evento | Cuándo se envía |
|---|---|
consent_action.redec_extended | Al extender un consentimiento |
consent_action.redec_extension_closed | Al cerrar la extensión |
Ambos traen el consent_action_id, el user_reference, el redec_id y los datos de la extensión en redec_extension.