MDF-e — Manifesto Eletrônico de Documentos Fiscais
O MDF-e é o documento da viagem, não da carga nem do frete. Ele agrupa, num único documento, todos os CT-e ou NF-e que estão dentro daquele veículo naquele deslocamento.
POST /v1/mdfe/emitir
É o único documento que exige ação depois de autorizado
Todos os outros documentos do Conota terminam quando a SEFAZ autoriza. O MDF-e não: quando a viagem acaba, ele precisa ser encerrado.
POST /v1/mdfe/encerrar
Se você emite MDF-e, o encerramento faz parte do fluxo, não é opcional. Desenhe isso desde o começo — descobrir depois que há dezenas de manifestos abertos é caro.
E para saber quais estão pendentes, não precisa manter um controle paralelo:
POST /v1/mdfe/nao-encerrados
Essa rota pergunta à própria SEFAZ quais manifestos daquele CNPJ seguem abertos. É a fonte da verdade, e não consome cota.
tipo_emitente decide o que o manifesto carrega
tipo_emitente | Quem é | O manifesto carrega |
|---|---|---|
1 | prestador de serviço de transporte | CT-e |
2 | transportador de carga própria | NF-e |
3 | prestador com CT-e Globalizado | NF-e |
A biblioteca do autorizador não reclama da combinação errada: ela monta um manifesto sem documento nenhum. O Conota recusa antes, com o motivo — mas vale entender a regra, porque ela não é intuitiva.
Configure na empresa e não pense mais nisso:
PUT /v1/empresas/{cpf_cnpj}/mdfe
Como os documentos entram
Agrupados pelo município onde saem da carga, não numa lista solta:
"descarregamento": [
{
"codigo": "3550308", "municipio": "SAO PAULO",
"cte": [{ "chave": "3126..." }]
},
{
"codigo": "3106200", "municipio": "BELO HORIZONTE",
"cte": [{ "chave": "3126..." }, { "chave": "3126..." }]
}
]
Faz sentido quando se pensa na viagem: o manifesto descreve um percurso com paradas, e cada parada tem a sua carga.
Pré-requisitos
- Certificado A1 ativo — ver Certificado digital.
- Configuração de MDF-e na empresa (
tipo_emitente, RNTRC, série). - Os documentos que vão no manifesto precisam estar autorizados antes.
As rotas
| Rota | O que faz | Consome cota |
|---|---|---|
POST /v1/mdfe/emitir | emite o manifesto | sim |
POST /v1/mdfe/encerrar | encerra quando a viagem acaba | sim |
POST /v1/mdfe/cancelar | cancela — só antes de iniciada a viagem | sim |
POST /v1/mdfe/nao-encerrados | pergunta à SEFAZ quais seguem abertos | não |
GET /v1/mdfe/consultar/{id} | acompanha o job | não |
GET /v1/mdfe/{id}/file/{tipo} | XML, DAMDFE ou log | não |
Próximos passos
- Emitir
- Encerramento — a parte que não existe nos outros documentos
- Referência de campos