Estos informes siguen el estándar COSIF y deben coincidir con la estructura XML definida por BACEN. Puedes adaptar la lógica a tu propio modelo de datos, pero el formato XML debe respetarse.
¿Qué es CADOC 4111?
El CADOC 4111 es un documento regulatorio requerido por el Banco Central de Brasil (BACEN) que reporta saldos diarios de cuentas contables agrupados por código COSIF (Plan de Cuentas para Instituciones del Sistema Financiero Nacional).
Lo que BACEN espera recibir
- Saldos consolidados por código COSIF
- Fecha base del informe
- CNPJ de la institución (primeros 8 dígitos)
- Tipo de envío (
I= Inclusión,S= Sustitución)
Requisitos de envío
El código STA identifica el tipo de documento en el sistema de transmisión de BACEN. Usa
ACOS011 al enviar CADOC 4111.Entendiendo la estructura de datos
Antes de construir la plantilla, es esencial entender cómo se organizan los datos en el libro mayor de Midaz.
Rutas de operación
Las rutas de operación funcionan como clasificadores contables. Cada ruta tiene:- Identificador único (
id): Usado internamente para relacionar operaciones - Código COSIF (
code): El código contable de 10 dígitos que será reportado a BACEN
Operaciones
Las operaciones representan movimientos financieros en el libro mayor. Cada operación contiene:- Cuenta asociada (
account_id): Qué cuenta fue afectada - Ruta (
route): ID de la ruta/clasificación contable aplicada - Saldo después de la operación (
available_balance_after): El saldo de la cuenta inmediatamente después de esta operación - Fecha y hora (
created_at): Cuándo ocurrió la operación
Relación entre rutas y operaciones
Estructura de CADOC
Formato base
El informe CADOC debe ser un archivo XML y debe seguir la estructura definida por BACEN:Campos obligatorios
Estos campos son requeridos y deben incluirse:<?xml version="1.0" encoding="UTF-8"?>
Siempre inicia el archivo. Define la versión de XML y la codificación para que el sistema sepa cómo leer el contenido.
Etiqueta <documento>
Envuelve toda la estructura CADOC e incluye:
Si tu primer envío fue rechazado debido a errores, aún necesitas usar
"I" en tu próximo intento. Solo usa "S" para reemplazar datos previamente aprobados.<registros>
Agrupa los registros del período del informe.
Etiqueta <registro>
Agrupa un registro de cuenta. Cada registro contiene:
conta: Código COSIF de la ruta de operación (10 dígitos numéricos)saldoDia: Saldo consolidado en formato decimal (dos decimales)
Lógica de construcción de la plantilla
Estructura general
La plantilla primero conserva la última operación de cada par de cuenta y ruta. Luego recorre las rutas de operación disponibles y suma esos últimos saldos para cada ruta.Encabezado del documento
El encabezado XML debe contener:- Código del documento: Identificador fijo
4111 - CNPJ: Extraído de los datos de la organización, limitado a los primeros 8 dígitos
- Fecha base: Fecha de generación del informe en formato
YYYY/MM/dd - Tipo de envío:
Ipara inclusión
Iterando sobre rutas
La plantilla debe iterar a través de todas las rutas de operación registradas. Para cada ruta:- Verificar código COSIF: Solo las rutas con un código COSIF válido deben generar líneas en el informe
- Filtrar operaciones: A partir del resultado de
last_item_by_group, seleccionar solo las últimas operaciones que pertenecen a esa ruta específica - Calcular saldo: Sumar los saldos de esas últimas operaciones
No todas las rutas tienen un código COSIF completo. Las rutas sin código se usan para controles internos y no deben aparecer en el informe regulatorio.
Filtrando operaciones por ruta
La asociación entre operaciones y rutas se realiza a través del identificador de ruta. La plantilla usa este identificador para:- Acceder a una ruta específica
- Encontrar todas las operaciones que referencian esta ruta
- Procesar solo estas operaciones en la agregación
Sumando saldos
Para cada ruta, la plantilla sumaavailable_balance_after solo de la última operación seleccionada para cada par de cuenta y ruta. No suma todas las operaciones históricas, lo que sobrestimaría el saldo.
Usando Reporter
Aquí está la plantilla completa para generar CADOC 4111 en Reporter:
Desglose del código
Línea 1 - Declaración XML
Línea 2 - Elemento raíz <documento>
codigoDocumento="4111": Identificador fijo del tipo de documentocnpj: Accede al documento legal de la organización y extrae los primeros 8 caracteres usando el filtroslicedataBase: Genera la fecha actual en el formatoYYYY/MM/ddusando la etiquetadate_timetipoRemessa="I": Indica inclusión de datos
Línea 4 - Seleccionar las últimas operaciones
last_item_by_group: Conserva la última operación de cada paraccount_idyroute, ordenada porcreated_atlistaOperations: Colección de esas últimas operaciones utilizada para calcular el saldo
Línea 5 - Iniciar el bucle de rutas y verificar su código
oproute recibe cada ruta de operación. La condición omite las rutas sin código COSIF.
Línea 6 - Elemento <registro>
conta: Muestra el código COSIF de la ruta actualsaldoDia: Usasum_bypara sumar los últimos saldos seleccionados cuya ruta coincide con el identificador de la ruta actual (oproute.id)
Líneas 7-8 - Cierre de bloques
Referencia de etiquetas y filtros
Consideraciones del filtro de fecha
Ejemplo de solicitud con filtro de fecha
Para generar CADOC 4111 para un día específico, envía una solicitudPOST /v1/reports con el siguiente cuerpo:
Explicación de campos
Las fechas deben estar en formato ISO 8601 con zona horaria UTC (
Z).Evolución de la plantilla y extracción de saldos
Estamos trabajando en la evolución de nuestra plantilla principal para soportar la agregación de saldos en cumplimiento con BACEN CADOC 4111, que requiere el saldo final del último día hábil. Mientras esta funcionalidad está siendo desarrollada, proporcionamos una versión alternativa para extraer estos saldos usando la siguiente plantilla.
Plantilla de extracción
Esta plantilla auxiliar está diseñada para calcular correctamente los saldos, asegurando el cumplimiento de tus informes a través de los siguientes pasos:- Agrupar operaciones por cuenta
- Ordenar entradas por fecha y hora
- Seleccionar el último registro de cada cuenta para obtener el saldo final
- Sumar saldos finales por código COSIF
Ejemplo de plantilla de extracción
Salida de extracción
La plantilla exporta todas las operaciones en formato CSV, conteniendo:- Identificador de cuenta
- Alias de cuenta
- Código COSIF
- Fecha y hora de la operación
- Saldo disponible
Mejores prácticas para construcción de plantillas
Nomenclatura de variables
Usa nombres descriptivos y únicos para las variables de iteración, evitando conflictos con los nombres de campos de entidades.Validación de campos
Siempre verifica si los campos opcionales tienen valores antes de usarlos. Los campos vacíos pueden generar líneas no deseadas en el informe.Formato de fecha
BACEN requiere fechas en formatoAAAA-MM. Asegúrate de configurar el formato correctamente en la plantilla.

