API

Como Emitir CT-e Modelo 57 via API REST JSON: ICMS Frete, Seguro RCTR-C e DACTE

Aprenda a emitir CT-e (Conhecimento de Transporte Eletrônico Mod 57) via API REST em JSON. Regras de ICMS frete, tomador, averbação de seguro RCTR-C e geração de DACTE.

Fábio Magalhães CostaAtualizado em 08/10/2026
Emissão automatizada de CT-e Modelo 57 com ICMS frete e seguro de carga via API REST JSON

Emissão automatizada de CT-e Modelo 57 com ICMS frete e seguro de carga via API REST JSON

O Conhecimento de Transporte Eletrônico (CT-e - Modelo 57) é o documento fiscal de emissão obrigatória para empresas que prestam serviços de transporte rodoviário, aéreo, ferroviário ou aquaviário de cargas no Brasil.

Historicamente, integrar a emissão de CT-e em sistemas de gestão de transporte (TMS), ERPs e plataformas de frete significava lidar com uma infraestrutura pesada: componentes ACBr atrelados a servidores Windows, DLLs legadas da TecnoSpeed ou schemas XSD da SEFAZ com mais de 500 campos XML que quebram a cada nova Nota Técnica.

Com a Notaas, toda essa complexidade foi abstraída em uma API REST moderna em JSON puro.

Neste guia técnico, você vai aprender como emitir um CT-e Rodoviário completo em poucos segundos, configurando corretamente o tomador do serviço, o ICMS do frete, a apólice com averbação de seguro obrigatório (RCTR-C) e gerando o DACTE (Documento Auxiliar do CT-e) em PDF de alta resolução.


🧭 Os 4 Pilares Tributários do CT-e Rodoviário

Diferente de uma NF-e de mercadorias (onde o foco está no produto vendido), o CT-e audita a prestação do serviço de movimentação física da carga. Antes de montar o payload JSON, quatro pontos fundamentais devem ser observados:

1. Tomador do Serviço (toma)

O tomador é quem efetivamente paga pelo frete e quem poderá creditar o imposto. A legislação do CT-e permite 4 papéis:

  • 0 - Remetente (Frete CIF);
  • 1 - Expedidor;
  • 2 - Recebedor;
  • 3 - Destinatário (Frete FOB);
  • 4 - Outros (Terceiro pagador do frete).

2. CFOP de Transporte

A definição do CFOP depende da origem e do destino da prestação do serviço:

  • 5.353 / 5.357: Prestação de serviço de transporte a estabelecimento comercial/industrial dentro do mesmo estado (Intraestadual);
  • 6.353 / 6.357: Prestação de serviço de transporte interestadual.

3. Seguro Obrigatório de Carga (RCTR-C)

Por exigência da ANTT e da legislação fiscal, o transporte rodoviário de cargas exige a menção explícita da seguradora, número da apólice e número de averbação eletrônica do seguro de Responsabilidade Civil do Transportador Rodoviário de Carga (RCTR-C).

4. Vínculo com a NF-e

O CT-e deve sempre referenciar a chave de 44 dígitos da NF-e de mercadoria transportada (Modelo 55), garantindo a rastreabilidade do que está dentro do caminhão.


🚀 Exemplo Completo de Payload JSON (POST /api/v1/cte)

Veja como estruturar uma requisição de emissão de CT-e na Notaas com todas as validações fiscais e dados de seguro:

{
  "tipo": "cte",
  "naturezaOperacao": "Prestacao de Servico de Transporte Interestadual",
  "cfop": "6353",
  "formaPagamento": "0", // Pago
  "tomador": {
    "tipo": "3", // Destinatário paga o frete (FOB)
    "cnpj": "12345678000195"
  },
  "remetente": {
    "cnpj": "98765432000188",
    "razaoSocial": "INDUSTRIA METALURGICA DO SUL LTDA",
    "inscricaoEstadual": "1122334455",
    "endereco": {
      "logradouro": "Rodovia BR 101",
      "numero": "Km 45",
      "bairro": "Industrial",
      "codigoMunicipio": "4209102", // Joinville/SC
      "uf": "SC",
      "cep": "89200000"
    }
  },
  "destinatario": {
    "cnpj": "12345678000195",
    "razaoSocial": "DISTRIBUIDORA DE AUTO PECAS S.A.",
    "inscricaoEstadual": "9988776655",
    "endereco": {
      "logradouro": "Avenida dos Bandeirantes",
      "numero": "3200",
      "bairro": "Planalto",
      "codigoMunicipio": "3550308", // São Paulo/SP
      "uf": "SP",
      "cep": "04000000"
    }
  },
  "valores": {
    "valorPrestacao": 1850.00,
    "valorReceber": 1850.00,
    "componentes": [
      { "nome": "FRETE VALOR", "valor": 1600.00 },
      { "nome": "GRIS (GERENCIAMENTO DE RISCO)", "valor": 150.00 },
      { "nome": "PEDAGIO", "valor": 100.00 }
    ]
  },
  "tributacao": {
    "cstIcms": "00", // Tributação integral
    "baseCalculo": 1850.00,
    "aliquota": 12.00, // Interestadual SC -> SP
    "valorIcms": 222.00
  },
  "carga": {
    "valorCarga": 125000.00,
    "produtoPredominante": "PECAS AUTOMOTIVAS DE METAL",
    "pesoBrutoKg": 4200.00,
    "quantidadeVolumes": 35
  },
  "seguro": {
    "responsavel": "4", // Emitente do CT-e
    "seguradora": "PORTO SEGURO COMPANHIA DE SEGUROS",
    "numeroApolice": "9928172635",
    "numeroAverbacao": "ATMS-2026-981240"
  },
  "documentosOriginarios": [
    {
      "tipo": "nfe",
      "chave": "42261098765432000188550010000450911000450918"
    }
  ]
}

