A primeira folha CLT open source no Odoo: por que estamos doando à OCA
KMEE doa à OCA a primeira folha de pagamento CLT brasileira do Odoo: 51 mil linhas, 232 testes, INSS, IRRF, FGTS e eSocial S-1.3 testados.
Luis Felipe Miléo
Folha de pagamento brasileira no Odoo sempre foi terreno minado. Quem precisava da CLT no Odoo tinha duas opções: implementar do zero (caro, demorado, arriscado) ou contratar fornecedor proprietário com módulo fechado (caro, opaco, dependente). A KMEE acaba de mudar essa equação ao doar à OCA o primeiro conjunto de módulos de folha CLT open source para Odoo, com cobertura técnica suficiente para sair de papel.
O PR está aberto em kmee/kmee-odoo-addons#277: 51.000 linhas de código, 232 testes automatizados, e as rubricas, cálculos e estruturas que a folha brasileira exige.
De onde veio essa folha
A história começa em 2015. Um órgão público federal contratou a KMEE para implementar Odoo 8.0 incluindo folha de pagamento CLT completa. Nada de adaptar uma folha estrangeira: precisava ser folha brasileira de verdade, com INSS progressivo, IRRF, FGTS, 13o salário, férias, rescisões, dissídios e eventos eSocial.
Ao longo de uma década o código rodou em produção, processando folhas reais, gerando guias e transmitindo eventos. Cada bug encontrado em produção virou teste. Cada mudança de tabela INSS virou migração. Cada novo evento eSocial virou módulo.
O problema: estava preso ao Odoo 8.0. E folha presa em versão antiga é dívida técnica que rende juros compostos.
A migração para 16.0
Em 2025 a KMEE iniciou a migração para Odoo 16.0 usando oca-port e odoo-module-migrator. O trabalho não foi só de portar APIs (@api.multi para nada, _columns para fields.X, views XML reformatadas): foi de repensar a arquitetura à luz de tudo que aprendemos.
As escolhas estruturais que sobreviveram:
- Função pura para cálculo:
tools.br.calc_inss()recebe valor e retorna contribuição, sem ORM, sem efeito colateral, totalmente testável. - Rubricas configuráveis:
hr.salary.ruleintegrado comnatureza.rubricado eSocial S-1.3. - Testes desde o primeiro commit: 232 testes garantindo INSS, IRRF, FGTS, salário-família, vale-transporte e proventos/descontos.
- Separação locale/eSocial:
l10n_br_hr(cadastros),l10n_br_hr_payroll(cálculo),l10n_br_hr_payroll_esocial(eventos).
Por que doar à OCA
A KMEE poderia ter mantido a folha como vantagem competitiva fechada. Vendemos serviços, não licenças. Nosso negócio é implementar e manter Odoo, não cobrar por código. E quanto mais empresas usam Odoo no Brasil, maior o mercado para nós.
Mais importante: folha de pagamento não é diferencial competitivo. É infraestrutura. Toda empresa precisa, ninguém deveria pagar para reinventar o cálculo de INSS que está na lei. Calcular INSS errado é problema do empresário, do colaborador e da Receita; ninguém ganha quando isso é caixa-preta.
A OCA (Odoo Community Association) é o destino natural: 350+ membros, 250+ repositórios, governança transparente, releases coordenados com cada nova versão do Odoo. Doar ali significa que o código vai sobreviver à KMEE, vai ser melhorado por outros mantenedores e vai estar disponível para todo integrador Odoo no Brasil.
O que está pronto, o que ainda falta
O PR #277 entrega:
- Cadastros de funcionário com campos brasileiros (PIS, CTPS, dependentes, vínculo eSocial)
- Folha mensal com 5 faixas progressivas de INSS (cobertura: 152 linhas de teste)
- IRRF com
decimal.ROUND_HALF_UPtestado em 414 linhas (Pythonround()usa banker’s rounding e erra) - FGTS, salário-família, vale-transporte, proventos e descontos
- 13o salário (1a e 2a parcela) e férias com 1/3 constitucional
- Rescisões com aviso prévio, multa FGTS e saldos
- Eventos eSocial S-1010 (rubricas), S-2200 (admissão), S-2299 (desligamento), S-1200 (remuneração)
O que ainda falta — e estamos sendo honestos:
- S-1210 (pagamentos de rendimentos) — em desenvolvimento
- S-1299 (fechamento mensal) — depende do S-1210
- S-2210 (CAT — comunicação de acidente de trabalho) — pouca demanda no piloto
- Totalizadores S-5001/S-5002/S-5003/S-5011/S-5012/S-5013 — recebimento dos retornos da Receita
- Conta-corrente de FGTS digital (DCTFWeb) — depende de S-1299
Esses são os próximos sprints. A roadmap completa está no PR #277.
O que muda para o mercado
Hoje quem vende Odoo no Brasil para folha CLT tem três opções: integrar com Senior/Totvs/Metadados (caro, complexo), contratar módulo proprietário (caro, fechado), ou implementar do zero (caro, demorado). Com a doação à OCA, a quarta opção passa a ser: usar l10n_br_hr_payroll da OCA, customizar o que precisa, e contribuir de volta.
Para o cliente final, isso significa folha auditável. Quer saber por que o INSS deu R$ 825,33 e não R$ 825,32? Abre o teste, vê o cálculo. Quer entender por que essa rubrica é base de FGTS mas não de INSS? Vê o salary_rule no código. É o oposto da caixa-preta dos sistemas proprietários.
Para o integrador, significa que folha deixa de ser projeto de meses e passa a ser configuração de semanas. Para a comunidade Odoo Brasil, significa um pedaço crítico do l10n-brazil que estava faltando.
Como ajudar
O PR #277 está em revisão. Se você é desenvolvedor Odoo, revise o código. Se você é cliente Odoo no Brasil que precisa de folha CLT, fale com a equipe KMEE — quanto mais empresas em produção, mais robusto fica o módulo. Se você é da OCA, ajude a coordenar o aceite no repositório l10n-brazil.
Folha brasileira open source no Odoo deixou de ser promessa. Está em código, está testada, está doada.
Sobre o autor
Luis Felipe Miléo
Desenvolvedor Odoo · KMEE
Desenvolvedor especializado em localização fiscal e projetos open source no ecossistema Odoo/OCA, com foco em integrações para o mercado latino-americano.
Ver perfil no LinkedInArtigos relacionados
Open Finance regulado vs APIs proprietárias: qual usar para cada caso
7 de jul. de 2026
Gestão EmpresarialDDA no Odoo: contas a pagar 100% automatizadas
30 de jun. de 2026
Gestão EmpresarialTOTVS está descontinuando sua API bancária — Odoo é a alternativa neutra
9 de jun. de 2026