Weesy Docs

Emitir e consultar CT-e

Emitir CT-e

POST https://apifiscal.weesy.com.br/v1/cte

Abrir na referência interativa

Envia um CT-e para autorização na SEFAZ com todos os dados do frete. A resposta só confirma que recebemos; o resultado (autorizado ou rejeitado) chega depois pelo webhook ou consultando o CT-e.

Não duplica: o idIntegracao identifica o CT-e no seu sistema. Mandou de novo o mesmo idIntegracao com o mesmo corpo? Devolvemos o CT-e que já existe (200), sem emitir outro. Se o CT-e anterior foi rejeitado, mandar o mesmo idIntegracao com o corpo corrigido reenvia o CT-e com os dados novos (200, mesmo id). Em qualquer outra situação, corpo diferente com o mesmo idIntegracao responde 409.

Os dados da empresa (razão social, endereço, inscrição estadual, regime) vêm do cadastro da Weesy — não vão no corpo.

Exemplo de chamada

cURL

curl --request POST \
  --url "https://apifiscal.weesy.com.br/v1/cte" \
  --header "Authorization: Bearer $WEESY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "idIntegracao": "frete-10432",
  "cnpjEmitente": "21664333000195",
  "ambiente": "homologacao",
  "serie": "1",
  "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
  "tomador": {
    "papel": 0
  },
  "remetente": {
    "cpfCnpj": "11222333000181",
    "inscricaoEstadual": "111222333444",
    "nome": "EMPRESA EXEMPLO LTDA",
    "endereco": {
      "cep": "01001000",
      "logradouro": "Rua Exemplo",
      "numero": "100",
      "bairro": "Centro",
      "codigoIbge": "3550308"
    }
  },
  "destinatario": {
    "cpfCnpj": "12345678000195",
    "inscricaoEstadual": "9012345678",
    "nome": "CLIENTE EXEMPLO LTDA",
    "endereco": {
      "cep": "80010000",
      "logradouro": "Avenida Exemplo",
      "numero": "200",
      "bairro": "Centro",
      "codigoIbge": "4106902"
    }
  },
  "origem": {
    "codigoIbge": "3550308"
  },
  "destino": {
    "codigoIbge": "4106902"
  },
  "documentosTransportados": [
    {
      "chaveNfe": "35261011222333000181550010000456781000456789"
    }
  ],
  "valores": {
    "valorTotalServico": 850,
    "valorReceber": 850,
    "componentes": [
      {
        "nome": "FRETE PESO",
        "valor": 800
      },
      {
        "nome": "PEDAGIO",
        "valor": 50
      }
    ]
  },
  "carga": {
    "valor": 15800,
    "produtoPredominante": "MATERIAL DE CONSTRUCAO",
    "quantidades": [
      {
        "unidade": "01",
        "tipoMedida": "PESO BRUTO",
        "quantidade": 1250.5
      }
    ]
  },
  "impostos": {
    "cfop": "6353",
    "icms": {
      "cst": "00",
      "baseCalculo": 850,
      "aliquota": 12,
      "valor": 102
    }
  },
  "rodoviario": {
    "rntrc": "12345678"
  },
  "observacoes": {
    "informacoesComplementares": "Entregar em horário comercial."
  }
}'

Node.js

const resposta = await fetch("https://apifiscal.weesy.com.br/v1/cte", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.WEESY_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "idIntegracao": "frete-10432",
    "cnpjEmitente": "21664333000195",
    "ambiente": "homologacao",
    "serie": "1",
    "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
    "tomador": {
      "papel": 0
    },
    "remetente": {
      "cpfCnpj": "11222333000181",
      "inscricaoEstadual": "111222333444",
      "nome": "EMPRESA EXEMPLO LTDA",
      "endereco": {
        "cep": "01001000",
        "logradouro": "Rua Exemplo",
        "numero": "100",
        "bairro": "Centro",
        "codigoIbge": "3550308"
      }
    },
    "destinatario": {
      "cpfCnpj": "12345678000195",
      "inscricaoEstadual": "9012345678",
      "nome": "CLIENTE EXEMPLO LTDA",
      "endereco": {
        "cep": "80010000",
        "logradouro": "Avenida Exemplo",
        "numero": "200",
        "bairro": "Centro",
        "codigoIbge": "4106902"
      }
    },
    "origem": {
      "codigoIbge": "3550308"
    },
    "destino": {
      "codigoIbge": "4106902"
    },
    "documentosTransportados": [
      {
        "chaveNfe": "35261011222333000181550010000456781000456789"
      }
    ],
    "valores": {
      "valorTotalServico": 850,
      "valorReceber": 850,
      "componentes": [
        {
          "nome": "FRETE PESO",
          "valor": 800
        },
        {
          "nome": "PEDAGIO",
          "valor": 50
        }
      ]
    },
    "carga": {
      "valor": 15800,
      "produtoPredominante": "MATERIAL DE CONSTRUCAO",
      "quantidades": [
        {
          "unidade": "01",
          "tipoMedida": "PESO BRUTO",
          "quantidade": 1250.5
        }
      ]
    },
    "impostos": {
      "cfop": "6353",
      "icms": {
        "cst": "00",
        "baseCalculo": 850,
        "aliquota": 12,
        "valor": 102
      }
    },
    "rodoviario": {
      "rntrc": "12345678"
    },
    "observacoes": {
      "informacoesComplementares": "Entregar em horário comercial."
    }
  }),
});
console.log(resposta.status, await resposta.text());

