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é son CADOC 4010 y 4016?
El 4010 y el 4016 son informes de Balance Analítico utilizados para enviar informes financieros al BACEN (Banco Central de Brasil).
Lo que BACEN espera recibir
- Saldos de cierre por código COSIF
- Fecha base del informe (mes de referencia)
- CNPJ de la institución (primeros 8 dígitos)
- Tipo de envío (
I= Inclusión,S= Sustitución)
Diferencia entre CADOC 4010 y 4016
El 4016 representa la posición contable de la entidad después del cierre del estado de resultados. En este punto, las cuentas de Ingresos (grupo 7) y las cuentas de Gastos (grupo 8) ya han sido cerradas y sus saldos transferidos al Patrimonio.
Requisitos de envío
El código STA identifica el tipo de documento en el sistema de transmisión de BACEN. Usa
ACOS010 al enviar CADOC 4010 y ACOS016 al enviar CADOC 4016.Entendiendo la estructura de datos
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 movida - 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 entidades
La entidad
balance representa el saldo actual de la cuenta, no el historial. Para informes regulatorios que necesitan saldos de un período específico, usa la entidad operation con filtros de fecha.Estructura de CADOC
Formato base
El informe CADOC debe ser un archivo XML y debe seguir la estructura definida por BACEN:Campos obligatorios
<?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.<contas>
Agrupa todas las entradas de cuentas para el período del informe.
Etiqueta <conta>
codigoConta: Código de cuenta, siguiendo el formato COSIF (10 dígitos numéricos).saldo: Saldo de la cuenta en formato decimal (dos decimales).
Lógica de construcción de la plantilla
Estructura general
La plantilla sigue una lógica de agregación en dos niveles:- Primer nivel: Iterar a través de todas las rutas de operación disponibles
- Segundo nivel: Para cada ruta, agregar los saldos de las operaciones vinculadas
Iterando sobre rutas
La plantilla debe iterar a través de todas las rutas de operación registradas. Para cada ruta:- Verificar si tiene código COSIF: Solo las rutas con código completo generan líneas
- Filtrar operaciones: Seleccionar operaciones que pertenecen a esa ruta
- Calcular el saldo: Agregar los saldos de las operaciones filtradas
Precaución con nomenclatura de variables
Al construir la plantilla, evita usar el mismo nombre para la variable de iteración y el campo de filtro:Plantilla CADOC 4010
Aquí está la plantilla completa para generar CADOC 4010 en Reporter:
Explicación línea por línea
Línea 1 - Declaración XML Encabezado XML estándar con codificación UTF-8. Línea 2 - Elemento raíz<documento>
codigoDocumento="4010": Identificador fijo para el Balance Analíticocnpj: Extrae los primeros 8 dígitos del documento legal de la organizacióndataBase: Genera la fecha en formato AAAA-MM (mes de referencia)tipoRemessa="I": Indica inclusión de datos
for
op_route: Variable que recibe cada ruta durante la iteraciónmidaz_transaction.operation_route: Colección de todas las rutas de operación
if
Verifica si la ruta tiene un código COSIF completo.
Línea 6 - Elemento <conta>
codigoConta: Muestra el código COSIF de la ruta actualsaldo: Usa la etiquetasum_bypara agregar saldos, filtrando operaciones cuya ruta coincide con el identificador de la ruta actual (op_route.id)
Etiquetas y filtros utilizados
Plantilla CADOC 4016
El CADOC 4016 es el Balance Analítico, similar al 4010, pero con periodicidad semestral y una restricción importante: no debe contener cuentas de los grupos 7 (Ingresos) y 8 (Gastos).
¿Por qué excluir los grupos 7 y 8?
El documento 4016 representa la posición contable de la entidad después del cierre del estado de resultados. En este punto, las cuentas de Ingresos (grupo 7) y las cuentas de Gastos (grupo 8) ya han sido cerradas y sus saldos transferidos al Patrimonio.Ejemplo de plantilla
Diferencia con 4010
La única diferencia en la plantilla es la condición adicional en elif:
Cómo funciona la exclusión
El filtroslice:":1" extrae el primer carácter del código COSIF:
Generando el informe con filtro de fecha
Ejemplo de solicitud para 4010
Para generar el CADOC 4010 para un mes específico, envía una solicitudPOST /v1/reports con el encabezado X-Organization-Id y el siguiente cuerpo:
Explicación de campos
Formato de fecha: ISO 8601 con zona horaria UTC (
Z).
Ejemplo de solicitud para 4016
Para generar el CADOC 4016 para el primer semestre: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 4010/4016, que requiere el saldo final del último día hábil del mes. 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
Comparación con CADOC 4111
CADOC 4010 y CADOC 4111 comparten la misma estructura de plantilla, con diferencias solo en los parámetros:
Plantilla idéntica: La lógica para iterar sobre rutas y agregar saldos es la misma.
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 formato AAAA-MM para 4010. Asegúrate de configurar el formato correctamente en la plantilla.Manejo de CNPJ
El CNPJ debe presentarse con solo los primeros 8 dígitos, sin formato (puntos, barras o guiones).Código de cuenta COSIF
El plan de cuentas COSIF está estructurado con 6 niveles jerárquicos y un dígito verificador. El campocodigoConta debe tener 10 dígitos numéricos, sin puntos ni guiones.

