Encerrar e cancelar MDF-e
Encerrar MDF-e
POST https://apifiscal.weesy.com.br/v1/mdfe/{id}/encerramento
Abrir na referência interativaAvisa a SEFAZ que a viagem terminou. Faça isso sempre no fim da viagem: MDF-e aberto impede emitir o próximo MDF-e do mesmo veículo (a SEFAZ rejeita com os códigos 611, 662, 462 ou 686).
Só MDF-e autorizado pode ser encerrado. Se a SEFAZ aceitar, o MDF-e volta encerrado; 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/encerramento" \
--header "Authorization: Bearer $WEESY_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"codigoIbge": "4106902"
}'Node.js
const resposta = await fetch("https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/encerramento", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.WEESY_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"codigoIbge": "4106902"
}),
});
console.log(resposta.status, await resposta.text());Python
import os
import requests
resposta = requests.post(
"https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/encerramento",
headers={"Authorization": f"Bearer {os.environ['WEESY_TOKEN']}"},
json={
"codigoIbge": "4106902",
},
timeout=30,
)
print(resposta.status_code, resposta.text)PHP
<?php
$corpo = <<<'JSON'
{
"codigoIbge": "4106902"
}
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/encerramento", 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 = """
{
"codigoIbge": "4106902"
}
""";
using var resposta = await http.PostAsync(
"https://apifiscal.weesy.com.br/v1/mdfe/6ade6278e8340a492a46b564/encerramento",
new StringContent(corpo, Encoding.UTF8, "application/json"));
Console.WriteLine($"{(int)resposta.StatusCode} {await resposta.Content.ReadAsStringAsync()}");Corpo da requisição
| Campo | Tipo | Descrição |
|---|---|---|
| codigoIbge obrigatório | string | Código IBGE da cidade onde a viagem terminou (7 dígitos). A UF sai do código. |
| data | string (date) | Dia em que a viagem terminou. Padrão = hoje. |
Exemplo
{
"codigoIbge": "4106902"
}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 — o MDF-e não está autorizado (ainda não foi, ou já foi cancelado ou encerrado). (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 |