← Blog · Gestão de Risco

Radar de Fornecedores:
saiba quando um CNPJ é cancelado ou muda de sócio automaticamente

Seu fornecedor acabou de ter o CNPJ cancelado pela Receita Federal. Você ficou sabendo como? Provavelmente na pior hora possível — quando tentou emitir uma NF-e ou ficou sem estoque crítico. Existe um jeito melhor.

19 de maio de 2026 · 9 min de leitura · Webhooks & Monitores

Empresas que dependem de uma cadeia de fornecedores enfrentam um risco silencioso: mudanças cadastrais que acontecem sem aviso. Um fornecedor pode ter o CNPJ baixado por irregularidade fiscal, mudar de sócios sem comunicar nada, ou simplesmente encerrar as atividades e deixar contratos em aberto.

Com a API cnpjob você pode transformar esse risco passivo em alerta ativo — sem precisar checar manualmente um por um, sem depender de e-mail e sem esperar a surpresa chegar.

Os 5 cenários que mais geram prejuízo

🔴

CNPJ cancelado ou baixado

A empresa encerrou atividades e não pode mais emitir NF-e. Qualquer compra feita após a baixa gera problema fiscal.

⚠️

Situação cadastral irregular

CNPJ ativo porém irregular (débitos com RF, FGTS em atraso). A empresa pode ter crédito bloqueado e não conseguir cumprir pedidos.

🔄

Mudança de sócio majoritário

A empresa foi vendida ou o sócio com quem você tem relacionamento saiu. Contratos de exclusividade e condições negociadas podem não ser honrados pelo novo controle.

📍

Mudança de endereço sem aviso

Fornecedor mudou de estado ou município — impacto em impostos retidos na fonte (ISS, ICMS), logística e contratos regionais.

🏳️

Alteração de CNAE principal

O fornecedor mudou de ramo oficial. Pode invalidar certidões e habilitações em licitações ou processos de homologação.

Opção 1: Monitores automáticos (sem código)

O cnpjob tem um sistema de monitores integrado ao painel. Você cadastra os CNPJs que quer acompanhar e a plataforma detecta qualquer mudança na próxima sincronização com a base da Receita Federal.

Para configurar via API:

curl -X POST https://api.cnpjob.com.br/api/portal/monitors \
  -H "Authorization: Bearer SEU_JWT" \
  -H "Content-Type: application/json" \
  -d '{ "cnpj": "33000167000101" }'

Você pode adicionar tantos CNPJs quantos quiser. Quando uma mudança for detectada, o sistema dispara um evento — que você pode capturar via webhook (veja abaixo).

Opção 2: Webhook em tempo real

Para integrações mais sofisticadas, configure um webhook para receber um POST no seu servidor assim que qualquer mudança for detectada:

# 1. Crie o webhook apontando para seu endpoint
curl -X POST https://api.cnpjob.com.br/api/portal/webhooks \
  -H "Authorization: Bearer SEU_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://seu-sistema.com.br/webhooks/cnpjob",
    "events": ["monitor.changed"],
    "label": "Alerta de fornecedores"
  }'

No seu servidor, receba e processe o evento:

// Node.js / Express — endpoint para receber eventos do cnpjob
import express from "express";
const app = express();
app.use(express.json());

app.post("/webhooks/cnpjob", async (req, res) => {
  const evento = req.body;

  if (evento.event === "monitor.changed") {
    const { cnpj, razao_social, changes } = evento.data;

    console.log(`\n⚠️  Mudança detectada no fornecedor: ${razao_social} (${cnpj})`);

    for (const change of changes) {
      console.log(`  Campo alterado: ${change.field}`);
      console.log(`  Antes: ${change.old_value}`);
      console.log(`  Depois: ${change.new_value}`);
    }

    // Classifica o nível de risco da mudança
    const altaGravidade = changes.some(c =>
      ["situacao_cadastral", "data_baixa", "socios"].includes(c.field)
    );

    if (altaGravidade) {
      await notificarTimeProcurement({
        urgente: true,
        mensagem: `ALERTA: ${razao_social} teve alteração crítica. Revisar contratos imediatamente.`,
        cnpj,
        changes,
      });
    } else {
      await registrarNoLog({ cnpj, changes, timestamp: new Date() });
    }
  }

  res.status(200).json({ received: true });
});

