> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sherlocker.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Due Diligence Empresarial

> Investigação completa de empresa antes de fechar negócio, fusão ou parceria

Antes de fechar um contrato, investir em uma empresa ou formar uma parceria, é essencial verificar a saude juridica e financeira da empresa e seus socios. O Sherlocker cruza **cadastro, processos, dividas e recuperacoes judiciais** em um unico fluxo.

## O problema

Uma empresa pode ter CNPJ ativo e site bonito, mas estar em recuperacao judicial, com dividas bilionarias ou dezenas de execucoes fiscais. Sem due diligence, voce descobre tarde demais.

## Dimensoes verificadas

<Steps>
  <Step title="Dados cadastrais">
    Situacao na RF, capital social, porte, CNAE, socios e quadro societario
  </Step>

  <Step title="Recuperacao judicial e falencia">
    Verifica se a empresa possui processos de recuperacao judicial ou falencia em andamento.
  </Step>

  <Step title="Processos judiciais">
    Acoes como reu — execucoes fiscais, civeis e trabalhistas
  </Step>

  <Step title="Situacao financeira">
    Divida ativa da Uniao, FGTS, previdenciaria
  </Step>

  <Step title="Socios — check individual">
    Para cada socio: processos, dividas, patrimonio
  </Step>
</Steps>

## Implementação

### Passo 1 — Dados cadastrais e sócios

```python theme={null}
import requests
from concurrent.futures import ThreadPoolExecutor

BASE = "https://221b-api.sherlocker.com.br/api/v1"
TOKEN = "SEU_TOKEN"

def get(endpoint, **params):
    params["token"] = TOKEN
    return requests.get(f"{BASE}{endpoint}", params=params).json()

cnpj = "12345678000199"

empresa = get(f"/empresas/cnpj/{cnpj}")
socios = empresa.get("socios", [])

print(f"Empresa: {empresa.get('razao_social')}")
print(f"Situacao: {empresa.get('situacao')}")
print(f"Capital: R$ {empresa.get('capital_social', 0):,.0f}")
print(f"Socios: {len(socios)}")
```

### Passo 2 — Recuperacao judicial e falencia

```python theme={null}
# Verifica se a empresa esta em recuperacao judicial ou falencia
rj_falencia = get(
    f"/processos/cnpj/{cnpj}",
    categorias="recuperacao-judicial,falencia",
)

red_flags = []

if rj_falencia.get("total", 0) > 0:
    for p in rj_falencia["processos"]:
        classe = p.get("classe_nome", "")
        numero = p.get("numero_formatado", "")
        red_flags.append(f"{classe}: {numero}")
```

### Passo 3 — Processos e dividas

```python theme={null}
with ThreadPoolExecutor(max_workers=3) as pool:
    fut_proc = pool.submit(get, f"/processos/cnpj/{cnpj}")
    fut_div = pool.submit(get, f"/dividas/cnpj/{cnpj}")

processos = fut_proc.result()
dividas = fut_div.result()

# Processos como reu
processos_reu = [p for p in processos.get("processos", [])
    if any(part.get("polo", "").lower() == "reu"
           for part in p.get("partes", []))]

if len(processos_reu) > 10:
    red_flags.append(f"{len(processos_reu)} processos como reu")

# Dividas
for tipo in ["ativa_uniao", "fgts", "previdenciaria"]:
    items = dividas.get("dividas", {}).get(tipo, [])
    if items:
        red_flags.append(f"{len(items)} divida(s) {tipo.replace('_', ' ')}")
```

### Passo 4 — Check dos socios

```python theme={null}
# Extrair CPFs dos socios
cpfs_socios = [
    s["documento"].replace(".", "").replace("-", "").replace("/", "")
    for s in socios
    if len(s.get("documento", "").replace(".", "").replace("-", "").replace("/", "")) == 11
]

# Verificar se algum socio tem recuperacao judicial ou falencia pessoal
for cpf in cpfs_socios:
    proc_socio = get(
        f"/processos/cpf/{cpf}",
        categorias="recuperacao-judicial,falencia",
    )
    if proc_socio.get("total", 0) > 0:
        red_flags.append(f"Socio {cpf[:3]}*** com processo de recuperacao/falencia")
```

### Passo 5 — Relatorio final

```python theme={null}
relatorio = {
    "empresa": {
        "cnpj": cnpj,
        "razao_social": empresa.get("razao_social"),
        "situacao": empresa.get("situacao"),
        "capital_social": empresa.get("capital_social"),
    },
    "red_flags": red_flags,
    "risco": "ALTO" if red_flags else "BAIXO",
    "socios": len(socios),
    "recuperacao_falencia": rj_falencia.get("total", 0),
    "processos_total": len(processos.get("processos", [])),
    "processos_como_reu": len(processos_reu),
}

if red_flags:
    print("RED FLAGS ENCONTRADOS:")
    for flag in red_flags:
        print(f"  - {flag}")
```

## APIs utilizadas

<CardGroup cols={3}>
  <Card title="Empresas" icon="building" href="/api-reference/empresas/informacoes-basicas">
    Cadastro, socios, capital social
  </Card>

  <Card title="Processos" icon="scale-balanced" href="/api-reference/processos/processos-judiciais-de-uma-empresa">
    Acoes judiciais da empresa
  </Card>

  <Card title="Recuperacoes e Falencias" icon="building-circle-exclamation" href="/guias/recuperacoes-falencias">
    Filtro por recuperacao judicial e falencia
  </Card>

  <Card title="Dividas" icon="file-invoice-dollar" href="/api-reference/dividas/dividas-federais-por-cnpj">
    Divida ativa, FGTS, previdenciaria
  </Card>
</CardGroup>
