Consultar CND Federal (RFB+PGFN)
Devolve a Certidão de Regularidade Fiscal relativa aos Tributos Federais e a Dívida Ativa da União — a que ainda vale ou uma emitida na hora.
GET /api/consultar-cnd-federal
Devolve a Certidão Negativa de Débitos relativos aos Tributos Federais e a Dívida Ativa da União, emitida conjuntamente pela Receita Federal (RFB) e pela Procuradoria-Geral da Fazenda Nacional (PGFN). A certidão vale 180 dias a partir da emissão e é aceita para o estabelecimento matriz e suas filiais.
Como funciona:
- Já existe certidão válida por mais de 3 dias: a API devolve essa certidão, com o PDF oficial (
modo: "consulta"). Nada é emitido. - Não existe, ou a existente vence em até 3 dias: a API emite uma certidão nova na Receita e devolve o PDF (
modo: "emissao"). emitir_nova=true: a API sempre emite uma certidão nova, mesmo que já exista uma válida.
Por enquanto, somente CNPJ. A Receita exige a data de nascimento para emitir a certidão de pessoa física, e este endpoint ainda não recebe esse dado: consultas por cpf voltam status: "erro", sem consumir crédito.
Autenticação
Envie sua chave no header X-API-Key. Veja Autenticação para detalhes.
Parâmetros de consulta
Informe o parâmetro cnpj. Se cpf e cnpj forem enviados juntos, cnpj tem precedência.
| Name | Type | Required | Description |
|---|---|---|---|
cnpj | string | Sim | CNPJ do contribuinte (somente números, 14 dígitos). |
emitir_nova | boolean | Não | true emite sempre uma certidão nova, sem usar a que já existe. Padrão: false. |
Exemplos de código
curl -X GET "https://api.fiscalapi.com.br/api/consultar-cnd-federal?cnpj=12345678000199" \
-H "X-API-Key: fapi_sua_chave_aqui"const response = await fetch(
"https://api.fiscalapi.com.br/api/consultar-cnd-federal?cnpj=12345678000199",
{ headers: { "X-API-Key": "fapi_sua_chave_aqui" } }
);
const data = await response.json();
console.log(data.result.status, data.result.modo);import requests
response = requests.get(
"https://api.fiscalapi.com.br/api/consultar-cnd-federal",
headers={"X-API-Key": "fapi_sua_chave_aqui"},
params={"cnpj": "12345678000199"},
)
data = response.json()
print(data["result"]["status"], data["result"]["modo"])$response = Http::withHeaders([
'X-API-Key' => 'fapi_sua_chave_aqui',
])->get('https://api.fiscalapi.com.br/api/consultar-cnd-federal', [
'cnpj' => '12345678000199',
]);
$data = $response->json();var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "fapi_sua_chave_aqui");
var response = await client.GetAsync(
"https://api.fiscalapi.com.br/api/consultar-cnd-federal?cnpj=12345678000199"
);
var data = await response.Content.ReadAsStringAsync();Emitir sempre uma certidão nova
curl -X GET "https://api.fiscalapi.com.br/api/consultar-cnd-federal?cnpj=12345678000199&emitir_nova=true" \
-H "X-API-Key: fapi_sua_chave_aqui"Chamadas repetidas com emitir_nova=true para o mesmo CNPJ em até 15 minutos devolvem a mesma emissão, sem emitir outra. Se a Receita já emitiu uma certidão para o CNPJ no mesmo dia, ela pode devolver o mesmo código de controle.
Resposta
Campos de nível superior
| Campo | Tipo | Descrição |
|---|---|---|
request_id | string | Identificador único da requisição (UUID). |
document | string | Documento consultado. |
document_type | string | Tipo do documento: cnpj ou cpf. |
cached | boolean | true quando a certidão já estava guardada. A mesma certidão é devolvida enquanto valer por mais de 3 dias. |
source_status | object | Status da fonte (status, error_code, error_message). |
result | object | Dados da certidão. Vem null quando source_status.status não é success. |
Campos de result
| Campo | Tipo | Descrição |
|---|---|---|
tipo | string | Sempre cnd_federal neste endpoint. |
status | string | Status normalizado da certidão. Veja tabela abaixo. |
status_raw | string | Título da certidão ou mensagem da Receita. |
modo | string | consulta: certidão que já existia. emissao: certidão emitida nesta consulta. |
validade | string | Data de validade (DD/MM/AAAA). |
validade_iso | string | Data de validade em ISO 8601 (YYYY-MM-DD). |
emissao | string | Data de emissão (DD/MM/AAAA). |
emissao_iso | string | Data de emissão em ISO 8601 (YYYY-MM-DD). |
protocolo | string | Código de controle da certidão, no formato XXXX.XXXX.XXXX.XXXX. |
pdf_base64 | string | PDF oficial da certidão em base64. Vazio quando a Receita não emite (pendências). |
url_verificacao | string | Reservado; hoje vem vazio. A autenticidade é conferida com o código de controle nos sites da Receita Federal ou da PGFN. |
orgao | string | Sempre RFB+PGFN neste endpoint. |
Valores de status
| Status | Significado |
|---|---|
negativa | Não constam pendências relativas a tributos federais e a dívida ativa da União. Situação regular. |
positiva | Há pendências. Inclui o caso em que a Receita não emite a certidão pela internet por pendência ou situação cadastral: vem sem PDF, com a mensagem da Receita em status_raw. |
positiva_com_efeitos_de_negativa | Há débitos, mas suspensos ou garantidos (parcelamento, decisão judicial etc.). Tem os mesmos efeitos da certidão negativa. |
nao_contribuinte | O CNPJ não está cadastrado na Receita Federal. |
erro | A Receita recusou o pedido (ex.: CNPJ de filial — a certidão sai para a matriz) ou o PDF não pode ser validado. A mensagem vem em status_raw. Não consome crédito. |
Exemplo de resposta (certidão que já existia)
{
"request_id": "uuid",
"document": "12345678000199",
"document_type": "cnpj",
"cached": false,
"source_status": {
"status": "success",
"error_code": "",
"error_message": ""
},
"result": {
"tipo": "cnd_federal",
"status": "negativa",
"status_raw": "Certidao Negativa de Debitos relativos aos Tributos Federais e a Divida Ativa da Uniao",
"modo": "consulta",
"validade": "13/03/2027",
"validade_iso": "2027-03-13",
"emissao": "14/09/2026",
"emissao_iso": "2026-09-14",
"protocolo": "1A2B.3C4D.5E6F.7A8B",
"pdf_base64": "JVBERi0xLjQK...",
"url_verificacao": "",
"orgao": "RFB+PGFN"
}
}O status, as datas e o código de controle são lidos do próprio PDF da Receita, e a certidão só é entregue se o PDF declarar o CNPJ consultado. Quando isso não dá para confirmar, a API responde status: "erro" em vez de presumir regularidade.
Quando a emissão ainda está em andamento
A consulta pode levar até cerca de 60 segundos. Se a certidão não ficar pronta nesse tempo, a API responde HTTP 200 com error_code: "EM_PROCESSAMENTO" e o header Retry-After (em segundos). A emissão continua em segundo plano: consulte de novo depois do tempo indicado para receber a certidão. Consultar de novo não dispara outra emissão e essa resposta não consome crédito.
HTTP/1.1 200 OK
Retry-After: 45{
"request_id": "uuid",
"document": "12345678000199",
"document_type": "cnpj",
"cached": false,
"source_status": {
"status": "error",
"error_code": "EM_PROCESSAMENTO",
"error_message": "A emissao desta certidao esta em andamento. Consulte novamente em cerca de 45 s."
},
"result": null
}import time
import requests
def consultar_cnd_federal(cnpj: str) -> dict:
while True:
response = requests.get(
"https://api.fiscalapi.com.br/api/consultar-cnd-federal",
headers={"X-API-Key": "fapi_sua_chave_aqui"},
params={"cnpj": cnpj},
)
data = response.json()
if data["source_status"].get("error_code") != "EM_PROCESSAMENTO":
return data
time.sleep(int(response.headers.get("Retry-After", 30)))Consumo de créditos
Cada consulta que devolve a certidão consome 1 crédito, seja ela uma certidão que já existia ou uma emitida na hora — inclusive com emitir_nova=true.
Não consomem crédito: status: "erro", EM_PROCESSAMENTO, os demais códigos de source_status e os erros HTTP abaixo.
Códigos de erro
Em source_status (HTTP 200)
| Código | Descrição |
|---|---|
EM_PROCESSAMENTO | A certidão ainda está sendo emitida. Consulte de novo depois do Retry-After. |
PROVIDER_ERROR | A Receita Federal não concluiu a emissão agora. Consulte novamente em alguns minutos. |
CNPJ_INVALIDO / CPF_INVALIDO | Documento com formato inválido ou dígito verificador que não confere. |
HTTP
| Código | HTTP Status | Descrição |
|---|---|---|
PARAMETRO_AUSENTE | 400 | Nenhum documento (cnpj ou cpf) foi informado. |
LIMITE_ATINGIDO | 402 | Cota mensal do plano esgotada (e sem créditos extras). |
RATE_LIMIT_EXCEEDED | 429 | Rate limit do plano excedido. |
ERRO_INTERNO | 500 | Erro interno no servidor. |
Esta pagina foi util?