Encerrar e cancelar MDF-e
Cancelar MDF-e
POST https://apifiscal.weesy.com.br/v1/mdfe/{id}/cancelamento
Abrir na referência interativaPede à SEFAZ o cancelamento de um MDF-e autorizado, quando a viagem não aconteceu. Regras da SEFAZ:
- só é aceito em até 24 horas depois da autorização;
- MDF-e já encerrado não pode ser cancelado;
- a justificativa precisa ter de 15 a 255 caracteres.
Se a viagem aconteceu, o certo é encerrar, não cancelar. Se a SEFAZ aceitar, o MDF-e volta cancelado; se recusar, continua autorizado e o motivo está em sefaz.mensagem.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
| id obrigatório | caminho | string | Id do MDF-e, devolvido no campo |
Exemplo de chamada
cURL
curl --request POST \
--url "https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/cancelamento" \
--header "Authorization: Bearer $WEESY_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"justificativa": "Viagem cancelada pelo cliente antes da saída."
}'Node.js
const resposta = await fetch("https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/cancelamento", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WEESY_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"justificativa": "Viagem cancelada pelo cliente antes da saída."
}),
});
console.log(resposta.status, await resposta.text());Python
import os
import requests
resposta = requests.post(
"https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/cancelamento",
headers={"Authorization": f"Bearer {os.environ['WEESY_TOKEN']}"},
json={
"justificativa": "Viagem cancelada pelo cliente antes da saída.",
},
timeout=30,
)
print(resposta.status_code, resposta.text)PHP
<?php
$corpo = <<<'JSON'
{
"justificativa": "Viagem cancelada pelo cliente antes da saída."
}
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/mdfe/6ade6278e8340a492a46b564/cancelamento", 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 = """
{
"justificativa": "Viagem cancelada pelo cliente antes da saída."
}
""";
using var resposta = await http.PostAsync(
"https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/cancelamento",
new StringContent(corpo, Encoding.UTF8, "application/json"));
Console.WriteLine($"{(int)resposta.StatusCode} {await resposta.Content.ReadAsStringAsync()}");Corpo da requisição
| Campo | Tipo | Descrição |
|---|---|---|
| justificativa obrigatório | string | Por que o MDF-e está sendo cancelado, em texto livre (vai para a SEFAZ). |
Exemplo
{
"justificativa": "Viagem cancelada pelo cliente antes da saída."
}Respostas
- 202: Pedido recebido. Veja status e sefaz no MDF-e.
- 400: Algum dado está errado ou faltando. A lista erros diz qual campo e o que corrigir (code = validacao). (formato de erro)
- 401: Token ausente, errado ou revogado (credencialinvalida). Confira o cabeçalho Authorization. (formato de erro)
- 404: mdfenaoencontrado — não existe, ou é de outra empresa. (formato de erro)
- 409: mdfestatusinvalido (não está autorizado, ou já foi encerrado ou cancelado) ou mdfeprazocancelamentoexpirado (passou de 24 horas). (formato de erro)
- 503: A prefeitura, o sistema nacional ou a SEFAZ estão fora do ar (autorizadorindisponivel). Tente de novo em alguns minutos. (formato de erro)
Campos da resposta 202
| Campo | Tipo | Descrição | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| id obrigatório | string | O | ||||||||||||||||
| idIntegracao obrigatório | string | O código seu que veio na emissão. | ||||||||||||||||
| status obrigatório | string | Situação do MDF-e. A lista pode crescer: trate valor desconhecido sem quebrar.
| ||||||||||||||||
| ambiente obrigatório | string | Onde o documento é emitido.
O ambiente | ||||||||||||||||
| empresa obrigatório | object | |||||||||||||||||
| empresa. 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. obrigatório | string | |||||||||||||||||
| empresa. | string | Sigla do estado, em maiúsculas. Valores: | ||||||||||||||||
| serie obrigatório | string | |||||||||||||||||
| numero | string ou null | Número do MDF-e. Vazio até a Weesy montar o XML. | ||||||||||||||||
| chaveAcesso | string ou null | |||||||||||||||||
| protocolo | string ou null | Protocolo de autorização da SEFAZ. | ||||||||||||||||
| autorizadoEm | string (date-time) ou null | |||||||||||||||||
| ufInicio | string | Sigla do estado, em maiúsculas. Valores: | ||||||||||||||||
| ufFim | string | Sigla do estado, em maiúsculas. Valores: | ||||||||||||||||
| percurso | array de string | |||||||||||||||||
| carregamento | array de object | |||||||||||||||||
| carregamento[] obrigatório | string | Código IBGE do município. | ||||||||||||||||
| carregamento[] | string | Nome do município. | ||||||||||||||||
| carregamento[] | string | Sigla da unidade federativa. | ||||||||||||||||
| descarregamento | array de object | |||||||||||||||||
| descarregamento[] obrigatório | string | Código IBGE do município. | ||||||||||||||||
| descarregamento[] | string | Nome do município. | ||||||||||||||||
| descarregamento[] | string | Sigla da unidade federativa. | ||||||||||||||||
| descarregamento[] | array de string | |||||||||||||||||
| veiculo | object | |||||||||||||||||
| veiculo. | string | Placa do veículo, sem traço, em maiúsculas (formato antigo ou Mercosul). | ||||||||||||||||
| veiculo. | string | Sigla do estado, em maiúsculas. Valores: | ||||||||||||||||
| carga | object | |||||||||||||||||
| carga. | number | Valor em reais, como número com 2 casas decimais (ex. | ||||||||||||||||
| carga. | integer | Quantos CT-e o MDF-e leva (contado das chaves em | ||||||||||||||||
| sefaz | object | Última resposta da SEFAZ, como ela mandou. Útil para entender uma rejeição. | ||||||||||||||||
| sefaz. | integer ou null | Código de resposta da SEFAZ (ex. | ||||||||||||||||
| sefaz. | string ou null | Texto da SEFAZ que explica o código. | ||||||||||||||||
| sefaz. | string ou null | Número do protocolo da SEFAZ, quando houver. | ||||||||||||||||
| encerramento | null ou object | Preenchido quando o MDF-e é encerrado. | ||||||||||||||||
| encerramento. | object | Identificação do município por código IBGE, nome e UF. | ||||||||||||||||
| encerramento. obrigatório | string | Código IBGE do município. | ||||||||||||||||
| encerramento. | string | Nome do município. | ||||||||||||||||
| encerramento. | string | Sigla da unidade federativa. | ||||||||||||||||
| encerramento. | string (date-time) | Data e hora no horário de Brasília (ex. | ||||||||||||||||
| encerramento. | string ou null | |||||||||||||||||
| cancelamento | null ou object | Preenchido quando o MDF-e é cancelado. | ||||||||||||||||
| cancelamento. | string | |||||||||||||||||
| cancelamento. | string (date-time) | Data e hora no horário de Brasília (ex. | ||||||||||||||||
| cancelamento. | string ou null | |||||||||||||||||
| historico | array de object | Por onde o MDF-e passou, em ordem. | ||||||||||||||||
| historico[] obrigatório | string | Situação do MDF-e. A lista pode crescer: trate valor desconhecido sem quebrar.
| ||||||||||||||||
| historico[] obrigatório | string (date-time) | Data e hora em UTC, terminada em | ||||||||||||||||
| historico[] | string ou null | |||||||||||||||||
| links obrigatório | object | |||||||||||||||||
| links. obrigatório | string | |||||||||||||||||
| links. | string ou null | Vazio até autorizar. | ||||||||||||||||
| links. | string ou null | Vazio até autorizar. | ||||||||||||||||
| criadoEm obrigatório | string (date-time) | Data e hora em UTC, terminada em | ||||||||||||||||
| atualizadoEm obrigatório | string (date-time) | Data e hora em UTC, terminada em |