Weesy Docs

Cancelamento e carta de correção do CT-e

Enviar carta de correção

POST https://apifiscal.weesy.com.br/v1/cte/{id}/carta-correcao

Abrir na referência interativa

Corrige um dado de um CT-e autorizado sem cancelar, como um endereço ou uma observação. Regras da SEFAZ:

A resposta traz o evento. Em geral a SEFAZ responde na hora (situacao registrado ou rejeitado); se demorar, o resultado chega pelo webhook cte.carta_correcao_registrada ou em GET /cte/{id}/eventos.

Parâmetros

NomeOndeTipoDescrição
id
obrigatório
caminhostring

Id do CT-e, devolvido no campo id quando você emitiu.

Exemplo de chamada

cURL

curl --request POST \
  --url "https://apifiscal.weesy.com.br/v1/cte/6ade6278e8340a492a46b564/carta-correcao" \
  --header "Authorization: Bearer $WEESY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
  "correcoes": [
    {
      "grupoAlterado": "compl",
      "campoAlterado": "xObs",
      "valorAlterado": "Entrega agendada para o período da manhã."
    }
  ]
}'

Node.js

const resposta = await fetch("https://apifiscal.weesy.com.br/v1/cte/6ade6278e8340a492a46b564/carta-correcao", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.WEESY_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "correcoes": [
      {
        "grupoAlterado": "compl",
        "campoAlterado": "xObs",
        "valorAlterado": "Entrega agendada para o período da manhã."
      }
    ]
  }),
});
console.log(resposta.status, await resposta.text());

Python

import os

import requests

resposta = requests.post(
    "https://apifiscal.weesy.com.br/v1/cte/6ade6278e8340a492a46b564/carta-correcao",
    headers={"Authorization": f"Bearer {os.environ['WEESY_TOKEN']}"},
    json={
        "correcoes": [
            {
                "grupoAlterado": "compl",
                "campoAlterado": "xObs",
                "valorAlterado": "Entrega agendada para o período da manhã.",
            },
        ],
    },
    timeout=30,
)
print(resposta.status_code, resposta.text)

PHP

<?php

$corpo = <<<'JSON'
{
  "correcoes": [
    {
      "grupoAlterado": "compl",
      "campoAlterado": "xObs",
      "valorAlterado": "Entrega agendada para o período da manhã."
    }
  ]
}
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/6ade6278e8340a492a46b564/carta-correcao", 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 = """
    {
      "correcoes": [
        {
          "grupoAlterado": "compl",
          "campoAlterado": "xObs",
          "valorAlterado": "Entrega agendada para o período da manhã."
        }
      ]
    }
    """;

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

Corpo da requisição

CampoTipoDescrição
correcoes
obrigatório
array de object

Todas as correções desta carta. A carta nova substitui a anterior.

correcoes[].grupoAlterado
obrigatório
string

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

correcoes[].campoAlterado
obrigatório
string

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

correcoes[].valorAlterado
obrigatório
string

O valor correto.

correcoes[].numeroItemAlteradostring

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

Exemplo

JSON
{
  "correcoes": [
    {
      "grupoAlterado": "compl",
      "campoAlterado": "xObs",
      "valorAlterado": "Entrega agendada para o período da manhã."
    }
  ]
}

Respostas

Campos da resposta 202

CampoTipoDescrição
tipo
obrigatório
string
ValorSignificado
cancelamentoPedido de cancelamento
carta_correcaoCarta de correção
sequencia
obrigatório
integer

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

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

Só no cancelamento.

correcoesarray de object

Só na carta de correção.

correcoes[].grupoAlterado
obrigatório
string

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

correcoes[].campoAlterado
obrigatório
string

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

correcoes[].valorAlterado
obrigatório
string

O valor correto.

correcoes[].numeroItemAlteradostring

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

protocolostring ou null

Protocolo do evento na SEFAZ, quando registrado.

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.

solicitadoEm
obrigatório
string (date-time)

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

registradoEmstring (date-time) ou null
← Voltar ao início