Python

import os

import requests

resposta = requests.post(
    "https://apifiscal.weesy.com.br/v1/cte",
    headers={"Authorization": f"Bearer {os.environ['WEESY_TOKEN']}"},
    json={
        "idIntegracao": "frete-10432",
        "cnpjEmitente": "21664333000195",
        "ambiente": "homologacao",
        "serie": "1",
        "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
        "tomador": {
            "papel": 0,
        },
        "remetente": {
            "cpfCnpj": "11222333000181",
            "inscricaoEstadual": "111222333444",
            "nome": "EMPRESA EXEMPLO LTDA",
            "endereco": {
                "cep": "01001000",
                "logradouro": "Rua Exemplo",
                "numero": "100",
                "bairro": "Centro",
                "codigoIbge": "3550308",
            },
        },
        "destinatario": {
            "cpfCnpj": "12345678000195",
            "inscricaoEstadual": "9012345678",
            "nome": "CLIENTE EXEMPLO LTDA",
            "endereco": {
                "cep": "80010000",
                "logradouro": "Avenida Exemplo",
                "numero": "200",
                "bairro": "Centro",
                "codigoIbge": "4106902",
            },
        },
        "origem": {
            "codigoIbge": "3550308",
        },
        "destino": {
            "codigoIbge": "4106902",
        },
        "documentosTransportados": [
            {
                "chaveNfe": "35261011222333000181550010000456781000456789",
            },
        ],
        "valores": {
            "valorTotalServico": 850,
            "valorReceber": 850,
            "componentes": [
                {
                    "nome": "FRETE PESO",
                    "valor": 800,
                },
                {
                    "nome": "PEDAGIO",
                    "valor": 50,
                },
            ],
        },
        "carga": {
            "valor": 15800,
            "produtoPredominante": "MATERIAL DE CONSTRUCAO",
            "quantidades": [
                {
                    "unidade": "01",
                    "tipoMedida": "PESO BRUTO",
                    "quantidade": 1250.5,
                },
            ],
        },
        "impostos": {
            "cfop": "6353",
            "icms": {
                "cst": "00",
                "baseCalculo": 850,
                "aliquota": 12,
                "valor": 102,
            },
        },
        "rodoviario": {
            "rntrc": "12345678",
        },
        "observacoes": {
            "informacoesComplementares": "Entregar em horário comercial.",
        },
    },
    timeout=30,
)
print(resposta.status_code, resposta.text)

PHP

<?php

$corpo = <<<'JSON'
{
  "idIntegracao": "frete-10432",
  "cnpjEmitente": "21664333000195",
  "ambiente": "homologacao",
  "serie": "1",
  "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
  "tomador": {
    "papel": 0
  },
  "remetente": {
    "cpfCnpj": "11222333000181",
    "inscricaoEstadual": "111222333444",
    "nome": "EMPRESA EXEMPLO LTDA",
    "endereco": {
      "cep": "01001000",
      "logradouro": "Rua Exemplo",
      "numero": "100",
      "bairro": "Centro",
      "codigoIbge": "3550308"
    }
  },
  "destinatario": {
    "cpfCnpj": "12345678000195",
    "inscricaoEstadual": "9012345678",
    "nome": "CLIENTE EXEMPLO LTDA",
    "endereco": {
      "cep": "80010000",
      "logradouro": "Avenida Exemplo",
      "numero": "200",
      "bairro": "Centro",
      "codigoIbge": "4106902"
    }
  },
  "origem": {
    "codigoIbge": "3550308"
  },
  "destino": {
    "codigoIbge": "4106902"
  },
  "documentosTransportados": [
    {
      "chaveNfe": "35261011222333000181550010000456781000456789"
    }
  ],
  "valores": {
    "valorTotalServico": 850,
    "valorReceber": 850,
    "componentes": [
      {
        "nome": "FRETE PESO",
        "valor": 800
      },
      {
        "nome": "PEDAGIO",
        "valor": 50
      }
    ]
  },
  "carga": {
    "valor": 15800,
    "produtoPredominante": "MATERIAL DE CONSTRUCAO",
    "quantidades": [
      {
        "unidade": "01",
        "tipoMedida": "PESO BRUTO",
        "quantidade": 1250.5
      }
    ]
  },
  "impostos": {
    "cfop": "6353",
    "icms": {
      "cst": "00",
      "baseCalculo": 850,
      "aliquota": 12,
      "valor": 102
    }
  },
  "rodoviario": {
    "rntrc": "12345678"
  },
  "observacoes": {
    "informacoesComplementares": "Entregar em horário comercial."
  }
}
JSON;

