Cancelando um CT-e
POST /v1/cte/cancelar
{
"cpf_cnpj": "11222333000181",
"job_id": "6f8dc295-...",
"justificativa": "Servico de transporte nao executado"
}
Informe job_id ou chave. A justificativa tem mínimo de 15 caracteres — exigência
do autorizador. Devolve 202 com um novo job_id, e consome cota de CT-e.
O prazo é mais curto, e depende da viagem
O prazo de cancelamento do CT-e é definido por cada UF e costuma ser bem menor que o da NF-e. E há um limite que não é de tempo: vários estados não permitem cancelar depois de iniciada a prestação do serviço — ou seja, depois que o veículo saiu.
Quem recusa é a SEFAZ, não a API. Confirme a regra da UF do emitente.
Anulação não existe mais
Havia o CT-e de Anulação (tpCTe = 2). No leiaute 4.00 ele foi removido: o valor
saiu da lista permitida e o grupo infCteAnu saiu do schema oficial.
O Conota recusa tipo_cte = 2 com o motivo, em vez de deixar a SEFAZ devolver um código
que ninguém entende.
O caminho de correção passou a ser a substituição:
"identificacao": { "tipo_cte": "3" },
"substituicao": { "chave": "3126...", "altera_tomador": "0" }
altera_tomador só é necessário quando a substituição também troca o tomador; sem ele,
o autorizador entende que o tomador permanece.
Quando o problema é do lado de quem contratou o frete, existe ainda o evento próprio de prestação em desacordo, registrado pelo tomador — que é outro fluxo, e não passa por esta rota.
Só se cancela o que foi autorizado
| Situação | Cancelamento |
|---|---|
| autorizado | possível, dentro do prazo da UF |
| rejeitado | não existe o que cancelar |
| já cancelado | nada a fazer |
Depois do cancelamento
O XML do evento fica disponível como xml_cancelamento — ver
Arquivos. O xml original continua lá.