⚡ Ciclo de Vida do CT-e na Notaas:

  • 1. Envio REST: O TMS dispara o JSON para a Notaas.
  • 2. Assinatura & Schema: A Notaas gera o XML do CT-e v4.00, valida contra os XSDs da SEFAZ Virtual e assina com o Certificado Digital A1 da transportadora.
  • 3. Autorização Imediata: Retorno síncrono com a Chave de Acesso de 44 dígitos e protocolo de autorização.
  • 4. Renderização do DACTE PDF: A Notaas gera o PDF oficial do DACTE localmente em menos de 400ms, pronto para impressão ou download.
  • 5. Webhook: Confirmação enviada via webhook com HMAC SHA-256 para atualização de status no TMS.

📄 Geração do DACTE em PDF Local

Um ponto crítico em operações logísticas de alto volume (centros de distribuição e transportadoras de cross-docking) é o tempo de liberação da documentação. Depender de servidores externos ou scripts lentos para gerar o DACTE cria filas de caminhões na portaria.

Na Notaas, a compilação do DACTE v4.00 é realizada através de um renderizador local de alta performance baseado em Chromium com suporte a tini init, eliminando falhas de memória e gerando PDFs nítidos com códigos de barras e QR Codes de fiscalização em milissegundos.


💻 Integração em TypeScript / Node.js

Veja como plugar a emissão de CT-e em uma rota de API moderna no seu backend:

import axios from "axios";

export async function emitirCteRodoviario(payloadCte: any, apiKey: string) {
  const endpoint = "https://api.notaas.com.br/api/v1/cte";

  try {
    const { data } = await axios.post(endpoint, payloadCte, {
      headers: {
        Authorization: `Bearer ${apiKey}`,
        "Content-Type": "application/json"
      }
    });

    console.log("CT-e Autorizado com Sucesso!");
    console.log("Chave de Acesso:", data.chaveAcesso);
    console.log("URL do DACTE PDF:", data.dacteUrl);
    console.log("URL do XML:", data.xmlUrl);

    return data;
  } catch (error: any) {
    console.error("Rejeição SEFAZ na emissão do CT-e:", error.response?.data || error.message);
    throw error;
  }
}

🔗 Próximo Passo: O MDF-e de Carga

Emitir o CT-e é apenas a primeira etapa do transporte interestadual. Quando o caminhão carrega as mercadorias de um ou mais clientes, a legislação exige o agrupamento de todos os CT-es ou NF-es no Manifesto Eletrônico de Documentos Fiscais (MDF-e - Modelo 58).

Veja nosso guia complementar sobre Como Emitir MDF-e para Carga Própria e Transportadoras e nosso artigo geral sobre a API de CT-e e MDF-e para Logística.


🏁 Conclusão

Emitir CT-e rodoviário não precisa depender de ferramentas legadas dos anos 2000. Com a API REST JSON da Notaas, sua transportadora ou software house obtém:

  • 50 emissões gratuitas por mês em produção real por CNPJ;
  • Suporte nativo a CT-e v4.00, averbação de seguro RCTR-C e ICMS frete automático;
  • Geração instantânea de DACTE PDF e webhooks com assinatura segura.

👉 Quer começar a emitir CT-e na sua aplicação hoje mesmo?
Acesse a Documentação Técnica Notaas ou crie sua conta gratuita em platform.notaas.com.br/sign-up.

Notaas — API Fiscal para Desenvolvedores

Emita NFS-e, NF-e e NFC-e via API sem complexidade tributária

Conheça a API de Nota Fiscal da Notaas: integração via REST API simples, sandbox imediato, webhooks assinados com HMAC e suporte a múltiplos CNPJs. 50 notas fiscais gratuitas todo mês.