$contexto = stream_context_create(["http" => [
    "method" => "POST",
    "header" => implode("\r\n", ["Authorization: Bearer " . getenv("WEESY_TOKEN"), "Content-Type: application/json"]),
    "content" => $corpo,
    "ignore_errors" => true, // lê o corpo também nas respostas de erro
]]);
$resposta = file_get_contents("https://apifiscal.weesy.com.br/v1/cte", false, $contexto);
echo $http_response_header[0], PHP_EOL, $resposta, PHP_EOL;

C#

using System.Net.Http.Headers;
using System.Text;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("WEESY_TOKEN"));

var corpo = """
    {
      "idIntegracao": "frete-10432",
      "cnpjEmitente": "21664333000195",
      "ambiente": "homologacao",
      "serie": "1",
      "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
      "tomador": {
        "papel": 0
      },
      "remetente": {
        "cpfCnpj": "11222333000181",
        "inscricaoEstadual": "111222333444",
        "nome": "EMPRESA EXEMPLO LTDA",
        "endereco": {
          "cep": "01001000",
          "logradouro": "Rua Exemplo",
          "numero": "100",
          "bairro": "Centro",
          "codigoIbge": "3550308"
        }
      },
      "destinatario": {
        "cpfCnpj": "12345678000195",
        "inscricaoEstadual": "9012345678",
        "nome": "CLIENTE EXEMPLO LTDA",
        "endereco": {
          "cep": "80010000",
          "logradouro": "Avenida Exemplo",
          "numero": "200",
          "bairro": "Centro",
          "codigoIbge": "4106902"
        }
      },
      "origem": {
        "codigoIbge": "3550308"
      },
      "destino": {
        "codigoIbge": "4106902"
      },
      "documentosTransportados": [
        {
          "chaveNfe": "35261011222333000181550010000456781000456789"
        }
      ],
      "valores": {
        "valorTotalServico": 850,
        "valorReceber": 850,
        "componentes": [
          {
            "nome": "FRETE PESO",
            "valor": 800
          },
          {
            "nome": "PEDAGIO",
            "valor": 50
          }
        ]
      },
      "carga": {
        "valor": 15800,
        "produtoPredominante": "MATERIAL DE CONSTRUCAO",
        "quantidades": [
          {
            "unidade": "01",
            "tipoMedida": "PESO BRUTO",
            "quantidade": 1250.5
          }
        ]
      },
      "impostos": {
        "cfop": "6353",
        "icms": {
          "cst": "00",
          "baseCalculo": 850,
          "aliquota": 12,
          "valor": 102
        }
      },
      "rodoviario": {
        "rntrc": "12345678"
      },
      "observacoes": {
        "informacoesComplementares": "Entregar em horário comercial."
      }
    }
    """;

using var resposta = await http.PostAsync(
    "https://apifiscal.weesy.com.br/v1/cte",
    new StringContent(corpo, Encoding.UTF8, "application/json"));
Console.WriteLine($"{(int)resposta.StatusCode} {await resposta.Content.ReadAsStringAsync()}");

Corpo da requisição

CampoTipoDescrição
idIntegracao
obrigatório
string

Um código seu para este CT-e (o número do pedido ou do frete, por exemplo). Precisa ser único por empresa: é ele que impede emitir o mesmo CT-e duas vezes.

cnpjEmitente
obrigatório
string

CNPJ da transportadora que emite o CT-e, só dígitos.

ambiente
obrigatório
string

Onde o documento é emitido.

ValorSignificado
producaoDocumento de verdade, com valor fiscal
homologacaoTeste na SEFAZ, sem valor fiscal. Exige certificado; os nomes das partes saem como "CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"

O ambiente simulacao (sem certificado, sem sair da Weesy), que a NFS-e tem, ainda não existe para CT-e e MDF-e.

serie
obrigatório
string

Série do CT-e (de 0 a 999). O número é a Weesy que dá, em sequência.

naturezaOperacao
obrigatório
string

Descrição da operação, em texto.

tipoCteinteger

Tipo do CT-e — código oficial tpCTe. Hoje a Weesy emite só o 0.

