engineAPIengine·API

Guia: CTe

Emita e gerencie Conhecimentos de Transporte Eletrônico (CTe, modelo 57) via Engine API.

CTe: Conhecimento de Transporte Eletrônico

O CTe (modelo 57) é o documento fiscal obrigatório para transporte de cargas no Brasil. Substitui o Conhecimento de Transporte em papel e deve ser emitido pela transportadora antes do início do transporte.

Endpoint base: https://api.engineapi.com.br/cte

file-plus

Emissão

Emita via JSON. Sem XML, sem SOAP

xmark

Cancelamento

Cancele em até 24h após autorização

pencil

Carta de Correção

Corrija dados sem cancelar o documento


Pré-requisitos

·

Conta e API Key

Gere sua API Key em Dashboard → Configurações → API Keys.

·

Empresa emissora (transportadora)

Cadastre o CNPJ da transportadora via POST /companies. Guarde o id como issuerId.

·

Certificado digital

Faça upload do .pfx via POST /companies/{issuerId}/certificate.

·

Ambiente definido

Use environment: 2 (homologação) para testes, environment: 1 para produção.


Verificar Status do Serviço

Antes de emitir, confirme que a SEFAZ está operacional para CTe:

bash
curl https://api.engineapi.com.br/cte/status?uf=SP \
  -H "x-api-key: SUA_API_KEY"
json
{
  "status": "online",
  "model": "57",
  "service": "CTe",
  "provider": "acbr",
  "uf": "SP"
}

Emitir CTe

bash
curl -X POST https://api.engineapi.com.br/cte \
  -H "x-api-key: SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "issuerId": "ISSUER_ID",
    "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
    "cfop": "5353",
    "valorTotal": 850.00,
    "remetente": {
      "cnpj": "11222333000144",
      "nome": "Empresa Remetente SA",
      "endereco": {
        "logradouro": "Rua das Indústrias",
        "numero": "100",
        "bairro": "Industrial",
        "codigoMunicipio": "3550308",
        "municipio": "São Paulo",
        "uf": "SP",
        "cep": "04001000"
      }
    },
    "destinatario": {
      "cnpj": "99888777000155",
      "nome": "Empresa Destinatária Ltda",
      "endereco": {
        "logradouro": "Av Rio Branco",
        "numero": "200",
        "bairro": "Centro",
        "codigoMunicipio": "3304557",
        "municipio": "Rio de Janeiro",
        "uf": "RJ",
        "cep": "20040020"
      }
    },
    "modal": {
      "tipo": "rodoviario",
      "rntrc": "12345678",
      "veiculo": {
        "placa": "ABC1234",
        "uf": "SP"
      },
      "motorista": {
        "nome": "João Silva",
        "cpf": "12345678901"
      }
    },
    "documentos": [{
      "chaveNFe": "35260211222333000144550010000000011000000019"
    }],
    "icms": {
      "origem": 0,
      "cst": "00",
      "baseCalculo": 850.00,
      "aliquota": 12,
      "valor": 102.00
    }
  }'

Campos de Referência

Raiz

| Campo | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | issuerId | string (UUID) | Sim | ID da transportadora emissora | | naturezaOperacao | string | Sim | Ex: "PRESTACAO DE SERVICO DE TRANSPORTE" | | cfop | string | Sim | 5353 (estadual) ou 6353 (interestadual) | | valorTotal | número | Sim | Valor total do frete em R$ | | remetente | objeto | Sim | Quem envia a carga | | destinatario | objeto | Sim | Quem recebe a carga | | modal | objeto | Sim | Dados do modal de transporte | | documentos | array | Sim | NFes vinculadas ao transporte | | icms | objeto | Sim | Dados tributários | | expedidor | objeto | Não | Se diferente do remetente | | recebedor | objeto | Não | Se diferente do destinatário | | seguro | objeto | Não | Seguro da carga |

| Campo | Tipo | Obrigatório | Descrição | |-------|------|-------------|-----------| | rntrc | string | Sim | Registro Nacional de Transportadores | | veiculo.placa | string | Sim | Placa do veículo trator | | veiculo.uf | string | Sim | UF da placa | | motorista.nome | string | Sim | Nome do motorista | | motorista.cpf | string | Sim | CPF do motorista |


Response de Sucesso

json
{
  "success": true,
  "cte": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "accessKey": "35260211222333000144570010000000011000000019",
    "status": "AUTHORIZED",
    "protocol": "135260000001234",
    "xmlUrl": "/cte/xml/354602...",
    "pdfUrl": "/cte/pdf/354602...",
    "createdAt": "2026-04-27T02:00:00.000Z"
  }
}

Cancelar CTe

bash
curl -X POST https://api.engineapi.com.br/cte/35260.../cancelar \
  -H "x-api-key: SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "motivo": "Erro nos dados do remetente informados" }'

O cancelamento de CTe é permitido em até 24 horas após a autorização e requer um motivo com no mínimo 15 caracteres.


Carta de Correção (CC-e)

bash
curl -X POST https://api.engineapi.com.br/cte/35260.../cce \
  -H "x-api-key: SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "correcao": "Corrijo a placa do veículo de ABC1234 para XYZ9876" }'

São permitidas até 20 cartas de correção por CTe. A CC-e não pode alterar o remetente, destinatário, valores ou dados fiscais. Apenas informações complementares.


Próximos passos