Opção 3: Verificação preventiva no onboarding

Não espere o problema chegar. No momento em que um novo fornecedor é cadastrado no seu ERP, faça uma consulta automática para validar a situação cadastral antes de aprovar o cadastro:

import os, requests
from datetime import datetime

API_KEY = os.getenv("CNPJOB_KEY")
BASE    = "https://api.cnpjob.com.br"
HDR     = {"X-API-Key": API_KEY}

def validar_fornecedor(cnpj: str) -> dict:
    r = requests.get(f"{BASE}/cnpj/{cnpj}", headers=HDR)
    r.raise_for_status()
    d = r.json()

    situacao   = d.get("situacao_cadastral", "").upper()
    data_baixa = d.get("data_situacao_cadastral")
    socios_r   = requests.get(f"{BASE}/cnpj/{cnpj}/socios", headers=HDR).json()
    socios     = socios_r.get("socios", [])

    riscos = []

    if situacao != "ATIVA":
        riscos.append(f"Situação cadastral: {situacao}")

    if data_baixa:
        riscos.append(f"Data da baixa/alteração: {data_baixa}")

    # Verifica se algum sócio tem nome na lista de devedores (futuro: integrar Serasa/SPC)
    socios_nomes = [s.get("nome_socio", "") for s in socios]

    return {
        "cnpj":         cnpj,
        "razao_social": d.get("razao_social"),
        "aprovado":     len(riscos) == 0,
        "riscos":       riscos,
        "socios":       socios_nomes,
        "verificado_em": datetime.now().isoformat(),
    }

# Uso no onboarding de fornecedor
resultado = validar_fornecedor("12345678000195")
if not resultado["aprovado"]:
    print(f"❌ Fornecedor REPROVADO: {resultado['razao_social']}")
    for risco in resultado["riscos"]:
        print(f"   - {risco}")
else:
    print(f"✅ Fornecedor APROVADO: {resultado['razao_social']}")
    print(f"   Sócios: {', '.join(resultado['socios'])}")

Integrando com seu ERP ou sistema de compras

Exemplo real

Uma empresa de e-commerce com 340 fornecedores ativos configurou monitores para todos os CNPJs via script de importação em massa. Em 3 meses, o sistema detectou 4 cancelamentos de CNPJ e 11 irregularidades cadastrais — problemas que teriam gerado bloqueio de NF-e e atrasos de entrega não fossem identificados antecipadamente.

Para cadastrar múltiplos fornecedores de uma vez, importe direto do CSV do seu ERP:

import csv, os, requests, time

API_KEY = os.getenv("CNPJOB_KEY")
HDR = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

def importar_fornecedores(arquivo_csv: str):
    com open(arquivo_csv) as f:
        reader = csv.DictReader(f)
        cnpjs = [row["cnpj"].replace(".", "").replace("/", "").replace("-", "") for row in reader]

    print(f"Importando {len(cnpjs)} fornecedores para monitoramento...")
    cadastrados = 0

    for cnpj in cnpjs:
        r = requests.post(
            "https://api.cnpjob.com.br/api/portal/monitors",
            json={"cnpj": cnpj},
            headers=HDR,
        )
        if r.status_code in (200, 201):
            cadastrados += 1
        time.sleep(0.1)  # respeita rate limit

    print(f"✅ {cadastrados}/{len(cnpjs)} fornecedores monitorados com sucesso.")

importar_fornecedores("fornecedores.csv")

Relatório semanal de saúde da cadeia de fornecedores

Com todos os CNPJs monitorados, você pode gerar um relatório executivo automático toda semana mostrando a saúde da sua cadeia de fornecedores:

Esse relatório pode ser automaticamente enviado para o time de procurement toda segunda-feira antes do horário de negociação começar.

Atenção: compliance e LGPD

Todos os dados retornados pela API cnpjob são de domínio público — publicados pela Receita Federal (Lei 12.527/2011). O monitoramento de CNPJs de fornecedores é uma prática legítima de gestão de risco e não configura coleta indevida de dados pessoais.

Monte seu radar de fornecedores hoje

Monitores e webhooks estão disponíveis em todos os planos pagos. Comece grátis, importe seus primeiros CNPJs e receba o primeiro alerta em tempo real.

Criar conta grátis