Pular para o conteúdo
FiscalAPI
Produtor Rural

Crédito rural: como checar IE, imóveis e certidões do produtor por API

Equipe FiscalAPI 5 min de leitura
CNIRCAFIRImóvel RuralCertidõesNode.js

Na análise de crédito rural, cada base responde uma pergunta: o produtor está ativo no estado? Quais imóveis ele tem? Onde ficam os limites? Está regular? Este guia junta as quatro num fluxo de API, com o que cada uma mostra e o que fica de fora.

Quais documentos a operação exige depende da linha de crédito e da política da instituição. As regras gerais estão no Manual de Crédito Rural (MCR), do Banco Central, que muda com frequência por resolução do CMN.

O checklist#

BaseMostraNão mostraRota
Inscrição estadualIEs do CPF nos 27 estados, situação, município de cada umaÁrea, posse ou propriedade do imóvelGET /api/consultar-ie-todos?cpf=
CNIR/CAFIRImóveis rurais do CPF ou CNPJ na Receita: CIB, NIRF, área, situação, município, percentual do proprietário e condôminosSe o ITR está pago; os limites georreferenciadosGET /api/consultar-cnir?cpf=
SIGEFParcelas certificadas pelo INCRA: matrícula, cartório, área, polígono em WKTImóvel sem georreferenciamento certificadoGET /api/consultar-sigef?cpf=
CertidõesCND estadual nos 27 estados, CNDT, CND Federal e CRF/FGTSPDFs (vêm nas rotas individuais)GET /api/certidoes-todas?cpf=

Cada chamada conta 1 consulta, inclusive a de certidões, que junta todas. O dossiê de um produtor custa 4 consultas. Consulta com erro não é cobrada.

Detalhes de cada base: CNIR/CAFIR, produtor rural e certidões.

A ordem das chamadas#

  1. IE primeiro. Filtra cedo o produtor sem IE habilitada em nenhum estado.
  2. CNIR e SIGEF em paralelo. Os dois falam do imóvel. O SIGEF pode demorar mais: dê pelo menos 3 minutos de timeout.
  3. Certidões por último. A consulta consolidada pode passar de um minuto e é encerrada em 90 segundos. Com skip_estaduais=true, vêm só as federais, mais rápido.

Depois, cruze:

  • o município da IE com o município sede do imóvel no CNIR e o da parcela no SIGEF;
  • a área declarada na proposta com area_total (CNIR) e area_ha (SIGEF);
  • o percentual_proprietario e os condominos com quem assina a operação;
  • o polígono geometria_wkt com as coordenadas da gleba financiada, numa ferramenta de GIS.

O código (JavaScript)#

javascript
const BASE = "https://api.fiscalapi.com.br/api";

async function consultar(rota, params, segundos) {
  const resp = await fetch(`${BASE}/${rota}?${new URLSearchParams(params)}`, {
    headers: { "X-API-Key": process.env.FISCALAPI_KEY }, // só no servidor
    signal: AbortSignal.timeout(segundos * 1000),
  });
  if (resp.status === 429) throw new Error(`Limite por minuto: espere ${resp.headers.get("Retry-After")} s`);
  if (resp.status === 402) throw new Error("Saldo do plano esgotado");
  if (!resp.ok) return { falhou: `HTTP ${resp.status}` }; // 5xx e 504: tente mais tarde
  return resp.json();
}

const habilitado = (s) => (s ?? "").trim().toLowerCase() === "habilitado";

function resumoIEs(r) {
  if (r.falhou) return r;
  return {
    completa: r.complete,
    naoBuscaPorCpf: r.results.filter((e) => e.source_status.status === "skipped").map((e) => e.uf),
    habilitadas: r.results.flatMap((e) =>
      e.results.filter((i) => habilitado(i.situacao_ie))
        .map((i) => ({ uf: e.uf, ie: i.inscricao_estadual, municipio: i.municipio }))
    ),
  };
}

function resumoCnir(r) {
  if (r.falhou) return r;
  if (r.source_status.status !== "success") return { falhou: r.source_status.error_code };
  return r.imoveis_cafir.map((i) => ({
    nirf: i.nirf,
    nome: i.denominacao,
    areaHa: i.area_total,
    situacao: i.situacao,
    municipio: `${i.municipio_sede?.nome}/${i.municipio_sede?.uf}`,
    percentual: i.percentual_proprietario,
  }));
}

function resumoSigef(r) {
  if (r.falhou) return r;
  if (r.source_status.status !== "success") return { falhou: r.source_status.error_code };
  return r.result.parcelas.map((p) => ({
    codigo: p.codigo_parcela,
    nome: p.denominacao,
    areaHa: p.area_ha,
    municipio: `${p.municipio}/${p.uf}`,
    matricula: p.matricula,
    situacao: p.status,
    wkt: p.geometria_wkt,
  }));
}