CódigoTipo
0Normal
1Complementar (complementa valores de outro CT-e)
2Anulação
3Substituto
ValorSignificado
0Normal
1Complementar
2Anulação
3Substituto
tipoServicointeger

Tipo do serviço — código oficial tpServ.

CódigoTipo
0Normal
1Subcontratação
2Redespacho
3Redespacho intermediário
4Serviço vinculado a multimodal
ValorSignificado
0Normal
1Subcontratação
2Redespacho
3Redespacho intermediário
4Serviço vinculado a multimodal
origem
obrigatório
object

Cidade onde o frete começa.

origem.codigoIbge
obrigatório
string

Código IBGE da cidade (7 dígitos). Para destino fora do Brasil, use 9999999.

destino
obrigatório
object

Cidade onde o frete termina.

destino.codigoIbge
obrigatório
string

Código IBGE da cidade (7 dígitos). Para destino fora do Brasil, use 9999999.

documentosTransportados
obrigatório
array de object

As NF-e da mercadoria. Um CT-e pode levar várias NF-e.

documentosTransportados[].chaveNfe
obrigatório
string

Chave de acesso da NF-e da mercadoria (44 dígitos, está no DANFE e no XML).

documentosTransportados[].pinSuframastring

PIN da SUFRAMA, só quando a mercadoria vai para a Zona Franca de Manaus com benefício.

documentosTransportados[].dataPrevistaEntregastring (date)

Data prevista de entrega desta NF-e.

valores
obrigatório
object
valores.valorTotalServico
obrigatório
number

Valor total do frete.

valores.valorReceber
obrigatório
number

Quanto a transportadora vai receber de fato (normalmente igual ao total).

valores.componentesarray de object

Como o total se divide. Opcional.

valores.componentes[].nome
obrigatório
string

Nome curto do componente.

valores.componentes[].valor
obrigatório
number

Valor em reais, como número com 2 casas decimais (ex. 100.00). Não mande como texto.

carga
obrigatório
object

A mercadoria transportada.

carga.valor
obrigatório
number

Valor da mercadoria — normalmente a soma das NF-e (total da nota).

carga.valorAverbacaonumber

Valor para averbação do seguro, quando diferente do valor da carga.

carga.produtoPredominantestring

O produto que mais pesa na carga. Padrão CARGA.

carga.outrasCaracteristicasstring

Outras características da carga (ex. FRIGORIFICADA).

carga.quantidadesarray de object
carga.quantidades[].unidade
obrigatório
string

Unidade de medida — código oficial cUnid.

CódigoUnidade
00Metro cúbico (M3)
01Quilo (KG)
02Tonelada (TON)
03Unidade
04Litro
05MMBTU
ValorSignificado
00Metro cúbico
01Quilo
02Tonelada
03Unidade
04Litro
05MMBTU
carga.quantidades[].tipoMedida
obrigatório
string

O que foi medido, em texto livre.

carga.quantidades[].quantidade
obrigatório
number

Quantidade, até 4 casas decimais.

impostos
obrigatório
object
impostos.cfop
obrigatório
string

CFOP do frete. Começa com 5 se o frete fica dentro do estado, 6 se vai para outro estado e 7 se vai para o exterior (ex. 5353, 6353).

impostos.icms
obrigatório
object

ICMS do frete. Os valores vêm da sua apuração — a Weesy não calcula imposto.

impostos.icms.cst
obrigatório
string

Código de situação tributária do ICMS no CT-e (CST). Peça ao contador.

CSTSignificado
00Tributação normal
20Com redução de base de cálculo
45Isento, não tributado ou diferido
60Cobrado anteriormente por substituição tributária
90Outros
ValorSignificado
20Com redução de base de cálculo
45Isento, não tributado ou diferido
60Cobrado por substituição tributária
90Outros
00Tributação normal
impostos.icms.simplesNacionalboolean

true quando a empresa é optante do Simples Nacional: o ICMS vai no grupo do Simples (CST 90), sem base nem alíquota. Sem o campo, vale o cst.

impostos.icms.baseCalculonumber

Valor em reais, como número com 2 casas decimais (ex. 100.00). Não mande como texto.

impostos.icms.percentualReducaoBaseCalculonumber

Só com CST 20 ou 90.

impostos.icms.aliquotanumber

Alíquota do ICMS em percentual (12.00 = 12%).

impostos.icms.valornumber

Valor em reais, como número com 2 casas decimais (ex. 100.00). Não mande como texto.

impostos.icms.valorCreditonumber

Crédito outorgado/presumido, quando houver.

impostos.icms.valorDesoneradonumber

Valor em reais, como número com 2 casas decimais (ex. 100.00). Não mande como texto.

impostos.icms.codigoBeneficioFiscalstring

