Python · SDK + algoritmo

Gerador de Empresa em Python

Pra gerar empresa fictícia completa em Python (CNPJ, razão social, endereço e telefone correlacionados), instale pip install fakeforge-br e chame FakeForge().company(n). O CNPJ usa o algoritmo mod-11 da Receita com sufixo /0001 (matriz), e o endereço acompanha um DDD e estado coerentes.

TL;DR

pip install fakeforge-br

from fakeforge import FakeForge
empresas = FakeForge().company(50)  # 50 empresas com CNPJ + razão social + endereço

Rota 1: SDK oficial fakeforge-br

A mais rápida. .company(n) retorna objeto completo por empresa.

from fakeforge import FakeForge

ff = FakeForge()

# 50 empresas fictícias completas
empresas = ff.company(50)
for e in empresas:
    print(e["razao_social"], e["cnpj"], e["endereco"]["estado"])

# Preset company (mesma coisa, via schema builder)
empresas_preset = ff.preset("company", 100)

# Só o CNPJ, sem os outros campos
cnpjs = ff.cnpj(1000)

Vantagens: CNPJ, razão social, endereço e telefone já correlacionados, presets B2B, bulk até 10k por chamada. Requer internet.

Rota 2: algoritmo local (offline)

O CNPJ segue o mesmo mod-11 da Receita. Pra correlacionar endereço, um mapa simples de DDD para estado já resolve a maioria dos casos de teste:

# gerador_empresa.py - implementação pura, offline
import random

SUFIXOS = ["LTDA", "S.A.", "ME", "EIRELI"]
DDD_PARA_ESTADO = {
    11: "SP", 21: "RJ", 31: "MG", 41: "PR",
    51: "RS", 61: "DF", 71: "BA", 81: "PE", 91: "PA",
}


def gerar_cnpj(formatado: bool = True) -> str:
    """Gera CNPJ válido pelo algoritmo mod-11 da Receita, sufixo /0001 (matriz)."""
    n = [random.randint(0, 9) for _ in range(8)] + [0, 0, 0, 1]

    pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
    pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]

    s1 = sum(a * b for a, b in zip(n, pesos1))
    d1 = 0 if (s1 % 11) < 2 else 11 - (s1 % 11)
    n.append(d1)

    s2 = sum(a * b for a, b in zip(n, pesos2))
    d2 = 0 if (s2 % 11) < 2 else 11 - (s2 % 11)
    n.append(d2)

    if formatado:
        return f"{n[0]}{n[1]}.{n[2]}{n[3]}{n[4]}.{n[5]}{n[6]}{n[7]}/{n[8]}{n[9]}{n[10]}{n[11]}-{n[12]}{n[13]}"
    return "".join(str(d) for d in n)


def gerar_empresa() -> dict:
    """Gera empresa fictícia com CNPJ, razão social e endereço correlacionados."""
    ddd = random.choice(list(DDD_PARA_ESTADO.keys()))
    estado = DDD_PARA_ESTADO[ddd]
    return {
        "razao_social": f"Comercial {random.randint(100, 999)} {random.choice(SUFIXOS)}",
        "cnpj": gerar_cnpj(),
        "estado": estado,
        "telefone": f"({ddd}) 9{random.randint(1000, 9999)}-{random.randint(1000, 9999)}",
    }

Vantagens: zero deps, offline, controle total sobre a correlação. Limitação: endereço simplificado a um mapa fixo de DDDs, sem nome fantasia nem CNPJ alfanumérico 2026.

Uso em Django (seed de empresas)

# myapp/management/commands/seed_empresas.py
from django.core.management.base import BaseCommand
from fakeforge import FakeForge
from myapp.models import Empresa

class Command(BaseCommand):
    def handle(self, *args, **options):
        ff = FakeForge()
        empresas = ff.company(500)  # 500 empresas correlacionadas

        Empresa.objects.bulk_create([
            Empresa(
                razao_social=e["razao_social"],
                cnpj=e["cnpj"],
                endereco=e["endereco"]["logradouro"],
                estado=e["endereco"]["estado"],
                telefone=e["telefone"],
            )
            for e in empresas
        ])
        self.stdout.write(f"{len(empresas)} empresas seeded")

Comparação: qual escolher

CenárioSDK fakeforge-brAlgoritmo local
Só CNPJ simples✅✅
Empresa completa correlacionada✅⚠️ simplificado
Endereço com CEP coerente✅❌
100% offline❌✅
Bulk 10k+✅ 1 chamada⚠️ loop
CustoFree 50/diaR$0

Perguntas frequentes

O CNPJ da empresa gerada em Python é válido?+

Tem dígitos verificadores válidos pelo algoritmo mod-11 (passa em qualquer validação de formato), mas não está registrado na Receita Federal. A empresa é fictícia.

Dá pra usar esse CNPJ pra testar emissão de NF-e em homologação?+

Sim, é um dos usos mais comuns. Ambientes de homologação de NF-e aceitam CNPJ com formato válido mesmo sem CNPJ real, já que não consultam a Receita em produção.

O endereço da empresa é coerente com o CNPJ?+

No SDK sim, o endereço é gerado junto com CNPJ, razão social e telefone no mesmo objeto. No algoritmo local, a correlação usa um mapa simplificado de DDD para estado.

Dá pra popular banco Django com empresas fictícias em lote?+

Sim. Use ff.company(n) num management command com bulk_create, como no exemplo desta página. Suporta até 10.000 empresas por chamada no SDK.

Próximos passos