Endpoints CT-e

Emitir, transmitir à SEFAZ, DACTE PDF, XML, cancelar e debug.

Referência técnica completa de todos os endpoints REST para emissão, envio, consulta, cancelamento e depuração de CT-e (Conhecimento de Transporte Eletrônico - Modelo 57). Todos os endpoints exigem autenticação via header X-API-Key.

Endpoints Disponíveis

POST/v1/cte

Cria um rascunho de CT-e com dados do frete, percurso, carga e participantes.

POST/v1/cte/:id/send

Enfileira o CT-e para assinatura digital A1 e autorização junto à SEFAZ via fila assíncrona.

GET/v1/cte/:id

Consulta o status, chave de acesso de 44 dígitos, protocolo e dados completos do CT-e.

GET/v1/cte/:id/dacte

Gera e faz o download do DACTE em formato PDF com código de barras e QR Code oficial.

GET/v1/cte/:id/xml

Obtém o XML assinado ou autorizado com protocolo da SEFAZ (Content-Type: application/xml).

POST/v1/cte/:id/cancel

Cancela um CT-e autorizado transmitindo o evento de cancelamento oficial à SEFAZ.

POST/v1/cte/:id/cce

Emite Carta de Correção Eletrônica (CC-e tpEvento 110110) para sanar dados cadastrais ou observações.

POST/v1/cte/inutilizar

Inutiliza faixa numérica de CT-e (Modelo 57) quebrada perante o webservice CteInutilizacao da SEFAZ.

GET/v1/cte/:id/debug

Obtém auditoria técnica completa: payload JSON original, logs de fila, status SOAP, eventos e XML.

GET/v1/cte

Lista conhecimentos de transporte emitidos com suporte a filtros e paginação.

DELETE/v1/cte/:id

Exclui um CT-e em estado de rascunho ou erro pré-transmissão.

1. Criar Rascunho de CT-e (POST /v1/cte)

Crie o documento com os dados do transporte. A numeração sequencial e a série são reservadas automaticamente com base nas configurações da sua empresa.

O body JSON permite definir remetente, destinatário, percurso (início e término), valor da prestação, componentes de frete, dados do veículo e NF-es transportadas.

POST/v1/cte

Dica