function resumoCertidoes(r) {
  if (r.falhou) return r;
  return {
    // sempre três itens, nesta ordem
    federais: r.certidoes_federais.map((c, i) => ({
      tipo: ["cndt", "cnd_federal", "crf_fgts"][i],
      status: c.result?.status ?? c.source_status.error_code,
      validade: c.result?.validade_iso,
    })),
    estaduais: (r.cnd_estaduais?.results ?? [])
      .filter((e) => e.result && e.result.status !== "nao_contribuinte")
      .map((e) => ({ uf: e.uf, status: e.result.status, validade: e.result.validade_iso })),
  };
}

export async function dossieProdutor(cpf) {
  const ie = await consultar("consultar-ie-todos", { cpf }, 120);
  const [cnir, sigef] = await Promise.all([
    consultar("consultar-cnir", { cpf }, 120),
    consultar("consultar-sigef", { cpf }, 200),
  ]);
  const certidoes = await consultar("certidoes-todas", { cpf }, 120);
  return {
    ies: resumoIEs(ie),
    imoveis: resumoCnir(cnir),
    parcelas: resumoSigef(sigef),
    certidoes: resumoCertidoes(certidoes),
  };
}

Para produtor com CNPJ, troque cpf por cnpj nas quatro chamadas.

Como ler o resultado#

CampoLeitura
ies.habilitadas vazioNenhuma IE habilitada. Veja naoBuscaPorCpf: em SP, por exemplo, a busca é pela IE ou pelo CNPJ
ies.completa: falseAlgum estado não respondeu. Consulte de novo antes de concluir
imoveis vazioNenhum imóvel no CNIR para o documento. Confira se o imóvel está em nome de outra pessoa ou empresa
parcelas vazioNenhuma parcela certificada no SIGEF. Não quer dizer que o imóvel não existe
falhou: "SIGEF_MAINTENANCE" ou "SIGEF_UNAVAILABLE"O SIGEF estava fora. Tente mais tarde. Não é cobrado
Certidão negativa ou positiva_com_efeitos_de_negativaRegular
Certidão positivaHá pendência. Vai para o analista
cnd_federal com erroPor CPF, a CND Federal ainda não sai pela API. Por CNPJ, veja a mensagem

O status de cada certidão está em homologação de fornecedores.

Limites#

  • CND Federal só por CNPJ. Para pessoa física, a Receita pede a data de nascimento, e a API ainda não recebe esse dado. O item volta com erro, sem cobrança.
  • PDF das certidões. A consulta consolidada não traz os PDFs. Para guardar o documento, chame a rota individual da certidão.
  • SIGEF registra só o certificado. Imóvel sem georreferenciamento certificado pelo INCRA não aparece.
  • Busca de IE por CPF. Nem todo estado busca por CPF. São Paulo, por exemplo, só pela IE ou pelo CNPJ.

O que fica fora da FiscalAPI#

Algumas exigências do crédito rural dependem de outras bases:

  • ITR: a concessão de crédito rural fica condicionada à comprovação do recolhimento do ITR dos últimos cinco exercícios, com ressalvas (Lei 9.393/1996, art. 20). O CNIR/CAFIR identifica o imóvel pelo NIRF, mas não mostra o pagamento.
  • CAR, cadastro de empregadores e embargos ambientais: a Seção 9 do Capítulo 2 do MCR veda crédito rural, entre outros casos, a imóvel sem inscrição ou com inscrição cancelada ou suspensa no CAR, a quem está no cadastro de empregadores que mantiveram trabalhadores em condições análogas à de escravo e a imóvel com embargo ambiental por desmatamento ilegal, conforme as condições e exceções do manual.

Perguntas frequentes#

Qual a diferença entre CNIR e SIGEF? O CNIR/CAFIR é o cadastro fiscal da Receita, com todos os imóveis rurais declarados. O SIGEF, do INCRA, tem só as parcelas com limites certificados, e traz o polígono. Veja CNIR e CAFIR.

Precisa de autorização do produtor para consultar? As consultas pedem só o CPF ou o CNPJ e a chave da API. O uso dos dados segue a LGPD e a base legal da sua instituição.

Dá para rodar para uma carteira inteira? Pela API, uma chamada por documento, dentro do limite por minuto do plano (5, 20, 60 ou 120). Para as IEs da carteira sem código, use a consulta de IE em massa.

Por que começar pela IE? Ela mostra logo se o produtor está ativo em algum estado. Sem IE habilitada, o resto da análise pode esperar. Veja como consultar a IE do produtor pelo CPF.


Fontes#

Artigos relacionados#

Compartilhar: WhatsApp LinkedIn Twitter

Consulte dados fiscais via API

Consulte Inscrições Estaduais, CNPJs e Certidões Negativas via API REST. Dados direto da SEFAZ e Receita Federal. Planos a partir de R$ 19,99/mês.

Criar conta →