Weesy Docs

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 interativa

Lê 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

CampoTipoDescrição
cnpjEmitente
obrigatório
string

CNPJ da transportadora que vai emitir o CT-e.

xmlNfeBase64string

O arquivo XML da NF-e (modelo 55) em Base64. Até 5 MB.

chaveNfestring

Chave de acesso da NF-e, quando você não tem o XML.

Exemplo

JSON
{
  "cnpjEmitente": "21664333000195",
  "chaveNfe": "35261011222333000181550010000456781000456789"
}

Respostas

Campos da resposta 200

CampoTipoDescrição
remetente
obrigatório
object

Emitente da NF-e — vira o remetente do CT-e.

remetente.cpfCnpj
obrigatório
string

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

remetente.nome
obrigatório
string
destinatario
obrigatório
object

Destinatário da NF-e — vira o destinatário do CT-e.

destinatario.cpfCnpj
obrigatório
string

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

destinatario.nome
obrigatório
string
documentosTransportados
obrigatório
array de object
documentosTransportados[].chaveNfe
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 carga.valor.

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

JSON
{
  "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"
  ]
}
← Voltar ao início