Estes relatórios seguem o padrão COSIF e devem corresponder à estrutura XML definida pelo BACEN. Você pode adaptar a lógica ao seu próprio modelo de dados, mas o formato XML deve ser respeitado.
O que são os CADOC 4010 e 4016?
O 4010 e o 4016 são relatórios de Balancete Analítico utilizados para enviar relatórios financeiros ao BACEN (Banco Central do Brasil).
O que o BACEN espera receber
- Saldos de fechamento por código COSIF
- Data-base do relatório (mês de referência)
- CNPJ da instituição (primeiros 8 dígitos)
- Tipo de remessa (
I= Inclusão,S= Substituição)
Diferença entre CADOC 4010 e 4016
O 4016 representa a posição contábil da entidade após o encerramento da demonstração de resultados. Nesse momento, as contas de Receita (grupo 7) e as contas de Despesa (grupo 8) já foram encerradas e seus saldos transferidos para o Patrimônio Líquido.
Requisitos de envio
O código STA identifica o tipo de documento no sistema de transmissão do BACEN. Use
ACOS010 ao enviar o CADOC 4010 e ACOS016 ao enviar o CADOC 4016.Entendendo a estrutura de dados
Rotas de operação
As rotas de operação funcionam como classificadores contábeis. Cada rota possui:- Identificador único (
id): Usado internamente para relacionar operações - Código COSIF (
code): O código contábil de 10 dígitos que será reportado ao BACEN
Operações
As operações representam movimentações financeiras no ledger. Cada operação contém:- Conta associada (
account_id): Qual conta foi movimentada - Rota (
route): ID da rota/classificação contábil aplicada - Saldo após a operação (
available_balance_after): O saldo da conta imediatamente após esta operação - Data e hora (
created_at): Quando a operação ocorreu
Relacionamento entre entidades
A entidade
balance representa o saldo atual da conta, não o histórico. Para relatórios regulatórios que precisam de saldos de um período específico, use a entidade operation com filtros de data.Estrutura do CADOC
Formato base
O relatório CADOC deve ser um arquivo XML e deve seguir a estrutura definida pelo BACEN:Campos obrigatórios
<?xml version="1.0" encoding="UTF-8"?>
Sempre inicia o arquivo. Define a versão do XML e a codificação para que o sistema saiba como ler o conteúdo.
Tag <documento>
Envolve toda a estrutura do CADOC e inclui:
Se o seu primeiro envio foi rejeitado por erros, você ainda precisa usar
"I" na próxima tentativa. Use "S" apenas para substituir dados previamente aprovados.<contas>
Agrupa todas as entradas de contas do período de reporte.
Tag <conta>
codigoConta: Código da conta, seguindo o formato COSIF (10 dígitos numéricos).saldo: Saldo da conta em formato decimal (duas casas decimais).
Lógica de construção do template
Estrutura geral
O template segue uma lógica de agregação em dois níveis:- Primeiro nível: Iterar por todas as rotas de operação disponíveis
- Segundo nível: Para cada rota, agregar os saldos das operações vinculadas
Iterando sobre as rotas
O template deve iterar por todas as rotas de operação registradas. Para cada rota:- Verificar se possui código COSIF: Apenas rotas com código preenchido geram linhas
- Filtrar operações: Selecionar as operações que pertencem àquela rota
- Calcular o saldo: Agregar os saldos das operações filtradas
Cuidado com a nomenclatura de variáveis
Ao construir o template, evite usar o mesmo nome para a variável de iteração e o campo de filtro:Template do CADOC 4010
Aqui está o template completo para gerar o CADOC 4010 no Reporter:
Explicação linha a linha
Linha 1 - Declaração XML Cabeçalho XML padrão com codificação UTF-8. Linha 2 - Elemento raiz<documento>
codigoDocumento="4010": Identificador fixo do Balancete Analíticocnpj: Extrai os primeiros 8 dígitos do documento legal da organizaçãodataBase: Gera a data no formato YYYY-MM (mês de referência)tipoRemessa="I": Indica inclusão de dados
for
op_route: Variável que recebe cada rota durante a iteraçãomidaz_transaction.operation_route: Coleção de todas as rotas de operação
if
Verifica se a rota possui um código COSIF preenchido.
Linha 6 - Elemento <conta>
codigoConta: Exibe o código COSIF da rota atualsaldo: Usa a tagsum_bypara agregar saldos, filtrando as operações cuja rota corresponde ao identificador da rota atual (op_route.id)
Tags e filtros utilizados
Template do CADOC 4016
O CADOC 4016 é o Balancete Analítico, similar ao 4010, mas com periodicidade semestral e uma restrição importante: não deve conter contas dos grupos 7 (Receitas) e 8 (Despesas).
Por que excluir os grupos 7 e 8?
O documento 4016 representa a posição contábil da entidade após o encerramento da demonstração de resultados. Nesse momento, as contas de Receita (grupo 7) e as contas de Despesa (grupo 8) já foram encerradas e seus saldos transferidos para o Patrimônio Líquido.Exemplo de template
Diferença em relação ao 4010
A única diferença no template é a condição adicional noif:
Como funciona a exclusão
O filtroslice:":1" extrai o primeiro caractere do código COSIF:
Gerando o relatório com filtro de data
Exemplo de requisição para o 4010
Para gerar o CADOC 4010 para um mês específico, envie uma requisiçãoPOST /v1/reports com o header X-Organization-Id e o seguinte corpo:
Explicação dos campos
Formato de data: ISO 8601 com fuso horário UTC (
Z).
Exemplo de requisição para o 4016
Para gerar o CADOC 4016 para o primeiro semestre:Evolução do template e extração de saldos
Estamos trabalhando na evolução do nosso template principal para suportar agregação de saldos em conformidade com o BACEN CADOC 4010/4016, que exige o saldo final do último dia útil do mês. Enquanto essa funcionalidade está sendo desenvolvida, fornecemos uma versão alternativa para extrair esses saldos usando o template a seguir.
Template de extração
Este template auxiliar foi projetado para calcular saldos corretamente, garantindo a conformidade dos seus relatórios por meio dos seguintes passos:- Agrupar operações por conta
- Ordenar registros por data e hora
- Selecionar o último registro de cada conta para obter o saldo final
- Somar os saldos finais por código COSIF
Exemplo de template de extração
Saída da extração
O template exporta todas as operações em formato CSV, contendo:- Identificador da conta
- Alias da conta
- Código COSIF
- Data e hora da operação
- Saldo disponível
Comparação com o CADOC 4111
O CADOC 4010 e o CADOC 4111 compartilham a mesma estrutura de template, com diferenças apenas nos parâmetros:
Template idêntico: A lógica para iterar sobre as rotas e agregar saldos é a mesma.
Boas práticas para construção de templates
Nomenclatura de variáveis
Use nomes descritivos e únicos para variáveis de iteração, evitando conflitos com nomes de campos das entidades.Validação de campos
Sempre verifique se campos opcionais possuem valores antes de utilizá-los. Campos vazios podem gerar linhas indesejadas no relatório.Formato de data
O BACEN exige datas no formato YYYY-MM para o 4010. Certifique-se de configurar o formato corretamente no template.Tratamento do CNPJ
O CNPJ deve ser apresentado apenas com os primeiros 8 dígitos, sem formatação (pontos, barras ou hifens).Código de conta COSIF
O plano de contas COSIF é estruturado com 6 níveis hierárquicos e um dígito verificador. O campocodigoConta deve ter 10 dígitos numéricos, sem pontos ou hifens.