Código do benefício fiscal da UF (cBenef), quando houver.

impostos.ibsCbsobject

Grupo do IBS/CBS da reforma tributária (NT 2026.002). Peça os códigos ao contador.

impostos.ibsCbs.cst
obrigatório
string

CST do IBS/CBS (3 dígitos).

impostos.ibsCbs.cClassTrib
obrigatório
string

Classificação tributária do IBS/CBS (6 dígitos).

impostos.valorTotalTributosnumber

Valor aproximado dos tributos (Lei da Transparência), quando você calcula.

impostos.valorTotalDocumentonumber

Valor total do documento com IBS/CBS (vTotDFe), quando exigido.

impostos.informacoesAdicionaisFiscostring

Texto de interesse do fisco que vai no XML.

rodoviario
obrigatório
object
rodoviario.rntrc
obrigatório
string

Número do RNTRC da transportadora na ANTT (8 dígitos). Está no cadastro da ANTT e no CRLV dos veículos.

observacoesobject
observacoes.informacoesComplementaresstring

Observações livres que aparecem no DACTE.

observacoes.contribuintearray de object

Campos de uso livre do contribuinte (par nome/valor).

observacoes.contribuinte[].campo
obrigatório
string
observacoes.contribuinte[].texto
obrigatório
string
tomador
obrigatório
object

Quem paga o frete. Se for uma das partes já informadas, basta o papel (ex. { "papel": 0 } quando o remetente paga). Se for outra pessoa (papel 4), mande também os dados dela.

tomador.papel
obrigatório
integer

Quem paga o frete (o "tomador do serviço") — código oficial toma do CT-e.

CódigoQuem paga
0O remetente
1O expedidor
2O recebedor
3O destinatário
4Outra pessoa — informe os dados dela no próprio tomador
ValorSignificado
0Remetente
1Expedidor
2Recebedor
3Destinatário
4Outra pessoa (dados no próprio tomador)
tomador.cpfCnpjstring

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

tomador.inscricaoEstadualstring
tomador.nomestring
tomador.emailstring (email)
tomador.telefonestring
tomador.enderecoobject

Endereço para enviar. Não precisa mandar cidade nem UF — tiramos do código IBGE.

tomador.endereco.cep
obrigatório
string

CEP do endereço, sem pontuação.

tomador.endereco.logradouro
obrigatório
string

Tipo e nome do logradouro.

tomador.endereco.numero
obrigatório
string

Número do endereço. Sem número? Mande S/N.

tomador.endereco.complementostring

Complemento do endereço, quando aplicável.

tomador.endereco.bairro
obrigatório
string

Bairro do endereço.

tomador.endereco.codigoIbge
obrigatório
string

Código IBGE do município do endereço.

remetente
obrigatório
object

Quem envia a mercadoria (normalmente o emitente da NF-e).

remetente.cpfCnpj
obrigatório
string

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

remetente.inscricaoEstadualstring

Inscrição estadual, só dígitos, ou ISENTO. Deixe sem enviar quando a pessoa não tem.

remetente.nome
obrigatório
string

Razão social (empresa) ou nome completo (pessoa).

remetente.nomeFantasiastring
remetente.telefonestring

Só dígitos, com DDD.

remetente.emailstring (email)
remetente.inscricaoSuframastring

Inscrição na SUFRAMA, só para destinatário na Zona Franca de Manaus com benefício fiscal.

remetente.endereco
obrigatório
object

Endereço para enviar. Não precisa mandar cidade nem UF — tiramos do código IBGE.

remetente.endereco.cep
obrigatório
string

CEP do endereço, sem pontuação.

remetente.endereco.logradouro
obrigatório
string

Tipo e nome do logradouro.

remetente.endereco.numero
obrigatório
string

Número do endereço. Sem número? Mande S/N.

remetente.endereco.complementostring

Complemento do endereço, quando aplicável.

remetente.endereco.bairro
obrigatório
string

Bairro do endereço.

remetente.endereco.codigoIbge
obrigatório
string

Código IBGE do município do endereço.

destinatario
obrigatório
object

Quem recebe a mercadoria (normalmente o destinatário da NF-e).

destinatario.cpfCnpj
obrigatório
string

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

destinatario.inscricaoEstadualstring

Inscrição estadual, só dígitos, ou ISENTO. Deixe sem enviar quando a pessoa não tem.

destinatario.nome
obrigatório
string

Razão social (empresa) ou nome completo (pessoa).

destinatario.nomeFantasiastring
destinatario.telefonestring

Só dígitos, com DDD.

destinatario.emailstring (email)
destinatario.inscricaoSuframastring

Inscrição na SUFRAMA, só para destinatário na Zona Franca de Manaus com benefício fiscal.