Se você já tiver um cliente cadastrado no NFER, basta enviar customerId para reaproveitar os dados cadastrais e endereço automaticamente.
1
2
3
4
5
6
7
8
9
10
11
12
{
"modal": "01",
"cfop": "5353",
"natOp": "PRESTACAO DE SERVICO DE TRANSPORTE",
"ufIni": "SP",
"xMunIni": "Campinas",
"ufFim": "SP",
"xMunFim": "São Paulo",
"toma": "0",
"destinatario": {
"nome": "Logística & Distribuição Express LTDA",
"cpfCnpj": "12345678000195",

2. Transmitir à SEFAZ (POST /v1/cte/:id/send)

Dispara o processo de autorização assíncrona. O worker do NFER assina o XML com o Certificado Digital A1, conecta ao webservice SOAP da SEFAZ e obtém o protocolo de autorização (cStat 100).

POST/v1/cte/:id/send

A API responde imediatamente confirmando o enfileiramento na fila de alta velocidade. Você pode acompanhar o status via polling no endpoint GET /v1/cte/:id ou consultar o modal de debug.

1
2
3
4
{
"success": true,
"message": "CT-e enfileirado para autorização SEFAZ"
}

3. Consultar CT-e (GET /v1/cte/:id)

Retorna os dados completos do CT-e, incluindo situação na SEFAZ, chave de acesso de 44 dígitos e protocolo de autorização.

1
2
3
4
5
6
7
8
9
10
11
12
{
"id": "3a7b9c1d-8f2e-4b99-9812-789a1b2c3d4e",
"company_id": "c1a2b3c4-d5e6-7f8a-9b0c-1d2e3f4a5b6c",
"numero": 42,
"serie": 1,
"status": "autorizada",
"chave_acesso": "35260912345678000195570010000000421234567891",
"protocolo": "135260001234567",
"valor_total": "850.00",
"origem": "api",
"ambiente": "producao",
"created_at": "2026-09-09T10:15:00.000Z",

4. DACTE em PDF (GET /v1/cte/:id/dacte)

Retorna o fluxo binário do PDF do DACTE com cabeçalho Content-Type: application/pdf. O documento é cacheado no storage seguro da NFER para recuperação instantânea.

Parâmetros opcionais de Query String:

  • download=true: Adiciona cabeçalho Content-Disposition: attachment para forçar download no navegador.
  • regenerate=true: Ignora o cache do S3 e regera o PDF com layout atualizado.
1
2
3
curl -X GET "https://api.nfer.me/v1/cte/3a7b9c1d-8f2e-4b99-9812-789a1b2c3d4e/dacte?download=true" \
-H "X-API-Key: sua_api_key_aqui" \
--output DACTE_35260912345678000195570010000000421234567891.pdf

5. Obter XML Autorizado (GET /v1/cte/:id/xml)

Retorna o XML completo com as tags <CTe> e <protCTe> autorizados pela SEFAZ. Ideal para envio automatizado a tomadores, contabilidade ou arquivamento fiscal.

1
2
3
curl -X GET "https://api.nfer.me/v1/cte/3a7b9c1d-8f2e-4b99-9812-789a1b2c3d4e/xml" \
-H "X-API-Key: sua_api_key_aqui" \
--output cte_autorizado.xml

6. Cancelar CT-e (POST /v1/cte/:id/cancel)

Cancela o Conhecimento de Transporte perante a SEFAZ. O cancelamento exige que a viagem de transporte ainda não tenha sido iniciada e respeite o prazo regulamentar da SEFAZ estadual (geralmente até 7 dias da autorização).

A justificativa deve ser clara e conter no mínimo 15 caracteres e no máximo 255 caracteres.

POST/v1/cte/:id/cancel
1
2
3
{
"justificativa": "Cancelamento do frete por desistência da carga antes da coleta."
}

7. Carta de Correção Eletrônica - CC-e (POST /v1/cte/:id/cce)

Emite o evento oficial de Carta de Correção de CT-e (tpEvento 110110) conforme o Art. 58-B do CONVÊNIO/SINIEF 06/89. Permite corrigir erros cadastrais e observações do transporte. É vedada a alteração de valores de imposto, alíquotas, dados cadastrais que impliquem mudança de remetente/destinatário/tomador ou datas de emissão.

Você pode enviar a correção como texto livre (mínimo 15 caracteres) ou como array de nós estruturados no grupo correcoes.

POST/v1/cte/:id/cce
1
2
3
4
{
"correcao": "Correcao do numero predial e dados de contato do destinatario para entrega da mercadoria.",
"sequencia": 1
}

8. Inutilização de Numeração (POST /v1/cte/inutilizar)

Comunica a quebra de sequência numérica de CT-e (Modelo 57) diretamente ao webservice CteInutilizacao da SEFAZ, garantindo conformidade com a obrigação legal de justificar números não utilizados até o 10º dia do mês subsequente.

Informe a série, o número inicial e final do intervalo a inutilizar e uma justificativa detalhada com pelo menos 15 caracteres.

POST/v1/cte/inutilizar
1
2
3
4
5
6
{
"serie": 1,
"numeroInicial": 15,
"numeroFinal": 18,
"justificativa": "Quebra de sequencia numerica devido a falha no envio do lote de transportes."
}

9. Depuração Completa (GET /v1/cte/:id/debug)

Inspeciona a auditoria profunda do documento: payload JSON original recebido pela API, histórico cronológico de logs da fila SEFAZ com códigos de resposta (cStat, xMotivo), eventos de CC-e vinculados, XML assinado/transmitido e snapshot do banco de dados.

1
2
3
4
5
6
7
8
9
10
11
12
{
"cte": {
"id": "3a7b9c1d-8f2e-4b99-9812-789a1b2c3d4e",
"numero": 42,
"serie": 1,
"status": "autorizada",
"chave_acesso": "35260912345678000195570010000000421234567891",
"protocolo": "135260001234567",
"origem": "api",
"request_payload": {
"modal": "01",
"cfop": "5353",