Ferramentas do CT-e
Montar CT-e a partir da NF-e
POST https://apifiscal.weesy.com.br/v1/cte/previa-nfe
Abrir na referência interativaLê o XML de uma NF-e (a nota da mercadoria que vai ser transportada) e devolve os dados que já servem para o CT-e: remetente, destinatário, chave da NF-e e valor da carga. Também diz quais campos ainda faltam para emitir. Nada é emitido nem gravado.
Mande o XML (xmlNfeBase64) ou só a chave (chaveNfe). Pela chave, a SEFAZ só entrega o XML a quem tem direito a ele — se não entregar, responde 404 e você manda o XML.
Exemplo de chamada
cURL
curl --request POST \
--url "https://apifiscal.weesy.com.br/v1/cte/previa-nfe" \
--header "Authorization: Bearer $WEESY_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"cnpjEmitente": "21664333000195",
"chaveNfe": "35261011222333000181550010000456781000456789"
}'Node.js
const resposta = await fetch("https://apifiscal.weesy.com.br/v1/cte/previa-nfe", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WEESY_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"cnpjEmitente": "21664333000195",
"chaveNfe": "35261011222333000181550010000456781000456789"
}),
});
console.log(resposta.status, await resposta.text());Python
import os
import requests
resposta = requests.post(
"https://apifiscal.weesy.com.br/v1/cte/previa-nfe",
headers={"Authorization": f"Bearer {os.environ['WEESY_TOKEN']}"},
json={
"cnpjEmitente": "21664333000195",
"chaveNfe": "35261011222333000181550010000456781000456789",
},
timeout=30,
)
print(resposta.status_code, resposta.text)PHP
<?php
$corpo = <<<'JSON'
{
"cnpjEmitente": "21664333000195",
"chaveNfe": "35261011222333000181550010000456781000456789"
}
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/previa-nfe", 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 = """
{
"cnpjEmitente": "21664333000195",
"chaveNfe": "35261011222333000181550010000456781000456789"
}
""";
using var resposta = await http.PostAsync(
"https://apifiscal.weesy.com.br/v1/cte/previa-nfe",
new StringContent(corpo, Encoding.UTF8, "application/json"));
Console.WriteLine($"{(int)resposta.StatusCode} {await resposta.Content.ReadAsStringAsync()}");Corpo da requisição
| Campo | Tipo | Descrição |
|---|---|---|
| cnpjEmitente obrigatório | string | CNPJ da transportadora que vai emitir o CT-e. |
| xmlNfeBase64 | string | O arquivo XML da NF-e (modelo 55) em Base64. Até 5 MB. |
| chaveNfe | string | Chave de acesso da NF-e, quando você não tem o XML. |
Exemplo
{
"cnpjEmitente": "21664333000195",
"chaveNfe": "35261011222333000181550010000456781000456789"
}Respostas
- 200: Dados extraídos da NF-e.
- 400: validacao — XML inválido, não é NF-e modelo 55, Base64 inválido ou maior que 5 MB. (formato de erro)
- 401: Token ausente, errado ou revogado (credencialinvalida). Confira o cabeçalho Authorization. (formato de erro)
- 404: empresanaoencontrada, ou nfexmlindisponivel — a SEFAZ não entregou o XML dessa chave. Envie o XML em xmlNfeBase64. (formato de erro)
Campos da resposta 200
| Campo | Tipo | Descrição |
|---|---|---|
| remetente obrigatório | object | Emitente da NF-e — vira o remetente do CT-e. |
| remetente. obrigatório | string | CPF (11 números) ou CNPJ (14 posições), sem pontuação. |
| remetente. obrigatório | string | |
| destinatario obrigatório | object | Destinatário da NF-e — vira o destinatário do CT-e. |
| destinatario. obrigatório | string | CPF (11 números) ou CNPJ (14 posições), sem pontuação. |
| destinatario. obrigatório | string | |
| documentosTransportados obrigatório | array de object | |
| documentosTransportados[] obrigatório | string | Chave de acesso de 44 dígitos — o "RG" do documento fiscal na SEFAZ. |
| valorCarga obrigatório | number | Valor total da NF-e — use em |
| camposPendentes obrigatório | array de string | Campos do CT-e que a NF-e não traz e você precisa preencher. |
Exemplo de resposta 200
{
"remetente": {
"cpfCnpj": "11222333000181",
"nome": "EMPRESA EXEMPLO LTDA"
},
"destinatario": {
"cpfCnpj": "12345678000195",
"nome": "CLIENTE EXEMPLO LTDA"
},
"documentosTransportados": [
{
"chaveNfe": "35261011222333000181550010000456781000456789"
}
],
"valorCarga": 15800,
"camposPendentes": [
"tomador",
"valores.valorTotalServico",
"valores.valorReceber",
"impostos.cfop",
"impostos.icms",
"rodoviario.rntrc"
]
}