Genera reportes RDC31
Genera reportes RDC31
El reporte RDC31 consolida los accesos a la base de deuda realizados bajo un consentimiento REDEC válido. Soyio almacena cada acceso reportable y genera el archivo en el formato de ancho fijo requerido por la CMF.
Cuándo usar RDC31
Usa RDC31 cuando tu institución:
- consulta directamente la base de deuda consolidada
- ya registró el consentimiento REDEC del deudor en Soyio
- necesita informar cada acceso exitoso realizado bajo ese consentimiento
RDC31 no reemplaza el registro del consentimiento. Primero registra el consentimiento REDEC y luego informa cada acceso exitoso asociado a ese redec_id.
Qué registra Soyio
Cada acceso informado incluye:
redec_iddel consentimiento usado en la consulta- fecha del acceso (
access_date) - hora del acceso (
access_time) - RUT del mandatario, si la consulta fue hecha por un tercero autorizado
Soyio valida antes de persistir:
- que el
redec_idexista para tu empresa - que el consentimiento siga vigente al momento del acceso
- que no haya sido revocado antes del acceso
- que el acceso no sea un duplicado exacto
Paso 1: guarda el redec_id del consentimiento
Necesitas conservar el redec_id retornado por el flujo REDEC para reutilizarlo cada vez que consultes la base de deuda bajo ese consentimiento.
Si ya generas y almacenas los recibos o webhooks REDEC, usa ese identificador como llave de referencia para RDC31.
Paso 2: informa cada acceso exitoso
Usa el endpoint POST /api/v1/redec/accesses para registrar cada acceso. Puedes enviar una sola entrada o un arreglo cuando procesas múltiples accesos en lote.
Payload base
{
"redec_id": "REDECIDABC1234567890",
"access_date": "20250616",
"access_time": "213000",
"mandatary_nin": "11.111.111-1"
}
Campos clave:
redec_id: identificador del consentimiento REDEC asociado al accesoaccess_date: fecha del acceso en formatoYYYYMMDDaccess_time: hora del acceso en formatoHHMMSSmandatary_nin: RUT del mandatario si aplica. Si el acceso fue directo, envíanullo no lo incluyas
- cURL
- JavaScript
- Python
curl -X POST https://api.soyio.id/api/v1/redec/accesses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"redec_id": "REDECIDABC1234567890",
"access_date": "20250616",
"access_time": "213000",
"mandatary_nin": "11.111.111-1"
}'
const response = await fetch('https://api.soyio.id/api/v1/redec/accesses', {
method: 'POST',
headers: {
Authorization: `Bearer ${YOUR_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
redec_id: 'REDECIDABC1234567890',
access_date: '20250616',
access_time: '213000',
mandatary_nin: '11.111.111-1',
}),
});
const data = await response.json();
console.log('Acceso RDC31 registrado:', data.accesses[0].id);
import requests
response = requests.post(
'https://api.soyio.id/api/v1/redec/accesses',
headers={
'Authorization': f'Bearer {YOUR_API_KEY}',
'Content-Type': 'application/json'
},
json={
'redec_id': 'REDECIDABC1234567890',
'access_date': '20250616',
'access_time': '213000',
'mandatary_nin': '11.111.111-1'
}
)
data = response.json()
print('Acceso RDC31 registrado:', data['accesses'][0]['id'])
Registro masivo
Cuando tu proceso genera múltiples accesos exitosos en la misma corrida, envía un arreglo:
[
{
"redec_id": "REDECIDABC1234567890",
"access_date": "20250616",
"access_time": "083000",
"mandatary_nin": null
},
{
"redec_id": "REDECIDABC1234567890",
"access_date": "20250616",
"access_time": "213000",
"mandatary_nin": "11.111.111-1"
}
]
Registra cada consulta exitosa por separado. Si consultas dos veces el mismo redec_id a distinta hora, informa dos accesos.
Paso 3: genera el reporte RDC31
Usa el endpoint POST /api/v1/reports con kind: "rdc31" y el rango semanal que deseas reportar.
{
"kind": "rdc31",
"starts_at": "2025-06-14T00:00:00Z",
"ends_at": "2025-06-20T23:59:59Z"
}
- cURL
- JavaScript
- Python
curl -X POST https://api.soyio.id/api/v1/reports \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "rdc31",
"starts_at": "2025-06-14T00:00:00Z",
"ends_at": "2025-06-20T23:59:59Z"
}'
const response = await fetch('https://api.soyio.id/api/v1/reports', {
method: 'POST',
headers: {
Authorization: `Bearer ${YOUR_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
kind: 'rdc31',
starts_at: '2025-06-14T00:00:00Z',
ends_at: '2025-06-20T23:59:59Z',
}),
});
const data = await response.json();
console.log('Reporte RDC31 generado:', data.report.id);
import requests
response = requests.post(
'https://api.soyio.id/api/v1/reports',
headers={
'Authorization': f'Bearer {YOUR_API_KEY}',
'Content-Type': 'application/json'
},
json={
'kind': 'rdc31',
'starts_at': '2025-06-14T00:00:00Z',
'ends_at': '2025-06-20T23:59:59Z'
}
)
data = response.json()
print('Reporte RDC31 generado:', data['report']['id'])
Qué retorna el reporte
La respuesta incluye el contenido ASCII del archivo y la metadata que necesitas para completar la cuadratura.
{
"report": {
"id": "rep_abc123...",
"kind": "rdc31",
"starts_at": "2025-06-14T00:00:00Z",
"ends_at": "2025-06-20T23:59:59Z",
"created_at": "2025-06-21T00:30:00Z",
"generated_by": null,
"content": "0000123456RDC3120250620 \nREDECIDABC1234567890202506162130000111111111\n",
"metadata": {
"institution_name": "Acme Bank",
"institution_code": 123456,
"information_date": "20062025",
"total_records": 1,
"mandatary_accesses_count": 1,
"business_day_accesses_count": 1,
"non_business_hours_accesses_count": 1
}
}
}
Cómo usar metadata
Usa report.metadata para completar la carátula de cuadratura del RDC31. Hoy Soyio entrega estas métricas junto al reporte:
total_recordsmandatary_accesses_countbusiness_day_accesses_countnon_business_hours_accesses_count
El contenido del archivo y la metadata de cuadratura se generan juntos. Eso te permite automatizar la descarga del TXT y también poblar tu flujo interno de revisión antes de subirlo a la CMF.
Formato del archivo
El contenido del RDC31 se entrega en texto ASCII con líneas de ancho fijo.
- Encabezado: código de institución CMF, identificador
RDC31, fecha de referencia y relleno - Detalle:
redec_id, fecha de acceso, hora de acceso y RUT del mandatario cuando aplica
0000123456RDC3120250620
REDECIDABC1234567890202506162130000111111111
Configura generación automática
Activa la generación automática semanal desde la configuración de consentimiento:
{
"consent": {
"redec_enabled": true,
"redec_automatic_rdc31": true
}
}
Cuando esta opción está activa, Soyio genera el RDC31 automáticamente cada sábado después del cierre semanal y lo publica con el webhook report.created.
Usa webhooks para sincronizar el proceso
El webhook report.created se envía también para RDC31. Verifica el campo kind antes de procesarlo.
app.post('/webhooks/soyio', async (req, res) => {
const { event, data } = req.body;
if (event === 'report.created' && data.kind === 'rdc31') {
await storeCoverSheetData(data.metadata);
await sendToCMF(data.content);
}
res.status(200).send('OK');
});
Buenas prácticas
- Guarda el
redec_idjunto con tu solicitud de crédito o evaluación - Informa el acceso inmediatamente después de una consulta exitosa
- Usa el modo masivo solo cuando controles deduplicación en tu propio proceso
- Automatiza la descarga del reporte con
report.created - Revisa Configuración para activar la generación semanal
Próximos pasos
- Configuración de REDEC - Activa reportes automáticos y webhooks
- RDC30 - Genera el reporte semanal de consentimientos
- RDC40 - Genera reportes de solicitudes de derecho REDEC
- Cómo funciona REDEC - Entiende cómo se relacionan consentimientos, accesos y reportes