destinatario.endereco
obrigatório
object

Endereço para enviar. Não precisa mandar cidade nem UF — tiramos do código IBGE.

destinatario.endereco.cep
obrigatório
string

CEP do endereço, sem pontuação.

destinatario.endereco.logradouro
obrigatório
string

Tipo e nome do logradouro.

destinatario.endereco.numero
obrigatório
string

Número do endereço. Sem número? Mande S/N.

destinatario.endereco.complementostring

Complemento do endereço, quando aplicável.

destinatario.endereco.bairro
obrigatório
string

Bairro do endereço.

destinatario.endereco.codigoIbge
obrigatório
string

Código IBGE do município do endereço.

expedidorobject

Quem entrega a carga à transportadora, quando não é o remetente. Opcional.

expedidor.cpfCnpj
obrigatório
string

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

expedidor.inscricaoEstadualstring

Inscrição estadual, só dígitos, ou ISENTO. Deixe sem enviar quando a pessoa não tem.

expedidor.nome
obrigatório
string

Razão social (empresa) ou nome completo (pessoa).

expedidor.nomeFantasiastring
expedidor.telefonestring

Só dígitos, com DDD.

expedidor.emailstring (email)
expedidor.inscricaoSuframastring

Inscrição na SUFRAMA, só para destinatário na Zona Franca de Manaus com benefício fiscal.

expedidor.endereco
obrigatório
object

Endereço para enviar. Não precisa mandar cidade nem UF — tiramos do código IBGE.

expedidor.endereco.cep
obrigatório
string

CEP do endereço, sem pontuação.

expedidor.endereco.logradouro
obrigatório
string

Tipo e nome do logradouro.

expedidor.endereco.numero
obrigatório
string

Número do endereço. Sem número? Mande S/N.

expedidor.endereco.complementostring

Complemento do endereço, quando aplicável.

expedidor.endereco.bairro
obrigatório
string

Bairro do endereço.

expedidor.endereco.codigoIbge
obrigatório
string

Código IBGE do município do endereço.

recebedorobject

Quem recebe a carga da transportadora, quando não é o destinatário. Opcional.

recebedor.cpfCnpj
obrigatório
string

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

recebedor.inscricaoEstadualstring

Inscrição estadual, só dígitos, ou ISENTO. Deixe sem enviar quando a pessoa não tem.

recebedor.nome
obrigatório
string

Razão social (empresa) ou nome completo (pessoa).

recebedor.nomeFantasiastring
recebedor.telefonestring

Só dígitos, com DDD.

recebedor.emailstring (email)
recebedor.inscricaoSuframastring

Inscrição na SUFRAMA, só para destinatário na Zona Franca de Manaus com benefício fiscal.

recebedor.endereco
obrigatório
object

Endereço para enviar. Não precisa mandar cidade nem UF — tiramos do código IBGE.

recebedor.endereco.cep
obrigatório
string

CEP do endereço, sem pontuação.

recebedor.endereco.logradouro
obrigatório
string

Tipo e nome do logradouro.

recebedor.endereco.numero
obrigatório
string

Número do endereço. Sem número? Mande S/N.

recebedor.endereco.complementostring

Complemento do endereço, quando aplicável.

recebedor.endereco.bairro
obrigatório
string

Bairro do endereço.

recebedor.endereco.codigoIbge
obrigatório
string

Código IBGE do município do endereço.

Frete de São Paulo para Curitiba, pago pelo remetente

JSON
{
  "idIntegracao": "frete-10432",
  "cnpjEmitente": "21664333000195",
  "ambiente": "homologacao",
  "serie": "1",
  "naturezaOperacao": "PRESTACAO DE SERVICO DE TRANSPORTE",
  "tomador": {
    "papel": 0
  },
  "remetente": {
    "cpfCnpj": "11222333000181",
    "inscricaoEstadual": "111222333444",
    "nome": "EMPRESA EXEMPLO LTDA",
    "endereco": {
      "cep": "01001000",
      "logradouro": "Rua Exemplo",
      "numero": "100",
      "bairro": "Centro",
      "codigoIbge": "3550308"
    }
  },
  "destinatario": {
    "cpfCnpj": "12345678000195",
    "inscricaoEstadual": "9012345678",
    "nome": "CLIENTE EXEMPLO LTDA",
    "endereco": {
      "cep": "80010000",
      "logradouro": "Avenida Exemplo",
      "numero": "200",
      "bairro": "Centro",
      "codigoIbge": "4106902"
    }
  },
  "origem": {
    "codigoIbge": "3550308"
  },
  "destino": {
    "codigoIbge": "4106902"
  },
  "documentosTransportados": [
    {
      "chaveNfe": "35261011222333000181550010000456781000456789"
    }
  ],
  "valores": {
    "valorTotalServico": 850,
    "valorReceber": 850,
    "componentes": [
      {
        "nome": "FRETE PESO",
        "valor": 800
      },
      {
        "nome": "PEDAGIO",
        "valor": 50
      }
    ]
  },
  "carga": {
    "valor": 15800,
    "produtoPredominante": "MATERIAL DE CONSTRUCAO",
    "quantidades": [
      {
        "unidade": "01",
        "tipoMedida": "PESO BRUTO",
        "quantidade": 1250.5
      }
    ]
  },
  "impostos": {
    "cfop": "6353",
    "icms": {
      "cst": "00",
      "baseCalculo": 850,
      "aliquota": 12,
      "valor": 102
    }
  },
  "rodoviario": {
    "rntrc": "12345678"
  },
  "observacoes": {
    "informacoesComplementares": "Entregar em horário comercial."
  }
}

Respostas

Campos da resposta 200

CampoTipoDescrição
id
obrigatório
string

O id que a Weesy dá ao documento. Guarde como texto e não tente interpretar.

idIntegracao
obrigatório
string

O código seu que veio na emissão.

status
obrigatório
string

Situação do CT-e. A lista pode crescer: trate valor desconhecido sem quebrar.

ValorSignificado
recebidoRecebemos o CT-e; ele ainda vai para a SEFAZ
em_processamentoEnviado à SEFAZ; aguardando a resposta
autorizadoA SEFAZ autorizou — o CT-e vale e já tem chave de acesso e protocolo
rejeitadoA SEFAZ recusou por algum dado — veja sefaz.mensagem, corrija e mande de novo com o mesmo idIntegracao
erroFalha técnica (SEFAZ fora do ar, tempo esgotado) — reenvie em POST /cte/{id}/reprocessamento
cancelamento_solicitadoPedido de cancelamento enviado; aguardando a SEFAZ
canceladoA SEFAZ confirmou o cancelamento
cancelamento_rejeitadoA SEFAZ recusou o cancelamento — o CT-e continua autorizado

A carta de correção não muda o status: ela aparece em eventos[].

ambiente
obrigatório
string

Onde o documento é emitido.

ValorSignificado
producaoDocumento de verdade, com valor fiscal
homologacaoTeste na SEFAZ, sem valor fiscal. Exige certificado; os nomes das partes saem como "CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"

O ambiente simulacao (sem certificado, sem sair da Weesy), que a NFS-e tem, ainda não existe para CT-e e MDF-e.

empresa
obrigatório
object
empresa.cnpj
obrigatório
string

CNPJ sem pontos, barra ou traço (14 posições). Já aceita o CNPJ com letras, que começa a valer em 2026.

empresa.razaoSocial
obrigatório
string
empresa.ufstring

Sigla do estado, em maiúsculas.

Valores: AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO.

serie
obrigatório
string
numerostring ou null

Número do CT-e. Vazio até a Weesy montar o XML.

chaveAcessostring ou null
protocolostring ou null

Protocolo de autorização da SEFAZ.

autorizadoEmstring (date-time) ou null
cfopstring
tomadorobject
tomador.papelinteger

Quem paga o frete (o "tomador do serviço") — código oficial toma do CT-e.

CódigoQuem paga
0O remetente
1O expedidor
2O recebedor
3O destinatário
4Outra pessoa — informe os dados dela no próprio tomador
ValorSignificado
0Remetente
1Expedidor
2Recebedor
3Destinatário
4Outra pessoa (dados no próprio tomador)
tomador.cpfCnpjstring

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

tomador.nomestring
remetenteobject
remetente.cpfCnpj
obrigatório
string

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

remetente.nome
obrigatório
string
destinatarioobject
destinatario.cpfCnpj
obrigatório
string

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

destinatario.nome
obrigatório
string
expedidorobject ou null
expedidor.cpfCnpjstring

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

expedidor.nomestring
recebedorobject ou null
recebedor.cpfCnpjstring

CPF (11 números) ou CNPJ (14 posições), sem pontuação.

recebedor.nomestring
origemobject

Identificação do município por código IBGE, nome e UF.

origem.codigoIbge
obrigatório
string

Código IBGE do município.

origem.nomestring

Nome do município.

origem.ufstring

Sigla da unidade federativa.

destinoobject

Identificação do município por código IBGE, nome e UF.

destino.codigoIbge
obrigatório
string

Código IBGE do município.

destino.nomestring

Nome do município.

destino.ufstring

Sigla da unidade federativa.

documentosTransportadosarray de object
documentosTransportados[].chaveNfe
obrigatório
string

Chave de acesso de 44 dígitos — o "RG" do documento fiscal na SEFAZ.

valoresobject
valores.valorTotalServico
obrigatório
number

Valor total do frete.

valores.valorReceber
obrigatório
number

Quanto a transportadora vai receber de fato (normalmente igual ao total).

valores.componentesarray de object

Como o total se divide. Opcional.

valores.componentes[].nome
obrigatório
string

Nome curto do componente.

valores.componentes[].valor
obrigatório
number

Valor em reais, como número com 2 casas decimais (ex. 100.00). Não mande como texto.

cargaobject
carga.valornumber

Valor em reais, como número com 2 casas decimais (ex. 100.00). Não mande como texto.

carga.produtoPredominantestring
sefazobject

Última resposta da SEFAZ, como ela mandou. Útil para entender uma rejeição.

sefaz.cStatinteger ou null

Código de resposta da SEFAZ (ex. 100 = autorizado; 2xx/5xx/6xx = rejeição).

sefaz.mensagemstring ou null

Texto da SEFAZ que explica o código.

sefaz.protocolostring ou null

Número do protocolo da SEFAZ, quando houver.

eventosarray de object

Cancelamentos e cartas de correção, do mais antigo para o mais novo.

eventos[].tipo
obrigatório
string
ValorSignificado
cancelamentoPedido de cancelamento
carta_correcaoCarta de correção
eventos[].sequencia
obrigatório
integer

Número do evento desse tipo no CT-e (a 1ª carta de correção é 1, a 2ª é 2...).

eventos[].situacao
obrigatório
string
ValorSignificado
processandoEnviado à SEFAZ; aguardando a resposta
registradoA SEFAZ aceitou o evento
rejeitadoA SEFAZ recusou — veja sefaz.mensagem
eventos[].justificativastring ou null

Só no cancelamento.

eventos[].correcoesarray de object

Só na carta de correção.

eventos[].correcoes[].grupoAlterado
obrigatório
string

Grupo do XML onde está o campo (ex. compl, ide, rem).

eventos[].correcoes[].campoAlterado
obrigatório
string

Nome da tag a corrigir dentro do grupo (ex. xObs).

eventos[].correcoes[].valorAlterado
obrigatório
string

O valor correto.

eventos[].correcoes[].numeroItemAlteradostring

Só quando o grupo se repete no XML — qual ocorrência corrigir (começa em 1).

eventos[].protocolostring ou null

Protocolo do evento na SEFAZ, quando registrado.

eventos[].sefazobject

Última resposta da SEFAZ, como ela mandou. Útil para entender uma rejeição.

eventos[].sefaz.cStatinteger ou null

Código de resposta da SEFAZ (ex. 100 = autorizado; 2xx/5xx/6xx = rejeição).

eventos[].sefaz.mensagemstring ou null

Texto da SEFAZ que explica o código.

eventos[].sefaz.protocolostring ou null

Número do protocolo da SEFAZ, quando houver.

eventos[].solicitadoEm
obrigatório
string (date-time)

Data e hora no horário de Brasília (ex. 2026-10-26T09:27:34-03:00).

eventos[].registradoEmstring (date-time) ou null
historicoarray de object

Por onde o CT-e passou, em ordem.

historico[].status
obrigatório
string

Situação do CT-e. A lista pode crescer: trate valor desconhecido sem quebrar.

ValorSignificado
recebidoRecebemos o CT-e; ele ainda vai para a SEFAZ
em_processamentoEnviado à SEFAZ; aguardando a resposta
autorizadoA SEFAZ autorizou — o CT-e vale e já tem chave de acesso e protocolo
rejeitadoA SEFAZ recusou por algum dado — veja sefaz.mensagem, corrija e mande de novo com o mesmo idIntegracao
erroFalha técnica (SEFAZ fora do ar, tempo esgotado) — reenvie em POST /cte/{id}/reprocessamento
cancelamento_solicitadoPedido de cancelamento enviado; aguardando a SEFAZ
canceladoA SEFAZ confirmou o cancelamento
cancelamento_rejeitadoA SEFAZ recusou o cancelamento — o CT-e continua autorizado

A carta de correção não muda o status: ela aparece em eventos[].

historico[].em
obrigatório
string (date-time)

Data e hora em UTC, terminada em Z (ex. 2026-10-26T12:27:34Z).

historico[].mensagemstring ou null
links
obrigatório
object
links.self
obrigatório
string
links.xmlstring ou null

Vazio até autorizar.

links.dactestring ou null

Vazio até autorizar.

criadoEm
obrigatório
string (date-time)

Data e hora em UTC, terminada em Z (ex. 2026-10-26T12:27:34Z).

atualizadoEm
obrigatório
string (date-time)

Data e hora em UTC, terminada em Z (ex. 2026-10-26T12:27:34Z).

← Voltar ao início