# CND estadual nos 27 estados numa chamada

> Consulta a Certidão Negativa de Débitos estadual (CND de ICMS) de um CNPJ ou CPF nos 27 estados de uma vez.

URL: https://docs.fiscalapi.com.br/docs/cnd/consultar-cnd-todos
Atualizado em 06/11/2026

`GET /api/consultar-cnd-todos` devolve a situação da CND estadual (certidão negativa de débitos de ICMS) de um CNPJ ou CPF nos **27 estados** numa chamada só, com o resultado de cada UF, e conta como **1 consulta** (de R$ 0,025 a R$ 0,67, conforme o plano).

Não é cobrada a chamada que volta erro HTTP nem a que falha em todos os estados. Se pelo menos um estado respondeu, ela conta. Os detalhes de cada status e as particularidades por estado estão em [API de CND estadual por UF](/docs/cnd/consultar-cnd).

<Callout type="warn">
  Este endpoint pode demorar mais para responder. Configure um timeout adequado na sua aplicação.
</Callout>

## ## Autenticação

Envie sua chave no header `X-API-Key`. Veja [Autenticação](/docs/getting-started/authentication) para detalhes.

## ## Parâmetros de consulta

Você deve informar pelo menos um dos parâmetros `cpf` ou `cnpj`.

| Name   | Type   | Required | Description                                         |
| ------ | ------ | -------- | --------------------------------------------------- |
| `cpf`  | string | Não      | CPF do contribuinte (somente números, 11 dígitos).  |
| `cnpj` | string | Não      | CNPJ do contribuinte (somente números, 14 dígitos). |

## ## Exemplos

### ### CND de um CNPJ em todas as UFs

<Tabs items="[&#x22;curl&#x22;, &#x22;JavaScript&#x22;, &#x22;Python&#x22;, &#x22;PHP&#x22;, &#x22;C#&#x22;]">
  <Tab value="curl">
    ```bash
    curl -X GET "https://api.fiscalapi.com.br/api/consultar-cnd-todos?cnpj=12345678000195" \
      -H "X-API-Key: fapi_sua_chave_aqui"
    ```
  </Tab>

  <Tab value="JavaScript">
    ```javascript
    const response = await fetch(
      "https://api.fiscalapi.com.br/api/consultar-cnd-todos?cnpj=12345678000195",
      { headers: { "X-API-Key": "fapi_sua_chave_aqui" } }
    );
    const data = await response.json();
    data.results.forEach((r) => {
      console.log(`${r.uf}: ${r.result?.status ?? r.source_status.status}`);
    });
    ```
  </Tab>

  <Tab value="Python">
    ```python
    import requests

    response = requests.get(
        "https://api.fiscalapi.com.br/api/consultar-cnd-todos",
        headers={"X-API-Key": "fapi_sua_chave_aqui"},
        params={"cnpj": "12345678000195"},
        timeout=120,
    )
    data = response.json()
    for r in data["results"]:
        status = r["result"]["status"] if r["result"] else r["source_status"]["status"]
        print(f"{r['uf']}: {status}")
    ```
  </Tab>

  <Tab value="PHP">
    ```php
    $response = Http::timeout(120)->withHeaders([
        'X-API-Key' => 'fapi_sua_chave_aqui',
    ])->get('https://api.fiscalapi.com.br/api/consultar-cnd-todos', [
        'cnpj' => '12345678000195',
    ]);
    $data = $response->json();
    ```
  </Tab>

  <Tab value="C#">
    ```csharp
    var client = new HttpClient { Timeout = TimeSpan.FromSeconds(120) };
    client.DefaultRequestHeaders.Add("X-API-Key", "fapi_sua_chave_aqui");
    var response = await client.GetAsync(
        "https://api.fiscalapi.com.br/api/consultar-cnd-todos?cnpj=12345678000195"
    );
    var data = await response.Content.ReadAsStringAsync();
    ```
  </Tab>
</Tabs>

## ## Resposta

### ### Campos de nível superior

| Campo           | Tipo   | Descrição                                 |
| --------------- | ------ | ----------------------------------------- |
| `request_id`    | string | Identificador único da requisição (UUID). |
| `document`      | string | Documento enviado na consulta.            |
| `document_type` | string | Tipo do documento: `cpf` ou `cnpj`.       |
| `results`       | array  | Lista de resultados por UF.               |

### ### Campos de cada resultado (`results[]`)

| Campo           | Tipo           | Descrição                                                                                        |
| --------------- | -------------- | ------------------------------------------------------------------------------------------------ |
| `uf`            | string         | Sigla do estado.                                                                                 |
| `source_status` | object         | Status da consulta naquele estado (`status`, `error_code`, `error_message`).                     |
| `result`        | object \| null | Dados da certidão (mesma estrutura do endpoint [Consultar CND por UF](/docs/cnd/consultar-cnd)). |

### ### Exemplo de resposta

```json
{
  "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "document": "12345678000195",
  "document_type": "cnpj",
  "results": [
    {
      "uf": "MT",
      "source_status": { "status": "success" },
      "result": {
        "status": "negativa",
        "status_raw": "Certidao Negativa",
        "validade": "13/09/2026",
        "validade_iso": "2026-09-13",
        "emissao": "13/03/2026",
        "emissao_iso": "2026-03-13",
        "protocolo": "123456",
        "codigo_autenticacao": "ABCD1234EFGH5678"
      }
    },
    {
      "uf": "SP",
      "source_status": { "status": "success" },
      "result": {
        "status": "nao_contribuinte",
        "status_raw": "Nao Contribuinte"
      }
    }
  ]
}
```

<Callout type="info">
  Estados em que o contribuinte não possui inscrição estadual retornarão `status: "nao_contribuinte"`. Isso é esperado e não indica erro. Consulte os [valores de status da CND](/docs/cnd/consultar-cnd#valores-de-status-da-cnd) para entender cada status.
</Callout>

## ## Códigos de erro

| Código              | HTTP Status | Descrição                                     |
| ------------------- | ----------- | --------------------------------------------- |
| `PARAMETRO_AUSENTE` | 400         | Nenhum documento (cpf ou cnpj) foi informado. |
| `ERRO_INTERNO`      | 500         | Erro interno no servidor.                     |
