Automação

Python Para Contadores: Aprenda a Automatizar Tarefas Fiscais com Código

Python Para Contadores: Aprenda a Automatizar Tarefas Fiscais com Código

Python virou a linguagem preferida de contadores que querem automatizar sua rotina. Não é necessário ter formação em TI — alguns conceitos básicos são suficientes para eliminar horas de trabalho manual por semana. Este guia mostra como começar do zero e os primeiros projetos práticos de automação fiscal.

Por que Python e não Excel avançado?

O Excel resolve muita coisa, e Power Query é uma excelente evolução. Mas Python tem vantagens claras para automação contábil:

  • Repetibilidade total: um script Python executa exatamente a mesma lógica toda vez, sem erros humanos de copiar/colar
  • Escala: processa 10 clientes com a mesma facilidade que processa 1
  • Integração: conecta com APIs de bancos, ERPs, SEFAZ, e-mail, Slack — tudo no mesmo script
  • Custo zero: Python é gratuito e open source

Instalação em 5 minutos

  1. Acesse python.org e baixe a versão mais recente
  2. Instale marcando a opção “Add Python to PATH”
  3. Abra o terminal e execute: pip install pandas openpyxl requests
  4. Ou instale o Anaconda (inclui tudo pré-instalado, mais fácil para iniciantes)

Um editor de código gratuito como VS Code ou PyCharm Community facilita muito o desenvolvimento.

Fundamentos que um contador precisa saber

Variáveis e tipos de dados


# Variáveis simples
empresa = "Comércio ABC Ltda"
cnpj = "12.345.678/0001-99"
faturamento = 150000.50
ativo = True

# Lista de clientes
clientes = ["Empresa A", "Empresa B", "Empresa C"]

# Dicionário (como uma linha de planilha)
nota = {
    "numero": "NF-1234",
    "valor": 5600.00,
    "icms": 840.00,
    "data": "2026-01-15"
}

Lendo e manipulando planilhas com pandas


import pandas as pd

# Carrega a planilha
df = pd.read_excel("lancamentos_janeiro.xlsx")

# Filtra só as notas de saída
saidas = df[df['tipo'] == 'SAIDA']

# Soma por categoria
total_por_categoria = saidas.groupby('categoria')['valor'].sum()

# Salva o resultado numa nova planilha
total_por_categoria.to_excel("resumo_saidas.xlsx")

print(total_por_categoria)

Lendo arquivos XML (NF-e)


import xml.etree.ElementTree as ET

# Lê o arquivo XML da nota fiscal
tree = ET.parse("nfe_001.xml")
root = tree.getroot()

# Namespace da NF-e
ns = {'nfe': 'http://www.portalfiscal.inf.br/nfe'}

# Extrai valores
chave = root.find('.//nfe:chNFe', ns).text
valor_total = root.find('.//nfe:vNF', ns).text
icms = root.find('.//nfe:vICMS', ns).text

print(f"Chave: {chave}")
print(f"Valor total: R$ {valor_total}")
print(f"ICMS: R$ {icms}")

Projeto 1: Consolidador de NF-e de um período

Este script lê todas as NF-e XML de uma pasta e gera uma planilha consolidada:


import xml.etree.ElementTree as ET
import pandas as pd
import os

ns = {'nfe': 'http://www.portalfiscal.inf.br/nfe'}
pasta = "notas_janeiro_2026"
registros = []

for arquivo in os.listdir(pasta):
    if arquivo.endswith('.xml'):
        tree = ET.parse(os.path.join(pasta, arquivo))
        root = tree.getroot()
        
        try:
            nota = {
                'numero': root.find('.//nfe:nNF', ns).text,
                'emitente': root.find('.//nfe:emit/nfe:xNome', ns).text,
                'cnpj_emit': root.find('.//nfe:emit/nfe:CNPJ', ns).text,
                'data_emissao': root.find('.//nfe:dhEmi', ns).text[:10],
                'valor_total': float(root.find('.//nfe:vNF', ns).text),
                'icms': float(root.find('.//nfe:vICMS', ns).text or 0),
                'pis': float(root.find('.//nfe:vPIS', ns).text or 0),
                'cofins': float(root.find('.//nfe:vCOFINS', ns).text or 0),
            }
            registros.append(nota)
        except AttributeError:
            print(f"Erro ao processar {arquivo}")

df = pd.DataFrame(registros)
df.to_excel("consolidado_nfe_jan2026.xlsx", index=False)
print(f"Processadas {len(registros)} notas. Total: R$ {df['valor_total'].sum():,.2f}")

Projeto 2: Detector de divergências entre SPED e ERP


import pandas as pd

# Carrega os dados
sped = pd.read_excel("sped_efd.xlsx")    # exportado do validador SPED
erp  = pd.read_excel("erp_lancamentos.xlsx")  # exportado do sistema ERP

# Normaliza CNPJ
sped['cnpj'] = sped['cnpj'].str.replace(r'D', '', regex=True)
erp['cnpj']  = erp['cnpj'].str.replace(r'D', '', regex=True)

# Merge para comparar
merged = pd.merge(sped, erp, on=['cnpj', 'numero_nf'], how='outer', 
                  suffixes=('_sped', '_erp'))

# Identifica divergências
merged['divergencia'] = abs(merged['valor_sped'] - merged['valor_erp']) > 0.01
divergencias = merged[merged['divergencia'] == True]

divergencias.to_excel("divergencias_encontradas.xlsx", index=False)
print(f"Encontradas {len(divergencias)} divergências para revisar")

Projeto 3: Relatório automático de indicadores financeiros


import pandas as pd

# Lê DRE do ERP (exemplo simplificado)
dre = pd.read_excel("dre_2026.xlsx")

receita_bruta = dre.loc[dre['conta'] == 'RECEITA_BRUTA', 'valor'].sum()
deducoes = dre.loc[dre['conta'] == 'DEDUCOES', 'valor'].sum()
receita_liquida = receita_bruta - deducoes
custo = dre.loc[dre['conta'] == 'CMV', 'valor'].sum()
lucro_bruto = receita_liquida - custo
despesas = dre.loc[dre['conta'] == 'DESPESAS_OPERACIONAIS', 'valor'].sum()
ebitda = lucro_bruto - despesas

print("=== RELATÓRIO EXECUTIVO ===")
print(f"Receita Bruta:    R$ {receita_bruta:>12,.2f}")
print(f"Receita Líquida:  R$ {receita_liquida:>12,.2f}")
print(f"Lucro Bruto:      R$ {lucro_bruto:>12,.2f}")
print(f"Margem Bruta:     {(lucro_bruto/receita_liquida*100):>11.1f}%")
print(f"EBITDA:           R$ {ebitda:>12,.2f}")
print(f"Margem EBITDA:    {(ebitda/receita_liquida*100):>11.1f}%")

Próximos passos

Com esses fundamentos, você pode evoluir para:

  • Automação de envio por e-mail dos relatórios para cada cliente
  • Dashboards interativos com Streamlit ou Power BI via Python
  • Integração com APIs de ERPs (Omie, Bling, Nibo têm APIs bem documentadas)
  • Automação de geração de arquivos SPED com bibliotecas especializadas

O contador que aprende Python não vai substituir o contador — vai se tornar o contador mais competitivo do mercado.

Tem um projeto em mente?

Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.

Resposta rápida Orçamento sem compromisso +100 projetos entregues
Compartilhar: